zookeeper
某些中间件的客户端配置中,会有集群的地址列表数组
某些中间件的客户端配置中,会有集群的地址列表(数组),典型的如zookeeper的地址列表: 聪明的运维同学,喜欢把它弄成域名,第一种是一个域名解析为多个IP(起到负载均衡作用): 第二种是一个域名解析为一个IP(可以方便修改IP),例如: 这三种方式,到底哪种好?为什么?有没有更好的方式? 直接说结论: 上面三种方式中,单个域名的方案最差,通常起不到负载均衡作用,而且可能还会有副作用(中间件客户端本身可能会自带负载均衡机制)。 多个域名列表的方式,优于多个IP列表的方式。 但是将IP换成域名的弊端也很明显:域名解析有缓存,修改了域名解析,新的IP并不能立即生效
一个zookeeper集群需要由奇数个2n+1节点构成
一个ZooKeeper集群需要由奇数个(2N+1)节点构成,通过内部选举协议选出一个Leader节点,其余为Follower节点。写入数据时,由Leader节点负责统一协调写请求,至少(N+1)个节点投票成功才能确定本次数据写入成功,因此至少有(N+1)个存活的节点才能保证ZooKeeper整体服务可用。当Leader节点异常退出时,ZooKeeper集群会重新发起选举,选出新的Leader节点,保证整体服务的高可用
