目录
1.spring cloud alibaba 的出现
spring cloud netflix 进入了维护阶段,将不再开发新的组件
2.服务注册到nacos
yml配置:
spring:
cloud:
nacos:
discovery:
server-addr: localhost:8848
3.服务注册中心对比
框架 | cap模型 | 控制台管理 | 社区活跃度 |
euraka | AP | 支持 | 低 |
zookeeper | CP | 不支持 | 中 |
Consul | CP | 支持 | 高 |
Nacos | AP | 支持 | 高 |
C是所有节点在同一时间看到的数是一致的。而A的定义是所有的请求都会受到响应。
一般来说,如果不需要存储服务级别的信息且服务实例是通过nacos-client注册,并能够保持心跳上报,那么就可以选择AP模式,当前主流的服务如spring cloud和Dubbo服务,都适用于AP模式,AP模式为了服务的可能性而减弱了一致性,因此AP模式下只支持注册临时实例。
如果需要在服务级别编辑或者存储配置信息,那么cp是必须,K8S服务和DNS服务则适用于CP模式。CP模式支持注册持久化实例,此时则是以Raft协议我集群运行模式,该模式下注册实例之前必须先注册服务,如果服务不存在,则返回错误。
nacos支持AP与CP的切换
curl -X PUT '$nacos_server:8848/nacos/v1/ns/operator/switches?entry=serverMode&value=CP
3.nacos做配置中心
3.1 基础配置
pom配置:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
nacos同springcloud-config一样,在项目初始化时,要保证先从配置中心进行配置拉取,拉取配置之后,才能保证项目的正常启动。springboot中配置文件的加载顺序存在优先级顺序的,bootstrap优先级高于application
yml配置:
spring:
cloud:
nacos:
config:
server-addr: localhost:8848
file-extension: yaml
3.2 分类配置
namespace+group+dataId
1.nacos之group分组
配置文件yml中,增加group:组名
2.nacos之namespace空间方案
配置文件yml中,增加namespace: id
4.nacos集群和持久化配置
默认nacos使用嵌入式数据库实现数据的存储,所以,如果启动多个默认配置下的nacos节点,数据存储是存在一致性问题的。为了解决这个问题,Nacos采用了集中式存储的方式来支持集群化部署,目前只支持mysql的存储。
nacos默认自带的嵌入式数据库derby
derby到mysql的切换步骤:
nacos-server\nacos\conf目录下找到sql脚本,执行sql;
nacos-server\nacos\conf目录下找到application.properties 配置mysql连接信息
集群配置:
nacos-server/nacos/conf/cluster.conf.example
cp cluster.conf.example cluster.conf
vim cluster.conf:
192.168.111.133:3333
192.168.111.144:4444
192.168.111.155:5555
修改start.sh启动脚本