Kafka
Apache Kafka is a distributed event streaming platform capable of handling trillions of events per day, serving as a high-throughput, fault-tolerant, and scalab...
Apache Kafkaは、リアルタイムのデータパイプラインとストリーミングアプリケーションを構築するために設計された分散イベントストリーミングプラットフォームです。これは、非常にスケーラブルで、耐障害性があり、耐久性の高いパブリッシュ/サブスクライブメッセージングシステムとして機能します。コアアーキテクチャは、レコードのカテゴリまたはフィードである「topics」を中心に展開します。Producersはtopicsにレコードをパブリッシュし、Consumersはこれらのレコードを読むためにtopicsをサブスクライブします。クラスタを形成するKafka brokersは、これらのレコードを耐久性をもって保存し、Consumersに提供します。レコードはtopics内のpartitionsに編成され、並列処理と高いスループットを可能にします。各partitionは、レコードの順序付けられた不変シーケンスです。brokers間のレプリケーションは耐障害性を保証します。brokerが失敗した場合、別のレプリカが引き継ぐことができます。Kafkaの耐久性は、レコードをディスクに書き込むことから得られます。主要なコンポーネントには、Producers、Consumers、Brokers、およびZooKeeper(クラスタ調整用ですが、新しいバージョンではKRaftに移行中です)が含まれます。トレードオフには、特にZooKeeperの依存関係に関して、分散クラスタを管理する運用上の複雑さが含まれ、慎重な容量計画が必要です。しかし、比類のないスループット、低レイテンシ、および強力な耐久性保証を提供するため、大量のデータストリームに最適です。
graph LR
Center["Kafka"]:::main
Rel_ipfs["ipfs"]:::related -.-> Center
click Rel_ipfs "/terms/ipfs"
Rel_file_systems["file-systems"]:::related -.-> Center
click Rel_file_systems "/terms/file-systems"
Rel_distributed_ledger_technology_dlt["distributed-ledger-technology-dlt"]:::related -.-> Center
click Rel_distributed_ledger_technology_dlt "/terms/distributed-ledger-technology-dlt"
classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
linkStyle default stroke:#4b5563,stroke-width:2px;
🧠 理解度チェック
🧒 5歳でもわかるように説明
デジタル情報の、非常に整理された超高速な郵便サービスのようなものです。メッセージ(イベント)は特定のメールボックス(topics)に送信され、送信者が受信者を知る必要なしに、そのメールボックスを購読している誰でもピックアップできます。
🤓 Expert Deep Dive
Kafkaのアーキテクチャは、分散コミットログという概念を中心に構築されています。トピックはパーティションに分割され、各パーティションはメッセージの順序付けられたシーケンスです。ブローカーはこれらのパーティションを格納し、レプリケーションによって耐障害性を確保しており、パーティション管理にはリーダー・フォロワーのダイナミクスが用いられます。プロデューサーはパーティションのリーダーにメッセージを書き込み、フォロワーは非同期にデータをレプリケートします。コンシューマーは各パーティション内で自身のオフセットを維持し、進捗状況を独立して追跡できます。この疎結合な性質により、高いスループットとスケーラビリティが実現されます。トレードオフとしては、コンシューマーが注意深く処理しない場合にパーティション内でのメッセージの順序が入れ替わる可能性や、障害発生時やスケーリングイベント時のコンシューマーグループのリバランス管理の複雑さが挙げられます。ZooKeeperは、これまでメタデータ管理、リーダー選出、ブローカー登録に不可欠でしたが、KRaftプロトコルはこの依存関係を排除することを目指しています。脆弱性としては、ブローカー間の通信のセキュリティ不備、不十分なアクセス制御によるデータ漏洩、ブローカーやZooKeeperを標的としたサービス拒否攻撃の可能性などが考えられます。