apache / apache/pulsar-client-cpp

Key-based batching and hashingScheme parameter for Python client

Open
#83 5 comments 6 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
71
Forks
90
Avg merge
2h 33m
Merged PRs (30d)
3

Description

**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

Contributor guide

Open the contributing guide

Research direction

Start by tracing how the Python client currently handles producer batching and how producer creation exposes configuration. Compare the hashing schemes used by the Python, Java, and Go clients. Done means Python supports key-based batching and producers can select a hashing scheme that produces compatible routing across these clients.

Written by the indexing model from the issue text.

Assessment

Tech stack
go, java, kafka, python
Domain
distributed-systems
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.