一、选型:
注册中心作为一个服务注册和发现的服务,必须是高可用的,所以应该是AP模型;
作为CP模型的zk和etcd,在小规模应用情况下低于千级服务,可以使用,不过跨机房时容易因为网络问题导致注册服务不可用,另外CP模型都是一主多从(选主)情况,写入操作只能通过主节点,所以如果服务过多,服务的心跳检查机制是一个比较频繁的动作,会导致主写入瓶颈;由于zk采用zab协议、etcd采用raft协议进行数据同步,都是从主同步到多个节点,高并发写入时,容易出现瓶颈;
作为AP模型的eureka,1.0开源,2.0不再开源,后续无法升级。阿里开源的nacos也是AP模型,可以作为一个方案,蚂蚁金服的sofa也可以考虑。
二、自研考虑事项
1、注册中心提供节点信息的存储与扩展,使用mysql持久化,redis做缓存
2、提供权重设置,分组设置,可区分核心应用和非核心应用调用不同的分组,互不干扰
3、基于netty通过tcp协议,提供者和消费者与注册中心保持长连接
4、注册中心集群节点间可采用gossip协议维护集群节点的自动发现、转移和心跳