SpringCloud Alibaba——服务注册与发现(Nacos)

SpringCloud Alibaba——服务注册与发现(Nacos)

閱讀本文約花費: 5 (分鐘)

一、Nacos简介

Nacos致力于帮助您发现、配置和管理微服务。Nacos提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos帮助您更敏捷和容易地构建、交付和管理微服务平台。Nacos是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

安装Nacos

下载地址(版本:0.7.0)

Linux:sh startup.sh?

Windows:startup.cmd?

访问:http://127.0.0.1:8848/nacos,可以进入Nacos的服务管理页面:

二、SpringCloud整合Nacos

完成了Nacos服务的安装和启动之后,下面就可以编写两个应用(服务提供者与服务消费者)来验证服务的注册与发现了。

spring cloud的版本以及spring cloud alibaba的版本,由于spring cloud alibaba还未纳入spring cloud的主版本管理中,所以需要自己加入,添加依赖文件(父工程):

<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Finchley.RELEASE</spring-cloud.version>
<spring-cloud-alibaba-dependencies.version>0.2.1.RELEASE</spring-cloud-alibaba-dependencies.version>
<lombok.version>1.16.18</lombok.version>
</properties>

<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba-dependencies.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>

<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</dependency>
</dependencies>
</dependencyManagement>

</project>

1、服务提供者(nacos-server)

加入Nacos的服务注册与发现模块:spring-cloud-starter-alibaba-nacos-discovery。

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

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

<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>

创建启动类,并实现一个HTTP接口:

@EnableDiscoveryClient开启Spring Cloud的服务注册与发现,由于引入了spring-cloud-starter-alibaba-nacos-discovery模块,所以Spring Cloud Common中定义的那些与服务治理相关的接口将使用Nacos的实现。

配置服务名称和Nacos地址:

server:
port: 8081

spring:
application:
name: nacos-server
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848

启动应用:

查看控制的日志,已经注册成功:

11:19:26.014 INFO 2620 — [ main] o.s.c.a.n.registry.NacosServiceRegistry : nacos registry, nacos-server 192.168.0.154:8081 register finished

浏览器访问:http://127.0.0.1:8848/nacos/查看服务列表,会显示当前注册的所有服务,以及每个服务的集群数目、实例数、健康实例数。点击详情,我们还能看到每个服务具体的实例信息,如下图所示:

2、服务消费者(nacos-client)

实现一个应用来消费上面已经注册到Nacos的服务,编辑pom.xml中的依赖内容,与上面服务提供者的一样即可:

<dependencies>
<dependency>
<groupId> org.springframework.boot</groupId>
<artifactId> spring-boot-starter</artifactId>
</dependency>

<dependency>
<groupId> org.springframework.boot </groupId>
<artifactId> spring-boot-starter-test </artifactId>
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.springframework.boot </groupId>
<artifactId>spring-boot-starter-web </artifactId>
</dependency>

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

<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>

创建启动类,并实现一个HTTP接口,在该接口中调用服务提供方的接口:

使用Spring Cloud Common中的LoadBalancerClient接口来挑选服务实例信息。然后从挑选出的实例信息中获取可访问的URI,拼接上服务提供方的接口规则来发起调用。

配置服务名称和Nacos地址:


server:
port: 8080
spring:
application:
name: nacos-client
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848

启动服务消费者,浏览器访问:http://localhost:8080/test



127.0.0.1:8080/test
Invoke : http://192.168.0.154:8081/hello?name =zhangsan, return : hello zhangsan

127.0.0.1:8080/test
Invoke : http://192.168.0.154:8082/hello?name =zhangsan, return : hello zhangsan

可以看到,两次不同请求的时候,真正实际调用的服务提供者实例是不同的,也就是说,通过LoadBalancerClient接口在获取服务实例的时候,已经实现了对服务提供方实例的负载均衡。但是很明显,这样的实现还是比较繁琐.


SPRINGCLOUD ALIBABA全家桶 目录

第一章 微服务的架构介绍发展
第二章 微服务环境搭建
第三章 Nacos Discovery–服务治理
第四章 Sentinel–服务容错
第五章 Gateway–服务网关
第六章 Sleuth–链路追踪
第七章 Rocketmq–消息驱动
第八章 SMS–短信服务
第九章 Nacos Config–服务配置
第十章 Seata–分布式事务
外一篇 SpringCloud Alibaba——服务注册与发现(Nacos)

Rate this post

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注