目录
- 前言环境
- Nacos Server 下载地址
- user-center 用户中心微服务注册
前言
记录下
Nacos
的整合过程
环境
Win 10 + Spring Cloud 2020.0.1 + Spring Cloud Alibaba 2021.1 + Nacos 2.0.0
Nacos是什么?
-
Nacos
是一个服务发现组件,也是一个配置服务器,
Nacos
解决的两个问题:
1、服务A怎么找到服务B2、管理微服务的配置
-
Nacos
官方文档:https://nacos.io/zh-cn/docs/what-is-nacos.html
-
Nacos
简易架构图
服务发现原理
-
服务发现机制
服务发现机制就是服务消费者总能找到服务提供者的机制,举个例子:服务发现就像手机中ad8的名片夹,记录一个人所有的联系方式,通过该名片可以联系到某个人,而当某个联系方式不存在时(服务DOWN)就将其从名片夹中删除。 -
用于生产的服务发现机制:
1、在微服务上做缓存,定时任务发送当前的地址,调用时取缓存中微服务的地址,该做法好处首先是压力小,不用每次都去实时取,其次是即使服务发现组件崩溃也可以取到缓存中的值,只是无法更新缓存中的值。
2、每个微服务实例都向服务发现组件发送心跳(即一次请求),告诉服务发现组件自己是活着的,如果服务发现组件发现某一个实例长时间未向自己发送心跳,即认为该实例已挂,将其健康状态标记为DOWN
,服务消费者即不再调用该实例。
搭建 Nacos Server
Nacos Server 下载地址
https://github.com/alibaba/nacos/releases
Nacos Server 的版本选择
Nacos Server
的版本选择参照标准在
spring-cloud-alibaba-dependencies-xxx.pom
中有记录,如我的
Spring Cloud Alibaba
的版本是
2021.1
,其推荐的版本是
1.4.1
(生产环境优先选择)
由于我这里是开发环境,我选择的版本是
2.0.0
运行 Nacos Server
- 官方文档:https://nacos.io/zh-cn/docs/quick-start.html
- 解压缩下载好的
Nacos
压缩包
-
cmd
运行启动命令
startup.cmd -m standalone
- 访问
http://localhost:8848/nacos/#/login
(默认端口是8848)
- 默认登录账号/密码:
nacos/nacos
… Nacos Server 搭建完毕
Nacos Client 注册
user-center 用户564中心微服务注册
-
pom.xml
<?xml version=\"1.0\" encoding=\"UTF-8\"?><project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd\"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.4.2</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.coisini</groupId><artifactId>user-center</artifactId><version>0.0.1-SNAPSHOT</version><name>user-center</name><description>user-center project for Spring Boot</description><properties><java.version>1.8</java.version><spring-cloud.version>2020.0.1</spring-cloud.version><spring-cloud-alibaba.version>2021.1</spring-cloud-alibaba.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-ad8boot-starter-web</artifactId></dependency><!--spring-cloud-starter-{spring cloud子项目的名称}-[{模块名称}]--><!-- nacos --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency></dependencies><dependencyManagement><dependencies><!-- 整合spring cloud --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency><!-- 整合spring cloud alibaba --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring-cloud-alibaba.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
-
application.yml
spring:application:# 服务名称name: user-centercloud:nacos:discovery:# 指定nacos server的地址server-addr: localhost:8848
- 启动项目
- 访问
Nacos
content-center 内容中心微服务注册
-
pom.xml
依赖同上
-
application.yml
spring:application:# 服务名称name: content-centercloud:nacos:discovery:# 指定nacos server的地址server-addr: localhost:8848
- 访问
Nacos
ad8
服务发现测试
- 内容中心编写测试代码
@RestControllerpublic class TestController {@Autowiredprivate DiscoveryClient discoveryClient;/*** 测试:服务发现,证明内容中心总能找到用户中心* @return 用户中心所有实例的地址信息*/@GetMapping(\"test\")public List<ServiceInstance> getInstances() {// 查询指定服务的所有实例的信息return discoveryClient.getInstances(\"user-center\");}}
- 如下所示,内容中心可以获取到用户中心所有实例的地址信息
– End -﹀﹀﹀白嫖有风险点赞加收藏