微服务系列(二)探究不同注册中心的底层原理
市面上常见的注册中心有 eureka、zookeeper、consul,又由于笔者有关注目前还在0.8.0版本的nacos,本文就针对这四个注册中心,从底层实现来探讨它们的适用场景,并尝试寻找一些可扩展的入口,也便于开发者在其上进行改造和定制化。
前言
在介绍四种开源项目之前,先简单认识一下注册中心。
我的简单理解:
- 注册中心提供服务注册和服务发现功能
- 注册中心解决单点故障问题
- 注册中心需要保存服务注册信息以及服务发现时的筛选和简单计算能力
那么我们应该从以下几点来“考量”一个注册中心:
- 如何解决单点故障问题以及如何保证信息不丢失,有何优缺点
- 如何存储服务注册信息,有何优缺点
- 如何通讯,通讯效率等
- 功能是否丰富,能否满足不同需求
简洁通俗的介绍它,注册中心就是一个高可用的分布式“字典”服务,各个服务之间通过这个“字典”服务找到对方。
下面就通过这些问题,针对不同的注册中心来深入和比较。
Eureka
请移步至【微服务系列(二)(1) Eureka源码分析】查看
ZooKeeper
ZooKeeper不仅作为注册中心而存在,其开发出来并被定义为分布式协调服务,还可以用作配置中心等其他功能,源码也比较复杂,这里分为三个部分来分析。
part-1【微服务系列(二)(2) ZooKeeper源码分析-part-1】:Zookeeper Server的初始化过程,通讯原理及选举机制
part-2【微服务系列(二)(3) ZooKeeper源码分析-part-2】:Zookeeper Server的数据存储机制
part-3【微服务系列(二)(4) ZooKeeper源码分析-part-3】:Zookeeper Client发送命令链路追踪,Zookeeper的事务请求原理,Watcher监听原理
Consul
由于consul是go语言开发,对go语言不熟悉,没办法