springcloud alibaba组件nacos学习笔记
注册中心:eureka、consul、nacos、zookeeper、etcd
consul、eureka、nacos对比
配置中心
- eureka 不支持
- consul 支持 但用起来偏麻烦,不太符合springBoot框架的命名风格,支持动态刷新
- nacos 支持 用起来简单,符合springBoot的命名风格,支持动态刷新
注册中心
- eureka
- 应用内/外:直接集成到应用中,依赖于应用自身完成服务的注册与发现,
- ACP原则:遵循AP(可用性+分离容忍)原则,有较强的可用性,服务注册快,但牺牲了一定的一致性。
- 版本迭代:目前已经不进行升级
- 集成支持:只支持SpringCloud集成
- 访问协议:HTTP
- 雪崩保护:支持雪崩保护
- 界面:英文界面,不符合国人习惯
- 上手:容易
- consul
- 应用内/外:属于外部应用,侵入性小
- ACP原则:遵循CP原则(一致性+分离容忍) 服务注册稍慢,由于其一致性导致了在Leader挂掉时重新选举期间真个consul不可用。
- 版本迭代:目前仍然进行版本迭代
- 集成支持:支持SpringCloud K8S集成
- 访问协议:HTTP/DNS
- 雪崩保护:不支持雪崩保护
- 界面:英文界面,不符合国人习惯
- 上手:复杂一点
- nacos
- 应用内/外:属于外部应用,侵入性小
- ACP原则:通知遵循CP原则(一致性+分离容忍) 和AP原则(可用性+分离容忍)
- 版本迭代:目前仍然进行版本迭代
- 集成支持:支持Dubbo 、SpringCloud、K8S集成
- 访问协议:HTTP/动态DNS/UDP
- 雪崩保护:支持雪崩保护
- 界面:中文界面,符合国人习惯
- 上手:极易,中文文档,案例,社区活跃
erueka: 目前不再维护,不推荐使用了.
nacos:
一.简介: 注册中心+配置中心
有自己的web界面,有自己管理平台
- Nacos = Eureka/Consule + Config + Admin
- 官网学习文档: https://spring.io/projects/spring-cloud-alibaba
nacos学习文档: https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html
注意:版本 2.1.x.RELEASE 对应的是 Spring Boot 2.1.x 版本。版本 2.0.x.RELEASE 对应的是 Spring Boot 2.0.x 版本,版本 1.5.x.RELEASE 对应的是 Spring Boot 1.5.x 版本。
二: mac版下载安装使用
1.下载地址: https://github.com/alibaba/nacos/releases
2.下载(目前版本到变化挺快,我这边使用的是1.1.4版本)
3.看下载完后的地址,复制bin的位置. 然后mac下执行两个命令
cd /Users/didi/Downloads/nacos/bin
sh startup.sh -m standalone
4.输入nacos登陆地址:http://127.0.0.1:8848/nacos/#/login
5.默认账号:nacos
默认密码:nacos
6.关闭nacos: sh shutdown.sh
如果关闭失败: 需要杀死该端口号的进程
lsof -i:8848
kill -9 45025
三. 注册中心与配置中心demo
3.1 演示服务注册到nacos注册中心, 和可以做ribbon等负载均衡 (相等于eureka,zookeeper,consul)
启动: 本地启动nacos服务,登陆 http://127.0.0.1:8848/nacos/#/login
启动服务提供者: cloudalibaba-provider-payment9001
cloudalibaba-provider-payment9002
启动服务调用者: cloudalibaba-consumer-nacos-order83
测试接口看变化: http://127.0.0.1:83/consumer/payment/nacos/2 看端口变化一直刷
3.2 演示nacos做动态配置中心(相等于apollo等)
配置管理模型:
可以通过namespace ,group, dataid三个层级配置不同环境的读取配置信息
demo:
测试增加配置: 启动nacos + cloudalibaba-config-nacos-client3377
访问地址: http://127.0.0.1:3377/config/info
注意: 修改nacos控制台的配置config.info , 不需要启动项目再次请求接口,里面的返回信息可以立刻改变. 且提供了很多历史查询等管理,功能更加强大.apollo用的时候还需要重启!
四. 注册中心对比
著名的CAP理论指出,一个分布式系统不可能同时满足C(一致性)、A(可用性)和P(分区容错性)。由于分区容错性在是分布式系统中必须要保证的,因此我们只能在A和C之间进行权衡。
nacos文档(支持的多): https://nacos.io/zh-cn/docs/what-is-nacos.html
注意⚠️: nacos支持ap和cp的切换!!!
五.nacos的持久化
背景: 我们在nacos平台上的配置信息,需要存储一个地方.
官方文档: https://nacos.io/zh-cn/docs/deployment.html
目前本地mysql版本8+,很多坑...
1.nacos本地保持的sql;
2.修改数据库链接的地方
目标: 我们可以搭建自己的nacos-config数据库, 用户保存配置信息.
六.思考
- 从eureka等注册中心如何平滑的迁移到nacos上?
- nacos的集群如何协作?
- 如何保证服务高可用,服务和注册中心之间的心跳监控等问题需要深入研究.