看了前面三篇文章的小伙伴和我反映,说我说的东西需要一定的微服务基础,他自己对一些SpringCloudAlibaba组件不是很了解,听着不是很懂。那么我们今天就来从头开始,说说SpringCloudA里巴巴的Nacos吧。看到标题,估计有的小伙伴就已经能猜到了,没错,Nacos它既是作为注册中心,又可以作为配置中心。
学习nacos,我们首先得了解下,为什么使用注册中心。举个例子,假设我现在有A,B两个服务,A服务需要调用B服务的某个功能,传统的写法肯定是直接用RestTemplate模板写入地址和方法名进行调用。这样有个很不好的点,就是如果我的B服务项目地址发生了改变,那我势必要去修改A服务的代码。其次,如果说项目过多的话,很难统一维护,我们可以通过注册中心查看哪些项目是健康的,哪些项目出现了异常,哪些项目是集群的,端口号分别是什么,以便更直观进行系统的维护。
1.nacos的安装 http://dubbo.apache.org/zh-cn/docs/user/references/registry/nacos.html
下载完成之后直接双击srartup就可以启动啦,默认端口号为8848
2.Springboot集成nacos
org.springframework.cloud
spring-cloud-starter-alibaba-nacos-discovery
0.2.2.RELEASE
spring:
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
项目启动成功后,访问8848端口,可以看见以下画面
直接可以根据服务名称进行调用接口啦
restTemplate.getForObject("http://nacos-provide/helloNacos",String.class);
nacos和常见的eureka,zookeeper区别是什么?
1.设计思想上的不同:
eureka遵循的是AP的思想,既在集群模式下相互注册,从而达到高可用。而Zookeeper遵循的是CP模式,既进行选主,写的请求集中在主节点,一旦主节点宕机了,那么整个zookeeper集群不可用,但是数据可以保证一致性。而nacos默认情况下是AP默认,但是可以手动切换为CP模式。
2.服务保护机制:
nacos和eureka都是有服务保护机制的,而且zookeeper没有。
3.nacos同样可以作为分布式配置中心而eureka和zookeeper不具备这样的功能。
先不说生产环境,就说在做的各位在写代码的时候,一旦想修改配置文件里面的某个值,那么服务必须重启,本来就是想测试一个接口,结果来来回回一直要重启服务器,极大的影响了开发效率。在生产环境中,一旦某个配置文件需要做出修改,你是不可能重启你的整个服务,所以,分布式配置中心很有必要
1.引入配置中心依赖,并修改配置文件
org.springframework.cloud
spring-cloud-starter-alibaba-nacos-config
0.2.2.RELEASE
spring:
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
enabled: true
config:
server-addr: 127.0.0.1:8848
group: DEFAULT_GROUP
file-extension: yaml
2.新建配置文件
点击+号
dataid为你的服务名称,如果是yml的配置就是服务名.yaml,如果是properties,则是服务名.properties。
group默认即可。
配置格式和你的dataid后缀相同
配置内容则写上你需要发布的配置信息,点击发布,就OK啦。
3.在你需要实时刷新的类上加上注解
@RefreshScope
nacos和常见的config,apollo区别是什么?
1.SpringCloudConfig是依赖于git或者gitee这样的托管网站,而且没有界面可视化操作,麻烦而不友好。
2.Apollo是公认的前几年比较好用的配置中心,但是搭建起来比较繁琐而且占用内存也很大,很重。
3.nacos学习成本和维护成本都很低,易上手,更加直观,但是像权限管理一些其他功能不如Apollo。
服务发现和服务健康监测
Nacos 支持基于 DNS 和基于 RPC 的服务发现。服务提供者使用 原生SDK、OpenAPI、或一个独立的Agent TODO注册 Service 后,服务消费者可以使用DNS TODO 或HTTP&API查找和发现服务。
Nacos 提供对服务的实时的健康检查,阻止向不健康的主机或服务实例发送请求。Nacos 支持传输层 (PING 或 TCP)和应用层 (如 HTTP、MySQL、用户自定义)的健康检查。 对于复杂的云环境和网络拓扑环境中(如 VPC、边缘网络等)服务的健康检查,Nacos 提供了 agent 上报模式和服务端主动检测2种健康检查模式。Nacos 还提供了统一的健康检查仪表盘,帮助您根据健康状态管理服务的可用性及流量。
动态配置服务
动态配置服务可以让您以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。
动态配置消除了配置变更时重新部署应用和服务的需要,让配置管理变得更加高效和敏捷。
配置中心化管理让实现无状态服务变得更简单,让服务按需弹性扩展变得更容易。
Nacos 提供了一个简洁易用的UI (控制台样例 Demo) 帮助您管理所有的服务和应用的配置。Nacos 还提供包括配置版本跟踪、金丝雀发布、一键回滚配置以及客户端配置更新状态跟踪在内的一系列开箱即用的配置管理特性,帮助您更安全地在生产环境中管理配置变更和降低配置变更带来的风险。