クイック・スタート・カフカのことでhttps://www.cnblogs.com/tree1123/p/11150927.html
カフカは、基本的な展開、使用することを学ぶことができますが、彼と他のメッセージングミドルウェアは、それがどのような違いを生むだろうか?
などカフカの言葉、バージョンの基本的な原理は、種類の方法がありますか?終わり、それは何でカフカ?
、カフカのプロフィール
2011年に、オープンソースはLinkIn、2017年11月1日1.0リリース2018年7月30日2.0リリース
チャートの公式サイトを参照してください。
Kafka®配管とリアルタイムデータストリーミングアプリケーションを構築するために使用されます。それは、スケーラビリティ、フォールトトレランス、速いのレベルを持っており、数千の企業に生産に入ります。
カフカ公式サイトの最新の定義:ApacheのKafka®はIS 分散ストリーミングプラットフォーム
これは、ストリーミングプラットフォームを配布されています。
はじめに:
三つの特徴:
- 公開したレコードのストリームに加入し、メッセージキューまたはエンタープライズメッセージングシステムに似ています。
- フォールトトレラント耐久性のある方法で、記録の保管・ストリーム。
- 彼らが発生すると、プロセスは、レコードのストリーム。
メッセージの永続性ストリーム処理
アプリケーションの二つのタイプ:
確実にシステムやアプリケーション間でデータを取得し、リアルタイムのストリーミングデータパイプラインの構築
データのストリームに変換または反応のリアルタイムストリーミングアプリケーションの構築
リアルタイムのストリーミングリアルタイムストリーミングデータパイプラインアプリケーション
いくつかの概念
カフカは、複数のデータセンターにまたがることができ、1つまたは複数のサーバ上のクラスタとして実行されます。
カフカクラスタ店のストリーム 記録 と呼ばれるカテゴリ内の トピック。
各レコードは、キー、値、およびタイムスタンプで構成されてい
クラスタトピックレコード
4つのコアAPI
- プロデューサーのAPIは、 アプリケーションが1つまたは複数のカフカのトピックにレコードのストリームを公開することができます。
- 消費者のAPIは、 アプリケーションが1つまたは複数のトピックをサブスクライブし、それらに生産されるレコードのストリームを処理することができます。
- ストリームAPIは、 アプリケーションとして作用することを可能にする ストリームプロセッサ有効入力は、出力ストリームにストリームを変換し、一つ以上のトピックからの入力ストリームを消費し、一つ以上の出力トピックへの出力ストリームを生成します。
- コネクタのAPIは、 既存のアプリケーションやデータシステムへのカフカのトピックを接続し、再利用可能な生産者や消費者を構築し、実行することができます。例えば、リレーショナルデータベースへの接続は、テーブルへのすべての変更をキャプチャすることがあります。
プロデューサーAPIの 消費者のAPI ストリームAPIコネクタのAPI
クライアントサーバプロトコルは、TCPを介して複数の言語をサポートしています
テーマとログ
テーマはゼロ、一つ以上の消費者がそのデータを書き込むために購読することができます
各トピックについて、カフカのクラスタは、ログパーティションを維持します
各パーティションには、継続的にログ構造の提出に取り付けられたレコードの順序付き、不変のシーケンスです。
各パーティションを記録することと呼び割り当てられるオフセット一意のパーティション内の各レコードを識別するシーケンスID番号を、。
Kafka集群持久地保留所有已发布的记录 - 无论它们是否已被消耗 - 使用可配置的保留期。可以配置这个时间。
Kafka的性能在数据大小方面实际上是恒定的,因此长时间存储数据不是问题。
每个消费者保留的唯一元数据是该消费者在日志中的偏移或位置。
这种偏移由消费者控制:通常消费者在读取记录时会线性地提高其偏移量,但事实上,由于消费者控制位置,它可以按照自己喜欢的任何顺序消费记录。例如,消费者可以重置为较旧的偏移量以重新处理过去的数据,或者跳到最近的记录并从“现在”开始消费。
这使得消费者特别容易使用。
生产者:
生产者将数据发布到他们选择的主题。
为了负载均衡,可以选择多个分区。
消费者:
消费者组
传统的消息队列 发布订阅 都有弊端
队列可以扩展但不是多用户,发布订阅每条消费发给每个消费者,无法扩展。
但是kafka这个模式 解决了这些问题
kafka确保使用者是该分区的唯一读者并按顺序使用数据,由于有许多分区,这仍然可以
平衡许多消费者实例的负载。
作为存储系统
作为流处理系统
二、常见使用
消息
Kafka可以替代更传统的消息代理。消息代理的使用有多种原因(将处理与数据生成器分离,缓冲未处理的消息等)。与大多数消息传递系统相比,Kafka具有更好的吞吐量,内置分区,复制和容错功能,这使其成为大规模消息处理应用程序的理想解决方案。
根据我们的经验,消息传递的使用通常相对较低,但可能需要较低的端到端延迟,并且通常取决于Kafka提供的强大的耐用性保证。
在这个领域,Kafka可与传统的消息传递系统(如ActiveMQ或 RabbitMQ)相媲美。
网站活动跟踪
站点活动(页面查看,搜索或用户可能采取的其他操作)发布到中心主题,每个活动类型包含一个主题。实时处理,实时监控以及加载到Hadoop或离线数据仓库系统以进行离线处理和报告。
度量
Kafka通常用于运营监控数据。
日志聚合
许多人使用Kafka作为日志聚合解决方案的替代品。日志聚合通常从服务器收集物理日志文件,并将它们放在中央位置(可能是文件服务器或HDFS)进行处理。Kafka抽象出文件的细节,并将日志或事件数据更清晰地抽象为消息流。
流处理
从0.10.0.0开始,这是一个轻量级但功能强大的流处理库,名为Kafka Streams
三、官方文档-核心机制
http://kafka.apache.org/documentation/
简介 使用 快速入门 都已经学习过了
生态:这里有一些kafka的生态,各种Connector 可以直接连接数据库 es等等 还可以连接其他的流处理 还有各种管理工具
confluent公司 专门做kafka的生态
https://cwiki.apache.org/confluence/display/KAFKA/Ecosystem
kafka connect stream management
kafka考虑的几个问题:
吞吐量: 用到了page cache 并不是硬盘读写
消息持久化: 这个还是靠他独特的offset设计
负载均衡:分区副本机制
由于应用 零拷贝技术 客户端应用epoll 所以kafka部署在linux上性能更高。
消息:kafka的消息由 key value timestamp组成 消息头里定义了一些压缩 版本号的信息
crc 版本号 属性 时间戳 长度 key长度 key value长度 value
用的是二进制 不用java类
topic和partition:
这是kafka最核心,也是最重要的机制,这个机制让他区别于其他。
offset是指某一个分区的偏移量。
topic partition offset 这三个唯一确定一条消息。
生产者的offset其实就是最新的offset。
消费者的offset是他自己维护的,他可以选择分区最开始,最新,也可以记住他消费到哪了。
パーティションの数よりも大きい消費者は、消費者に空があるでしょう。パーティションの数よりも少ない消費者は、バランスの取れた消費されます。
カフカのデザインがパーティション上にあるので、同時許可されていないパーティションの数、廃棄物を超えない消費者の数そう。
消費者が複数のパーティションからデータを読み込む場合は、データ間の順序を保証するものではありません、カフカが唯一の確保パーティション上のデータが順序付けられていることが、複数のパーティション、あなたは異なるものになります読ん順序に従って。
消費者、ブローカーを減らし、パーティションはリバランスにつながるので、対応するパーティションのリバランス消費者の後に変化します。
消費者の異なるグループに対する消費者のグループは、同時にニュースのパーティションを消費することができます。
レプリカ
これは、サーバーがハングアップしないようにすることです。
二つのカテゴリーリーダーレプリカに分け、レプリカに従ってください
唯一のリーダーレプリカはクライアントに応答します。
リーダーレプリカブローカーのダウンタイムが配置されたら、我々は新しいリーダーを選出します。
カフカパーティションの複数のレプリカが同じブローカに割り当てられませんことを確認してください。
リアルタイム同期のリーダーに従ってください。
ISR
同期レプリカの同期のリーダーレプリカレプリカセットを維持
ISRの通常、すべてのレプリカが、応答が遅すぎる場合は、ISRから追い出されます。追いつくために一緒に来た後。
ISR少なくとも1つのレプリカが生きています。
すべてのレプリカのISRがメッセージを受信している、メッセージがコミットされた状態です。
よりリアルタイムコンピューティング関連の技術のブログ、歓迎の注意がリアルタイムストリーミングを計算します