apache / apache/pulsar-client-cpp

Key-based batching and hashingScheme parameter for Python client

オープン
#83 コメント 5 件 リアクション 6 件 担当者 0 名 GitHub で見る
主要言語
C++
スター
71
フォーク
90
平均マージ
2時間 33分
マージ済み PR(30日)
3

説明

**Short intro**
We're running a platform that's effectively just a bunch of microservices written in Python, Java and Go which are communicating through Kafka. Currently we're considering moving from Kafka to Pulsar.
However, one of the main features we need is key-based message routing for solving concurrency problems. Pulsar has that option with KeyShared subscription mode.

**The problem**
In Python, KeyShared subscription works only if producer disables batching. I ran some tests in my local environment and disabling batching results in high decrease of throughput (~25k/s with batching vs ~9k/s without).

**Features that would've solved the problem**
- Key-based batching for Python client
- HashingScheme parameter when creating producer so all of our services (Java, Python and Go) could have the same hashing scheme

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

まず、現在の Python クライアントが producer の batching をどのように処理しているか、また producer の作成時に設定がどのように公開されるかを追跡します。Python、Java、Go クライアントで使用されているハッシュ方式を比較します。Python がキーに基づく batching をサポートし、producer がこれらのクライアント間で互換性のあるルーティングを生成するハッシュ方式を選択できれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
go, java, kafka, python
領域
distributed-systems
issue の種類
機能追加
難易度
5/5
見積もり時間
1週間以上
活発さ
停滞
明瞭さ
おおむね明確
初心者へのやさしさ
30/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。