【注册中心】如果你来架构分布式系统你会选用什么注册中心, 为什么?
●如何查看索引是否生效?
●JVM的7种垃圾回收器有什么区别?
面试官上线啦
注册中心是分布式架构中的基础服务之一, 在微服务架构流行之前,注册中心就已经开始出现在分布式架构的系统中。
注册中心最核心的能力就是充当微服务之间的"交通枢纽",交通二字其实并不恰当, 也是初学者最容易犯错的地方。其实说它是分布式系统的"大脑"更为贴切: 因为服务调用并不直接经过注册中心, 而具体调用哪个服务却是由注册中心提供数据支持的。
这个数据支持在不少注册中心产品中都叫注册表。
选型注册中心必须考虑的因素有以下几个
首先支持的是CP、还是AP。其实所有注册中心都有一个缺陷, 那就是CAP不能兼得。当然如果按理论讲这锅不该注册中心背。
C:::一致性: Consistency
一致性指的是所有节点在同一时间的数据完全一致。这里的数据大都指的是注册表数据。
A:::可用性: Availability
可用性指服务一直可用,而且是正常响应时间。
P:::分区容错性: Partition tolerance
分区容错性指在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务。
事实上CAP理论远不是寥寥百字可以讲的通透, 但本文意不在此, 暂不展开, 了解上述基本知识暂且够用。
其次支持的平台也是很重要的选型因素。
这平台包含: 1. 通讯协议, 它涉及通讯性能甚至交互限制、安全等级等; 2. 开发语言, 这将限制注册中心的使用范围; 3. 产品集成, 它虽然不绝对限制注册中心的使用范围, 但没有提供集成的平台若使用将极大提高成本。
这个就好理解了, 能力范围指的是其具备的能力有哪些;
有的注册中心仅提供基础的注册表能力, 有的除了注册/发现基础能力外, 还提供: 健康检查、负载均衡、雪崩保护、数据中心、监听支持等, 当然对于团队来讲我认为是否提供管理后台、配置中心也值得一提, 毕竟有管理后台的注册中心更 容易在团队中普及、有配置中心的注册中心也能给系统节省一套中间件。
除了以上因素, 还有生态环境也很重要: 一个团队必定不会全是技术大牛, 那么普通开发在开发过程中遇到问题就必须借助其生态环境的支持进行解决。
那么生态环境: 1. 开源方是谁很重要, 比如说阿里巴巴, 要是确定这个开源方它撑不过明年, 且没有将产品捐赠出去, 那还坚持用它就是作死了。2.活跃度: 需要有足够多的开发者/企业使用, 这好理解: 有人用就有人提问题, 有人踩坑才能有人拉你出坑。3. 维护期: 停止维护了的产品除非你自己愿意维护, 否则尽量避免吧。比如阿里巴巴就不怕SpringCloud停止维护, 他自己维护起来了, 这大家都知道叫: SpringCloudAlibaba, 其实很多大公司都有如此做法, 只是没开源, 或者知名度不够。
知道了这些, 在技术选型这点上, 那就只需要足够广的知识面就可以了, 而这点我会在下面尽量给大家整理的全面一点。
具备了选型因素知识, 以及各大竞品优缺点, 那么回答这个问题应该就能讲出个一二三了, 如果还差实施经验, 那么下期预告: Nacos2.0部署及优化
主要需要解决专业性的技术问题, 包括但不限于: 技术攻关、技术创新、源码优化
主要需要提供企业级业务解决方案, 能够自己实施最好
以上要素经过5大资深面试官精心排序, 小厂可能只要求专业深度, 越大厂要求越多, 且行且珍惜。