米鼠商城

多块好省,买软件就上米鼠网

最新项目

人才服务

靠谱的IT人才垂直招聘平台

redis、kafka、zookeeper 集群辨析

  • DDAlex
  • 9
  • 2019-10-09 23:26

集群的目的:

    1.保证高可用

    2.增强并发能力,提高系统的吞吐量。

 

redis 集群(高可用、数据分散,总可存储数据变大):

    多个 主-从 结构。

    主节点处理请求,从节点只是同步数据

    各个主节点存储的数据不同。

    主从切换(哨兵 监听各自的服务状态)

 

kafka 集群(高可用、数据分散):

    分为:控制器、分区首领 和 跟随者

    控制器只是一个broker,不仅提供正常的服务,还要提供首领选举的能力。负责为失去首领的分区找到新的首领

    分区首领处理来自客户端的生产者的消息请求

    跟随者只是复制消息

    因为每个broker可保存成百上千不同主题与分区的副本,若一个broker离开了集群,可能会让在该broker的分区副本失去分区首领,因此 控制器会为这些分区重新选举一个分区首领。

    若控制器离开了集群,则其他broker会收到ZK 的通知,然后会去尝试成为新的控制器,第一个成功,其余失败。则继续注册监听新的控制器节点。

 

ZK 集群(数据都相同):

    zk 是用来协同分布式系统之间的工作的。

    单机即可完成:

    1)分布式锁(只有一个能获取到锁)

    2)主从选举

    3)从节点注册监听主节点的事件,主节点崩溃,从节点会立即收到通知,去尝试成为主节点。

 

    集群:为了保证高可用 和 更大的 并发读。不是为了分散数据存储,因为ZK不是设计用来存储大量数据的。

    1个leader,多个follower

    所有的server 都是最终数据一致

    leader 职责:接受follower写请求,同步请求,发起投票,接收follower对提议的回复

    follower 职责:接收客户端请求并返回请求结果、参与投票

    1).崩溃的server 再加入集群,即使之前是 leader,那么此刻一定是 follower。

    2).client 只能连接到 集群中的 一台 follower 。follower 接收到写请求,则转给 leader. follower 接收到读请求,则返回结果.

    因为全局数据一致,因此无论 client 连接到 集群中的 哪一台 follower,均可以认为得到的数据是一致的。 

    3)写请求 由 follower传递给leader, leader 发起投票,超过半数,这个写请求才会被写入leader,然后 同步给follower.最后请求结果返回给 客户端。

    4)一个写请求只会半数以上server 投票通过才能持久化保存,因此,ZK集群server数量一般都是 奇数。 3/5/7/9 

   

    

 

 

 

 

 

 

 

 

 



这里给大家推荐一个在线软件复杂项交易平台:米鼠网 https://www.misuland.com

米鼠网自成立以来一直专注于从事软件项目人才招聘软件商城等,始终秉承“专业的服务,易用的产品”的经营理念,以“提供高品质的服务、满足客户的需求、携手共创双赢”为企业目标,为中国境内企业提供国际化、专业化、个性化、的软件项目解决方案,我司拥有一流的项目经理团队,具备过硬的软件项目设计和实施能力,为全国不同行业客户提供优质的产品和服务,得到了客户的广泛赞誉。

猜你喜欢

评论留言