Spring Cloud Alibaba - 服务注册与发现(Nacos)

news/2024/12/13 2:42:24/

✅作者简介:热爱Java后端开发的一名学习者,大家可以跟我一起讨论各种问题喔。
🍎个人主页:Hhzzy99
🍊个人信条:坚持就是胜利!
💞当前专栏:微服务
🥭本文内容:Spring Cloud Alibaba - 服务注册与发现(Nacos)。


文章目录

  • Spring Cloud Alibaba - 服务注册与发现(Nacos)
    • 引言
    • Nacos 简介
    • Nacos 服务注册与发现
      • Nacos安装
      • 创建Spring Boot微服务
    • 结论


Spring Cloud Alibaba - 服务注册与发现(Nacos)

引言

在微服务架构中,服务注册与发现是其中的重要一环。服务注册与发现可以帮助我们管理微服务,提升微服务的可用性和可维护性。Nacos(Dynamic Naming and Configuration Service)是阿里巴巴开源的一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。本文将详细介绍如何使用Nacos进行服务注册与发现。

Nacos 简介

Nacos是阿里巴巴开源的一个服务注册、发现和配置管理的中间件。Nacos提供了服务注册中心和配置中心的功能,可以帮助我们轻松管理微服务的注册、发现,并动态地配置和更新服务的配置信息。Nacos支持DNS-based Service Discovery (DNS-SD),支持Docker、Kubernetes等主流容器服务调度平台,更好的支持云原生应用的开发和部署。

Nacos 服务注册与发现

在微服务架构中,每个微服务都会注册到服务注册中心,服务注册中心负责管理所有的服务信息。当一个微服务需要调用另一个微服务时,可以通过服务注册中心来查找并获取到所需的服务。

Nacos安装

首先,我们需要下载并安装Nacos。我们可以从Nacos的GitHub页面下载最新版本的Nacos,然后解压缩并进入Nacos的目录。在Linux环境下,我们可以使用以下命令来启动Nacos:

sh startup.sh -m standalone

这里我们以单机模式启动Nacos,适合用于开发和测试环境。

创建Spring Boot微服务

接下来,我们将创建两个Spring Boot微服务,并将它们注册到Nacos中。我们将创建一个服务提供者和一个服务消费者。

首先,我们创建一个新的Spring Boot项目,然后添加以下依赖到pom.xml文件中:

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency>
</dependencies>

然后,我们在application.properties文件中添加以下配置:

spring.application.name=service-provider
server.port=8080
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

这里我们设置了微服务的名称为service-provider,服务运行的端口为8080,Nacos服务注册中心的地址为127.0.0.1:8848

然后,我们创建一个REST API来提供服务:

@RestController
public class HelloController {@GetMapping("/hello")public String hello(@RequestParam String name) {return "Hello, " + name;}
}

最后,我们在主类中添加@EnableDiscoveryClient注解,表示这是一个Nacos客户端,也就是一个微服务:

@SpringBootApplication
@EnableDiscoveryClient
public class ServiceProviderApplication {public static void main(String[] args) {SpringApplication.run(ServiceProviderApplication.class, args);}
}

这样,我们就创建了一个服务提供者,并将它注册到了Nacos中。

同样的方式,我们可以创建一个服务消费者。只是在服务消费者中,我们需要使用@LoadBalanced注解来开启负载均衡,并使用RestTemplate来调用服务提供者的API:

@SpringBootApplication
@EnableDiscoveryClient
public class ServiceConsumerApplication {public static void main(String[] args) {SpringApplication.run(ServiceConsumerApplication.class, args);}@LoadBalanced@Beanpublic RestTemplate restTemplate() {return new RestTemplate();}
}@RestController
public class HelloController {@Autowiredprivate RestTemplate restTemplate;@GetMapping("/hello")public String hello(@RequestParam String name) {return restTemplate.getForObject("http://service-provider/hello?name=" + name, String.class);}
}

这样,我们就创建了一个服务消费者,并将它注册到了Nacos中。

现在,当我们启动这两个微服务时,我们就可以在Nacos的控制台中看到这两个微服务。

结论

本文详细介绍了如何使用Nacos进行服务注册与发现。我们首先介绍了Nacos的概念和特性,然后通过实例详细介绍了如何安装Nacos,以及如何创建Spring Boot微服务并将它们注册到Nacos中。通过阅读本文,你应该已经了解了如何使用Nacos进行服务注册与发现,以及Nacos在微服务架构中的重要性。在后续的文章中,我们将进一步探讨Nacos的其他功能,如配置管理等。希望本文能对你有所帮助!


http://www.ppmy.cn/news/109827.html

相关文章

Maven jar 包下载失败问题处理【配置Maven国内源】

前言 很多同学在Maven里下载一些依赖的时候&#xff0c;即下载【jar 包】的时候总是会出现一些问题&#xff0c;这里专门做一个教程讲解一下 其实这和你的Maven配置是有关系的&#xff0c;因为Maven是一个国际站点&#xff0c;它的仓库是在国外的&#xff0c;所以我们有时候在下…

微服务架构之服务治理

单体应用改造为微服务架构后&#xff0c;服务调用由本地调用变成远程调用&#xff0c;服务消费者A需要通过注册中心去查询服务提供者B的地址&#xff0c;然后发起调用&#xff0c;这个看似简单的过程就可能会遇到下面几种情况&#xff0c;比如&#xff1a; 注册中心宕机&#x…

linux(SystemV标准)进程间通信1

目录&#xff1a; 1.前言 2.共享内存 3.认识接口 ------------------------------------------------------------------------------------------------------------------------- 1.前言 我们之前学的什么匿名管道、命名管道通信都是基于文件的通信方式&#xff01;&#xf…

2023年数学建模:决策树:基于树结构的分类和回归方法

2023年9月数学建模国赛期间提供ABCDE题思路加Matlab代码,专栏链接(赛前一个月恢复源码199,欢迎大家订阅):http://t.csdn.cn/Um9Zd 目录 1. 决策树原理 1.1 信息增益 1.2 增益率 1.3 基尼指数 2. 决策树剪枝 2.1 预剪枝 2.2 后剪枝 3. MATLAB实现 3.1 实现CART算法 3…

讯飞星火认知大模型与ChatGPT的对比分析

引言&#xff1a; 人工智能是当今科技领域的热门话题&#xff0c;自然语言处理是人工智能的重要分支。自然语言处理的目标是让计算机能够理解和生成自然语言&#xff0c;实现人机交互和智能服务。近年来&#xff0c;随着深度学习的发展&#xff0c;自然语言处理领域出现了许多创…

leetcode 976. 三角形的最大周长

题目描述解题思路执行结果 leetcode 976. 三角形的最大周长 题目描述 三角形的最大周长 给定由一些正数&#xff08;代表长度&#xff09;组成的数组 nums &#xff0c;返回 由其中三个长度组成的、面积不为零的三角形的最大周长 。如果不能形成任何面积不为零的三角形&#xf…

ARC学习(1)基本编程模型认识

笔者有幸接触了arc处理器&#xff0c;今天就来简单了解一下arc的编程模型 1、ARC基本认识 ARC IP是synopsys 新思公司开发的一个系列ARC IP核&#xff0c;其是一家电子设计自动化&#xff08;EDA&#xff09;解决方案提供商。其主页地址在这里&#xff01;业务主要如下&#x…

Go-channel的妙用

系列文章目录 异常处理(defer recover panic) Go-channel的妙用 文章目录 系列文章目录前言一、channel 通过通讯共享内存二、使用场景三、例子1.包 总结 前言 Go语言中&#xff0c;各个协程之间的通信&#xff0c;Go 语言协程之间通信的理念通过通信去共享内存。就是采用cha…