nacos注册中心架构
核心功能
服务注册:
支持异构的系统发送注册,心跳的接口接入nacos,注册到对应的ip, 端口等信息
服务心跳:
服务同步:
集群模式下各个server会同步服务实例,保证信息的一致性,leader模式,raft协议
服务发现
服务消费端 ,调用服务提供的服务,会发送rest请求,获取服务列表,同时缓存本地。
同时client会本地开启定时任务拉取服务最新的注册表信息
服务健康检查
nacos server 会定时检查各个祖册服务实例的健康
15s没有心跳,会设置healthy =false
30s没心跳,会删除实例
注册表数据结构
Spring cloud alibaba nacos使用
Spring cloud alibaba的版本对应选型
推荐对应版本
搭建客户端nacos-client服务
父pom引入 Spring cloud Spring cloud alibaba
<dependencyManagement>
<dependencies>
<!--引入springcloud的版本-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR3</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.1.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
当前pom
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2) application.properties中配置
server.port=8002
微服务名称
spring.application.name=service-user
配置 Nacos server 的地址
spring.cloud.nacos.discovery.server‐addr=localhost:8848
其他配置:
https://github.com/alibaba/spring-cloud-alibaba/wiki/Nacos-discovery
配置项 | Key | 默认值 | 说明 |
---|---|---|---|
服务端地址 | spring.cloud.nacos.discovery.server-addr | 无 | Nacos Server 启动监听的ip地址和端口 |
服务名 | spring.cloud.nacos.discovery.service | ${spring.application.name} | 给当前的服务命名 |
服务分组 | spring.cloud.nacos.discovery.group | DEFAULT_GROUP | 设置服务所处的分组 |
权重 | spring.cloud.nacos.discovery.weight | 1 | 取值范围 1 到 100,数值越大,权重越大 |
网卡名 | spring.cloud.nacos.discovery.network-interface | 无 | 当IP未配置时,注册的IP为此网卡所对应的IP地址,如果此项也未配置,则默认取第一块网卡的地址 |
注册的IP地址 | spring.cloud.nacos.discovery.ip | 无 | 优先级最高 |
注册的端口 | spring.cloud.nacos.discovery.port | -1 | 默认情况下不用配置,会自动探测 |
命名空间 | spring.cloud.nacos.discovery.namespace | 无 | 常用场景之一是不同环境的注册的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等。 |
AccessKey | spring.cloud.nacos.discovery.access-key | 无 | 当要上阿里云时,阿里云上面的一个云账号名 |
SecretKey | spring.cloud.nacos.discovery.secret-key | 无 | 当要上阿里云时,阿里云上面的一个云账号密码 |
Metadata | spring.cloud.nacos.discovery.metadata | 无 | 使用Map格式配置,用户可以根据自己的需要自定义一些和服务相关的元数据信息 |
日志文件名 | spring.cloud.nacos.discovery.log-name | 无 | |
集群 | spring.cloud.nacos.discovery.cluster-name | DEFAULT | 配置成Nacos集群名称 |
接入点 | spring.cloud.nacos.discovery.enpoint | UTF-8 | 地域的某个服务的入口域名,通过此域名可以动态地拿到服务端地址 |
是否集成Ribbon | ribbon.nacos.enabled | true | 一般都设置成true即可 |
是否开启Nacos Watch | spring.cloud.nacos.discovery.watch.enabled | true | 可以设置成false来关闭 watch |
使用:
注意:需要添加@LoadBalanced注解
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
nacos源码编译
源码地址:
https://github.com/alibaba/nacos
编译
mvn -Prelease-nacos -Dmaven.test.skip=true -Drat.skip=true clean install -U
2)启动nacos
进入console模块,找到启动类 com.alibaba.nacos.Nacos,执行main方法
单机版需要修改配置
-Dnacos.standalone=true -Dnacos.home=D:\code\java_yuanma\nacos-1.4.1