注册中心

百发失一,不足谓善射;千里蹞步不至,不足谓善御;伦类不通,仁义不一,不足谓善学。学也者,固学一之也。一出焉,一入焉,涂巷之人也;其善者少,不善者多,桀纣盗跖也;全之尽之,然后学者也。

常用的注册中心对比

name 协议 语言
zk cp(zab)
eureka ap java
nacos cp && ap java
etcd cp(raft) go
consul cp(raft) go

https://mp.weixin.qq.com/s/MoVNY7i6NeHQ7aqp1cYytg
https://mp.weixin.qq.com/s/Mg3LLVdVtKqOQLIxrOvVLw

ap和cp区别

  • cp
    集群中有master,节点挂掉了。其他节点会选举新的主节点,期间可能几分钟,是挂掉的状态。
  • ap
    强调可用性,集群节点都是平等的。节点失败,会启用其他的节点,只有有一台能用,就可以继续使用。

zk

分布式协调服务,基于ZAB算法实现,内部维护了一个树状节点,提供了节点修改通知机制。cp,强一致性行,主节点挂了,会重新选主,期间中断服务。

  • 节点分类
    有序无序,临时非临时。
    临时节点,在客户端创建后不断心跳检测,断开链接后消失。dubbo注册中心。hadoop高可用。

  • 分布式锁

    • 排他锁
      多机器创建临时节点,成功的是获取了,删除节点,锁释放。
    • 有序锁
      创建有序临时节点,最小的获取到了锁,删除后,后面顺序的获取锁。
    • 选主
      和排他锁一样,获取锁就是master,中断后节点消失,通知其他节点,争抢当master
  • 内部
    选主,主节点挂了,子节点会进行投票,生成一个事务id,id大的为主节点,一样就看节点id大的主节点。

  • ZAB
    原子广播,保证节点数据一致性。节点分为主,从,观察。
    从是可以成为主的,观察节点不行。读操作在从,观察节点可以,写的话得主节点来。举个例子,写事务123,会同步到从节点和观察,同步超过一半,返回ack。这时候主节点挂了,比较从节点中的事务id,谁的大说明谁的新,就选谁是master

  • 处理脑裂
    分区,123,4567。原来4是主,现在挂了,开始选主,分别选出来1和6,就发生脑裂了。所以zk要求要检查过半节点存活才能,继续对外服务。
    但是4是假死呢,每次选主都有个纪元值,4正常了也不能当master了因为纪元值小于新的master。
    https://www.jianshu.com/p/809cbee85109

  • 其他
    https://mp.weixin.qq.com/s/-Vi-LHxkpziPt3T7ZD25UA

eureka

client定时和server发送请求续约,时间内没有收到续约,就剔除client
15分钟内85%没有续约,则认为server可能是网络异常,进入保护模式,期间不会再剔除client

你可能感兴趣的:(注册中心)