web-dev-qa-db-ja.com

Apache Pulsarに対するKafkaの長所と短所は何ですか

Yahooは、Pub-subメッセージングシステムであるPulsarを開発し、オープンソースにしました。その現在のApacheのインキュベーションプロジェクト。 Kafkaも同じ目的で使用されるため。パルサー上のKafkaの大きなプラスとマイナスのポイントを知りたい。

45
Ajit Dongre

私は最近両方で少し遊んだが、ここに集めたものがある。

ニュートラル:

  • コミュニティ/ドキュメントなどでKafkaを勝ち取ろうとしていました。しかし、Kafkaについての質問への回答を簡単に見つけることができませんでした。レガシーAPI)。しかし、Pulsarのドキュメントは十分であり、開発者はSlack(hello @Matteo Merli :)に対して非常に反応がよく、内部に飛び込みたい場合は、基礎となる部分(Zookeeper、Bookkeeper)にも適切なドキュメントがあります。
  • Kafkaは高スループットを目指し、Pulsarは低レイテンシを目指しています。どちらも、それを制御するための設定を提供します。
  • 両方とも、いくつかの企業で実稼働対応であり、戦闘テスト済み

プロパルサー:

  • 私の経験から、APIは使いやすいです。 Kafkaでは、ブローカーは愚かであり、消費者は適切と思われるコミュニケーションを構築する仕事をしています。この柔軟性は、Kafkaのユーザーがピースをどのように合わせるかを理解しなければならないという代償を伴います。意図した利点は柔軟性の向上であると思いますが、PulsarはKafka Consumers APIを複製できたため(そしてほとんどコードはありません)、Pulsarのプロとして提供します。
  • マルチテナント(セキュリティ、分離...)、リソース管理(トピック調整、クォータ)、ジオレプリケーション
  • 特定のMessageIdをシークするなど、現在Kafkaにない機能がいくつかあります
  • パルサーは数百万のトピックにスケールしますが、KafkaはZookeeperでデータを構造化する方法によって制限されます
  • より簡単な展開。スタンドアロンのPulsarがローカルのZookeeperを起動しますが、個人的には構成がわかりやすいと感じました
  • 従来のScalaとJavaコードの混在に対して、Javaで記述されています。また、コードベースがきちんと整理されていて、理解しやすいことがわかりました。一部は、ZookeeperとBookkeeperに依存しているためです。ZookeeperとBookkeeperは、独自のドキュメント/コミュニティ/開発者などを備えた外部プロジェクトです(Apacheの基盤にもあり、Yahooからも提供されているため、うまく連携できます)。

Pro Kafka:

  • KafkaにはKafka St​​reamsのようなものが組み込まれています(これを使用したことはないので、同等のものがあるかどうかはわかりません)

また読む:

41
nha

Apache Kafkaはより成熟しており(以前から使用されていました)、より高いレベルのAPI(つまりKStreams)を備えています。成熟していますが、流動性と柔軟性が制限されています。つまり、githubで最大500のオープンPR

Apache Pulsarは、Apache Kafkaの設計決定を深く研究し、改良された設計と一連のエキサイティングな機能、つまりnamespacingトピックのアイデアを組み込み、ACLまたはクォータを許可しましたより良いmulti-tenancyのサポートを提供するために、名前空間レベルで適用されることは非常に奥深い良い考えのようです。 Pulsarの他のエキサイティングな機能は、geo-replicationと、キューイングとストリーミングの統合です。

トピックが永続的で、適度なレイテンシと高いスループットを備えたストリーミングプラットフォームが必要でした。最近、私たちはKafkaまたはPulsarのどちらを使用すべきかを評価し、@ nhaとは異なり、Apache Kafkaを支持しています。調査結果は次のとおりです。

パルサー-長所

  • 豊富な機能-持続/非持続トピック、マルチテナンシー、ACL、マルチDCレプリケーションなど.
  • completableFutures、Fluentインターフェイスなどを含む、より柔軟なクライアントAPI.
  • Javaクライアントコンポーネントはスレッドセーフです-消費者は異なるスレッドからのメッセージを確認できます

パルサー-短所

  • Javaクライアントにはjavadocがほとんどない
  • 小さなコミュニティ-現在8つのスタックオーバーフローの質問
  • bookKeeperに結び付けられたmessageIdコンセプト-連続した数字のシーケンスであるKafka offsetと比較して、消費者はトピックに自分自身を簡単に配置できません。
  • 読者はトピックの最後のメッセージを簡単に読むことができません。すべてのメッセージを最後まで読み飛ばす必要があります。
  • 取引なし
  • より高い運用の複雑さ-Zookeeper + Brokerノード+ BookKeeper-すべてクラスター化
  • 遅延が疑わしい-ブローカーノードとBookKeeperの間に余分なリモートコールが1つあります(Kafkaと比較して)

カフカ-長所

  • 非常に豊富で便利なjavadoc
  • カフカストリーム
  • 成熟した幅広いコミュニティ
  • 本番環境での操作が簡単-コンポーネントが少ない-ブローカーノードはストレージも提供します
  • トランザクション-トピック内のアトミックな読み取りと書き込み
  • オフセットは連続したシーケンスを形成します-消費者は簡単に最後のメッセージを探すことができます

カフカ-短所

  • コンシューマは異なるスレッドからのメッセージを確認できません
  • マルチテナンシーなし
  • 堅牢なマルチDCレプリケーションなし-(Confluent Enterpriseで提供)
8
Milos Gregor

ソース


トップレベルの地位を獲得するためのApache Software Foundationの最新プロジェクトであるPulsarは、別のASFプロジェクトであるKafkaと多くの比較を行っています。

Pulsarは、汎用ハードウェアで実行される非常にスケーラブルで低遅延のメッセージングプラットフォームです。トピックに対する単純なpub-subおよびキューセマンティクス、軽量な計算フレームワーク、サブスクライバーの自動カーソル管理、およびデータセンター間のレプリケーションを提供します。

一方、600人以上のユーザーを調査した2018 Apache Kafkaレポートでは、データパイプラインとメッセージングがテクノロジーの上位2つの用途であることがわかりました。マイクロサービスアーキテクチャの台頭により、使用が拡大していることがわかりました。

「2つのシステムの使用例には大きな重複がありますが、元の設計は非常に異なっていました」と、高速データプラットフォームを提供するスタートアップであるStreamlioを設立して以来、クリエーターの1人であるMatteo Merliは述べました。

Yahooは、複数のメッセージングシステムとそれらを展開する複数のチームに関する問題の解決策として、単一のマルチテナントシステムとしてPulsarを作成しました。

2016年にオープンソースとしてリリースされ、2017年6月にASFインキュベーターに入りました。約4年間、YahooのアプリケーションMail、Finance、Sports、Gemini AdsおよびSherpa、Yahooの分散Key-Valueサービスで使用されています。

ブログの投稿で、共同設立者のSijie Guoは、Pulsar対Kafkaを次のようにまとめています。

「Apache Pulsarは、高性能ストリーミング(Apache Kafkaが追求する)と柔軟な従来のキューイング(RabbitMQが追求する)を統合したメッセージングモデルとAPIに組み合わせています。 Pulsarは、統一されたAPIを使用して、ストリーミングとキューイングの両方に対して同じ高性能で1つのシステムを提供します。

Merli氏:「ストリーミングとキューイングには違いがあります。どちらか一方が必要なユースケースはたくさんありますが、ほとんどの人は異なるユースケースで両方を必要とします。」

2層アーキテクチャ2層設計は、Pulsarの鍵です、とMerliは言いました。メッセージを受信および配信するブローカーのステートレスレイヤーと、低レイテンシの耐久性のあるストレージを提供するブッキーと呼ばれるApache BookKeeperストレージノードのセットを備えたステートフル永続レイヤーがあります。

パルサーは、強力なデータ保証を持つという考えに基づいて構築されたとメルリ氏は語った。 Kafkaはそうではありませんでしたが、共有消費のために設計されました。また、Pulsarを使用すると、ユーザーはすべてのサブスクリプションがメッセージを消費した後でも、メッセージの保存期間を構成できます。

階層化されたアーキテクチャとセグメント中心のストレージには、主な利点があります。

ブローカーまたはストレージレイヤーを個別にスケーリングできます。ブローカーはステートレスであるため、トピックを他のブローカーにすばやく移動できます。これにより、ブローカー間でトラフィックのバランスをとる効率的な方法が開かれます。同じパーティションに複数のコンシューマーを配置でき、必要な数だけ追加できます。データはローカルに保存されないため、容量を拡張するときにパーティションデータをコピーする必要がなくなり、再バランスは不要です。パーティション化されたトピックが作成されると、Pulsarは消費者と生産者にとらわれない方法でデータを自動的にパーティション化します。

ブローカーは複数のBookKeeperノードにメッセージデータを送信します。複数のBookKeeperノードは、データを先行書き込みログに書き込み、コピーをメモリに保持します。ノードが確認応答を送信する前に、ログは安定したストレージに強制的に書き込まれます。これにより、電源が切れても保持されます。トピックパーティションはBookKeeperクラスター全体の合計容量まで拡張でき、ノードを追加するだけでクラスターを拡張できます。

インキュベーターに入ってから、Pulsarを使いやすくすることに重点が置かれています。

Pulsarのバージョン2.0が6月にリリースされました。これには、ユーザーがJavaまたはPythonで処理機能を記述できるようにするPulsar Functionsと呼ばれる「ストリームネイティブ」処理機能が含まれます。パイプライン。インタラクティブなSQLクエリ機能を備えたバージョン2.2が間もなくリリースされます。

Pulsarは、Java、C++、Python、WebSocketなどの複数の言語とプロトコルのバインディング、およびKafka互換のAPIを提供します。


参考資料:Apache Pulsar:それはKAFKAキラーですか?

Apache Pulsar:それはKAFKAキラーですか?Bhagwan s。Soni著enter image description here


KafkaよりもApache Pulsarを選択する理由は何ですか?

Apache Pulsarは、PubSubのエンタープライズエディションで、元々はYahooによって開発され、現在はApache Software Foundationによってサポートされています。 Apache Pulsarは、過去3年以上にわたって実稼働システムで稼働しており、安定性を証明しています。

Apache Pulsarは、Kafkaが提供するほぼすべての機能をカバーしていますが、名前は異なる場合があります。パルサーには多くの機能がありますが、Kafkaで区別するのに役立ついくつかの機能を強調したいと思います-

1} Apache Pulsarは、トピックに関する3種類のサブスクリプションを提供します。特定の時点で、データを消費するのは1人だけです。

2}各名前空間には1つ以上のトピックを含めることができます

3} Multitanencyの強力なサポート

4}複数のクラスターでのデータ複製

5}データ損失に対する強力なメッセージ耐久性サポート


4
Ram Ghadiyaram