为了给您提供更优质的服务,请您先完善以下信息:
确认提交

扫码关注

爱数技术支持中心公众号

请选择:

请选择咨询类型

AnyShare
AnyBackUp
AnyRobot

扫码关注

爱数技术支持中心公众号

contact us

提交成功!

我们将在 24 小时之内联系你。

性能爆表
AnyShare
如何购买
我已是Anyshare 客户
AnyRobot
如何购买
购买 AnyRobot 订阅服务
我已是 AnyRobot 客户
一对一在线咨询
我是 AnyRobot 新客户
一对一在线咨询

爱数博客

全部 AnyBackup AnyShare AnyRobot AnyDATA AnyFabric

AnyRobot重要组件之Kafka——高可用设计

2023-12-13 732 0
    在AnyRobot重要组件之Kafka——基本概念入门中,讲解了Kafka 作为AnyRobot非常重要的一个组件,既然Kafka这个组件如此重要,那它如何实现高可用的呢,本文将一一来讲解。
      首先我们先来了解下,什么是高可用。

一、什么是高可用

     “高可用性”(High Availability)通常来描述一个系统经过专门的设计,从而减少停工时间,而保持其服务的高度可用性,服务不可能 100% 可用,因此要提高高可用,就要尽最大可能去增加服务的可用性,提高可用性指标。一句话来表述就是:高可用就是让我们的服务在任何情况下都尽最大可能能够对外提供服务。
 

二、Kafka高可用

      Kafka高可用主要分为以下两部分:
  • 服务高可用:多个Broker进程分散到不同机器上;
  • 数据高可用:采用备份机制(Replication),相同的数据拷贝到多台机器。
   
     本文将重点从这两方面来讲解Kafka高可用设计。
 

三、Kafka Broker 高可用

      Kafka 的服务器端由被称为 Broker 的服务进程构成,即一个 Kafka 集群由多个 Broker 组成,这样如果集群中某一台机器宕机,其他机器上的 Broker 也依然能够对外提供服务。这其实就是 Kafka 提供高可用的手段之一。Kafka从0.8版本开始提供高可机制, 可保障一个或多个Broker宕机后,其他Broker及所有Partition都能继续提供服务。

     Kafka允许同⼀个Partition存在多个消息副本(Replica),每个Partition的副本通常由1个Leader及0个以上的Follower组成,⽣产者将 消息直接发往对应Partition的Leader,Follower会周期地向Leader发送同步请求,Kafka的Leader机制在保障数据⼀致性地同时降低了消息备份的复杂度。
     同⼀Partition的Replica不应存储在同一个Broker上,因为一旦该Broker宕机,对应Partition的所有Replica都无法⼯作,这就达不到 高可用的效果。为了做好负载均衡并提⾼容错能力,Kafka会尽量将所有的Partition以及各Partition的副本均匀地分配到整个集群上。 举个例⼦,当集群中部署了3台Broker,TopicA共有4个Partition,每个Partition均有3个Replica,下图就是⼀种合理理的分布方式。
                   

 

四、Kafka Replication数据高可用

    在Kafka中,topic是可以拆分为多个分区进行存储数据的,每个分区存储的数据都是不一样的。在kafka的集群环境下,为了避免出现单节点宕机导致的数据丢失迭代情况,kafka提供了一种分区数据的副本机制,保证在某个分区的读写节点宕机时,数据不会丢失。
    创建topic的时候通过指定replication-factor可以指定分区总共创建多少个副本,副本数不能超过broker数目。这些副本中,分为leader副本和follower副本,leader副本负责数据的读写请求,follower副本负责从leader副本复制数据到follower副本中备份数据,这样当leader副本所在机器出现宕机的时候就可以在follower副本里面重新选举出一个leader副本来进行数据读写操作从而保证数据不会丢失。

     1、在 Kafka 中,副本分成两类:领导者副本和追随者副本。每个分区在创建时都要选举一个副本,称为领导者副本,其余的副本自动称为追随者副本,追随者副本是不对外提供服务的。
     2、当领导者副本挂掉了,或领导者副本所在的 Broker 宕机时,Kafka 依托于 ZooKeeper 提供的监控功能能够实时感知到,并立即开启新一轮的领导者选举,从追随者副本中选一个作为新的领导者。老 Leader 副本重启回来后,只能作为追随者副本加入到集群中。

                       
       以上是Kafka相关高可用设计,后续我们将进一步讨论Kafka是如何实现数据的快速保存的。


 

请就本文对您的益处进行评级:

标签

产品技术

相关文章

热门标签

版本发布 在线教学
ai-assistant
chat
support
trial
需求助手 (内容由 AI 大模型生成,请仔细甄别)