三、Nacos
1、简介
(1)、2018年7月发布第一个release版本,Nacos注册中心分为server与client,server采用Java编写,为client提供注册发现服务与配置服务。而client可以用多语言实现,client与微服务嵌套在一起,nacos提供sdk和openApi,如果没有sdk也可以根据openApi手动写服务注册与发现和配置拉取的逻辑。
Nacos就是注册中心+配置中心的组合,等价于Eureka + Config + Bus。Nacos默认自带的是嵌入式数据库derby实现数据存储。所以如果启动多个默认配置下的Nacos节点,数据存储存在一致性问题,所以Nacos采用了集中式存储的方式来支持集群化部署,目前只支持MySQL存储。
Nacos集成Ribbon,可以实现负载均衡。
(2)、特性
①、服务发现和服务健康监测
Nacos支持基于DNS和基于RPC的服务发现,Nacos提供对服务的实时的健康检查。服务注册的策略的是每5秒向Nacos Server发送一次心跳,心跳带上了服务名、服务IP、服务端口等信息。同时Nacos Server也会向client主动发起健康检查,支持tcp/http检查。如果15秒内无心跳且健康检查失败则认为实例不健康,如果30秒内健康检查失败则剔除实例。
②、动态配置服务
Nacos提供了一个简洁易用的UI帮助管理所有的服务和应用的配置。动态配置消除了配置变更时重新部署应用和服务的需要,让配置管理变得更加高效和敏捷,配置中心化管理让实现无状态服务变得更简单。
③、动态DNS服务
动态DNS服务支持权重路由,更容易地实现中间层负载均衡、更灵活的路由策略、流量控制以及数据中心内网的简单DNS解析服务。
④、服务及其元数据管理
Nacos能从微服务平台建设的视角管理数据中心的所有服务及元数据。
2、Nacos作为注册中心
应用:Provider、Sob
(1)、引入pom
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
(2)、修改yml
Provider配置
spring:
application:
name: provider
cloud:
nacos:
discovery:
server-addr: localhost:8848
Consumer配置
spring:
application:
name: demo
cloud:
nacos:
discovery:
server-addr: localhost:8848
(3)、修改启动类
@EnableDiscoveryClient
开启服务发现
3、Nacos作为配置中心
boostrap.yml由父ApplicationContext加载,比applicaton.yml优先加载,boostrap.yml里面的属性不能被覆盖。
(1)、DataID方案
①、页面配置
默认空间+默认分组+新建dev和test两个DataID
②、yml配置
bootstrap.yml
spring:
application:
name: demo
cloud:
nacos:
discovery:
# 作为注册中心
server-addr: localhost:8848
config:
# 作为配置中心
server-addr: localhost:8848
file-extension: yaml
application.yml
spring:
profiles:
# active: dev # 读取application-dev.yaml
active: test # 读取application-test.yaml
(2)、Group方案
①、页面配置可配置为DEV_GROUP或TEST_GROUP
②、yml配置
bootstrap.yml
spring:
application:
name: demo
cloud:
nacos:
discovery:
# 作为注册中心
server-addr: localhost:8848
config:
# 作为配置中心
server-addr: localhost:8848
file-extension: yaml
# group: TEST_GROUP #Test环境
group: DEV_GROUP #Dev环境
application.yml
spring:
profiles:
# active: dev # 读取application-dev.yaml
# active: test # 读取application-test.yaml
active: info
(3)、Namespace
①、新建test、dev命名空间
②、在命名空间创建配置文件,根据是否需要自定义Group
③、配置yml
bootstrap.yml
spring:
application:
name: demo
cloud:
nacos:
discovery:
# 作为注册中心
server-addr: localhost:8848
config:
# 作为配置中心
server-addr: localhost:8848
file-extension: yaml
# group: DEV_GROUP #Dev环境
group: TEST_GROUP #Test环境
namespace: 1e3dc5d7-747b-47e9-b0ed-07874e27fcd3
application.yml
spring:
profiles:
# active: info
# active: test # 读取application-test.yaml
active: dev # 读取application-dev.yaml
4、集群实现
(1)、下载安装nacos-server
①、官网下载nacos-server
②、解压安装包,找到bin目录下的startup.cmd
Windows:直接运行startup.cmd
Mac:执行命令:sh startup.sh -m standalone
③、安装运行成功后直接访问:http://localhost:8848/nacos 用户名/密码默认:nacos
(2)、Nacos持久化配置修改
①、在nacos-server-1.1.4\nacos\conf目录下找到sql脚本nacos-mysql.sql,执行SQL。
②、在nacos-server-1.1.4\nacos\conf目录下找到application.properties,添加一下配置
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=root
(3)、配置Nacos集群
①、梳理出Nacos服务的地址和端口号
例:192.168.111.144:3333
192.168.111.144:4444
192.168.111.144:5555
②、在nacos-server-1.1.4\nacos\conf目录下找到cluster.conf.example,复制后改为cluster.conf。添加Nacos集群每台机器的地址加端口号
(4)、配置Nginx
配置Nginx作为负载均衡器指向Nacos集群,负责负载均衡Nacos集群。
例:192.168.111.144:1111
(5)、创建测试项目配置yml
spring:
application:
name: sob
cloud:
nacos:
discovery:
# 配置Nginx地址,做集群
server-addr: 192.168.111.144:1111