詳細カフカ(e)のカフカ機構のコピー

コピー機構(レプリケーション)と呼ばれ、また一般的には、複数のマシンのネットワーク相互接続記憶されたデータの同じコピーに分散系を指す、バックアップ機構と呼ぶことができます。主に以下の点でその役割:

  1. データの冗長性を提供します。システムの一部に障害が発生した場合でも、システムはまだ、それによって全体的な可用性とデータ耐久性を高め、動作を継続することができます。
  2. 高いスケーラビリティを提供します。横方向の支持延長、リードモードを増加させることにより、読み出し動作をマシンのパフォーマンスを向上させ、スループット向上させることが可能となります。
  3. データの局所性を向上させます。システム待ち時間を減らすために、ユーザーの地理的近接にローカルデータを許可します。

これらは、役割の教科書の定義のコピーを配布しています。しかし、あるカフカ、現在は第1の効果のために、データの冗長性、高可用性と高耐久性を提供します。

1.定義のコピー

コピー中カフカ(レプリカ)は、基本的に唯一の追加書き込まれたログを提出することができるメッセージです同じパーティションのすべてのコピーがメッセージの同じ順序で格納され、異なる分散ブローカーに保存されたこれらのコピーは、ブローカーのデータが入手できない部分に対してダウンすることができます。

実際の生産環境では、各ブローカーは各テーマの下に別のパーティションに保存されている別のコピーを有していてもよく、したがって、そこに一つのブローカーのコピーの数百の現象には非常に正常です。下図のように:

役割の2. Aコピー

カフカがされて使用リーダー(リーダーベースの)メカニズムのコピーに基づきます同じパーティションの複数のコピーの下でデータの一貫性を確保するために。下に示すような原理のメカニズムに基づいてリーダーをコピーします。

  • リーダー(リーダーレプリカ)やフォロワーのコピー(フォロワーレプリカ)のコピー:カフカでは、コピーは2つのカテゴリに分類されます。あなたは選挙のコピーがリーダーシップのコピーによって呼び出される必要があります作成する各パーティションは、残りのコピーを自動的に彼の信者のコピーに言及しました。
  • フォロワーはカフカのコピーを外部のサービスの提供ではありません。すべての読み取りおよび書き込み要求は、ブローカーは、ブローカーによって処理されたコピーの指導者に送信する必要があります。フォロワーがクライアントの要求を処理しないコピーし、その唯一のタスクは、コピーのリーダーとの同期を実現するために、リーダー非同期コピーからメッセージを引き出し、そして自分自身の提出にログに書き込まことです。
  • 当领导者副本挂掉,或者说领导者副本所在的Broker宕机时,Kafka依托于ZooKeeper提供的监控功能能够实时感知,并立即开启新一轮的领导者选举,从追随者副本中选一个作为领导者。老Leader副本重启回来后,只能作为追随者副本加入到集群中。

3. Kafka副本机制的优点

Kafka副本机制有两个方面的好处:

1 方便实现“Read-your-writes”

所谓 Read-your-writes,顾名思义就是,当你使用生产者 API 向 Kafka 成功写入消息后,马上使用消费者 API 去读取刚才生产的消息。如果允许追随者副本对外提供服务,由于副本同步是异步的,因此有可能出现追随者副本还没有从领导者副本那里拉取到最新的消息,从而使得客户端看不到最新写入的消息。

2 方便实现单调读(Monotonic Reads)

单调读定义:对于一个消费者用户而言,在多次消费消息时,它不会看到某条消息一会儿存在一会儿不存在。

如果允许追随者副本提供读服务,那么假设当前有 2 个追随者副本 F1 和 F2,它们异步地拉取领导者副本数据。倘若 F1 拉取了 Leader 的最新消息而 F2 还未及时拉取,那么,此时如果有一个消费者先从 F1 读取消息之后又从 F2 拉取消息,它可能会看到这样的现象:第一次消费时看到的最新消息在第二次消费时不见了,这就不是单调读一致性。但是,如果所有的读请求都是由 Leader 来处理,那么 Kafka 就很容易实现单调读一致性。

4. In-sync Replicas(ISR)

ISR副本是指与Leader保持同步的副本集合。这个副本集合不只是追随者副本,也(必然)包括Leader副本。甚至在某些情况下,ISR只有Leader副本。

Broker 端参数 replica.lag.time.max.ms 决定一个追随者副本是否在ISR集合中。这个参数的含义是追随者副本落后领导者副本的最长时间间隔。在这个时间间隔内,追随者副本没有做fetch操作,就被视为与领导者副本不同步,从而被踢出ISR集合。

后续倘若该副本的LEO不小于Leader副本的HW时,它会被重新加入到ISR集合中。

这表明,ISR是一个动态调整的集合,而非静止不变的。

生产者写入的一条消息只有被ISR中的所有副本都接收到,才被视为“已提交”状态。由此可见,若ISR分区中有n个副本,那么该分区最多可以忍受n-1个副本崩溃而不丢失已提交的消息。

5. Unclean领导者选举(Unclean Leader Election)

Broker 端参数 unclean.leader.election.enable 控制是否允许 Unclean 领导者选举。当这个参数开启时,Leader副本所在的Broker宕机,且ISR集合为空,就会发生Unclean领导者选举。

  • 开启Unclean领导者选举可能会造成数据丢失,但是好处是,始终会选出新的分区Leader副本,不至于停止对外服务,因此提升了高可用性。
  • 禁止Unclean领导者选举的好处是维护了数据的一致性,避免了消息丢失,但牺牲了高可用性。

强烈建议不要开启Unclean领导者选举,避免数据丢失。

发布了8 篇原创文章 · 获赞 0 · 访问量 7280

おすすめ

転載: blog.csdn.net/fedorafrog/article/details/103988582