为什么需要注册中心?是用 Eureka 还是 Nacos?
共 2315字,需浏览 5分钟
·
2022-02-20 09:53
为什么要使用注册中心
有使用过ip:port地址直接调用服务的开发经历么?该段痛苦的经历在此处省略500字......,该种方式的缺点:
使用注册中心能够实现服务治理,服务动态扩容,以及服务调用的负载均衡,完整调用链路示例如下:
服务提供者:向注册中心根据服务名称提供服务访问的ip:port以及其他信息。 注册中心:根据服务名称,存储对应的ip:port以及其他信息。 服务消费者:根据服务名向注册中心获取调用服务的ip:port以及其他相关的信息集合,然后根据负载均衡策略获取最终的服务器ip:port访问地址。 使用springcloud时,常用的是eureka和nacos作为注册中心,如何选择呢?
Eureka注册中心
架构原理图如下:
服务提供者
主动向注册中心注册,续约,下线,获取注册表。服务注册成功后,定时向注册中心发送心跳,保证服务不被剔除。
注册中心
后续,复盘,应该Eureka的自我保护机制,导致的问题。在注册中心注册的服务是一个不可用的服务,但是,由于自我保护机制,Eureka Server没有将无效的服务剔除。
后续的解决方法是,设置 enableSelfPreservation=false
关闭自我保护机制,把renewalPercentThreshold 比例降低,在Eureka Server端,如果出现无效的服务就会将该服务剔除。nacos注册中心
nacos是springcloud的扩展,注册中心功能通过NacosDiscoveryClient 继承DiscoveryClient,在springcloud中,与Eureka可以无侵入的切换。注册中心可以手动剔除服务实例,通过消息通知客户端更新缓存的实例信息,完整调用链路示例如下:另外,关注互联网架构师,在后台回复:2T,可以获取我整理的 架构系列面试题和答案,非常齐全。
在spring cloud中引入nacos时,参考官网匹配具体的版本,如图: nacos重点需要了解下其领域模型Nacos 数据模型 Key 由三元组唯一确定, Namespace命名空间,分组group,service服务。详情可以参考官网Nacos 架构。 Nacos与Eureka相比优势如下:
nacos在自动或手动下线服务,使用消息机制通知客户端,服务实例的修改很快响应;Eureka只能通过任务定时剔除无效的服务。 nacos可以根据namespace命名空间,DataId,Group分组,来区分不同环境(dev,test,prod),不同项目的配置。 原文链接:https://blog.csdn.net/new_com/article/details/112633748
相关阅读:2T架构师学习资料干货分享
全栈架构社区交流群
「全栈架构社区」建立了读者架构师交流群,大家可以添加小编微信进行加群。欢迎有想法、乐于分享的朋友们一起交流学习。
看完本文有收获?请转发分享给更多人
往期资源: