分布式注册中心-Nacos

分布式注册中心是分布式系统中的一种关键组件,用于管理和维护各个分布式服务实例的注册、发现和状态信息。它提供了一种集中化的机制,使得不同的服务能够在一个共享的地方注册自己的信息,并能够动态地发现其他服务,从而实现分布式系统中的服务治理和通信。

在分布式架构中,服务注册与服务发现是两个关键的概念,用于管理和维护系统中各个分布式组件之间的通信。

服务注册: 服务注册是指将服务的网络地址和元数据注册到一个中心化的服务注册表中。在分布式系统中,各个服务提供者将自己的服务注册到这个注册表,使得其他组件或服务能够找到并与其通信。这种注册可以包括服务的名称、版本、IP地址、端口号等信息,以便其他服务能够准确地定位和连接到这些服务。

服务发现: 服务发现是指在分布式系统中,一个服务或组件能够动态地找到和识别其他服务的过程。通过服务发现,服务消费者能够查询服务注册表,找到所需的服务的网络地址和其他信息,从而能够与其建立通信和交互。服务发现可以帮助系统自动适应组件的变化,如新增、删除或替换服务,而不需要手动更新配置。

Zookeeper: Zookeeper是一个分布式的协调服务,可以用于服务注册与发现。它提供了一个层次化的命名空间结构,允许服务注册和发现,并能够处理分布式系统中的一致性问题。Zookeeper适用于一些需要高一致性和稳定性的场景

Eureka: Eureka是Netflix开源的一个服务发现组件,特别适用于基于微服务架构的系统。它允许服务注册和发现,并提供了一些高级的负载均衡和故障转移机制。Eureka一般用于内部服务发现,不太适合复杂的多数据中心场景。

Nacos: Nacos是阿里巴巴开源的一个综合性服务发现和配置管理平台,支持服务注册、配置管理、服务发现和动态配置更新等功能。它能够满足多种分布式系统的需求,包括微服务和云原生应用。

Nacos 实现简单的服务注册和服务发现

启动分布式注册中心

官方文档:什么是 Nacos

启动nacos

1
2
3
# 前往解压的nacos文件夹内
cd bin
./startup.sh -m standalone

启动成功

image-20230816103800624

访问地址:http://localhost:8848/nacos/#/login

image-20230816103746727

账号密码:nacos/nacos

注册服务

项目根目录pom.xml添加springcloud,springcloud alibaba依赖管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<dependencyManagement>
<dependencies>
<!-- springCloud -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- alibaba nacos-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.5.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

Module项目pom.xml添加nacos discovery依赖

1
2
3
4
5
<!-- nacos客户端依赖包 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

application.yaml添加nacos相关配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
spring:
application:
name: user-service
cloud:
nacos:
# nacos服务地址
server-addr: localhost:8848
discovery:
# cluster-name 属性来指定集群名称,从而更好地管理和区分不同的服务发现集群。
cluster-name: HZ
# 命名空间:命名空间可以用来隔离不同的应用或团队的配置。不同的命名空间可以在不同的 Nacos 实例中。
namespace: 7a5618ff-a674-46dd-99a7-33da5f094f7f # 命名空间ID
# 是否是临时实例
ephemeral: true

启动项目

image-20230816111101326

注册到 Nacos 后,您的微服务将被自动注册到 Nacos 服务注册中心,并且其他微服务可以使用 Nacos 进行服务发现。这使得微服务可以轻松地找到其他服务的实例,并进行负载均衡,从而实现更高的可用性和性能。Nacos 支持动态注册和注销微服务,这意味着您可以在运行时动态地添加、更新或删除服务实例,而无需重启应用。这使得服务的管理和维护更加灵活和高效。


分布式注册中心-Nacos
https://cason.work/2023/08/16/分布式注册中心-Nacos/
作者
Cason Mo
发布于
2023年8月16日
许可协议