apache / apache/iggy

Implement synchronous SDK client

Open
#1,714 3 comments 0 reactions 0 assignees View on GitHub
sdk
Dominant language
Rust
Stars
4.9k
Forks
432
Avg merge
2d 10h
Merged PRs (30d)
173

Description

There might be specific use cases, when making use of the synchronous client yields a better performance than with the async one.
For example, when building the ultra-low latency system, with threads pinned to the cores - the async client is pretty much useless in such a design and will result in worse performance than the sync one.

The sync client could be kept behind a specific feature flag, which would drop the existing Tokio reference, and use the standard TCP network library (along with the blocking client for `reqwest` crate). The existing `Client` trait could have all the methods defined as the synchronous ones. The other solution, would be to introduce some sort of `SyncClient` trait, as an addition to the already existing asynchronous version.

It would also be beneficial, to provide the similar high-level builders for `IggyProducer`, IggyConsumer` etc. to provide a great developer experience.

This is certainly a big feature, and it's worth discussing how to best tackle this.

Contributor guide

Open the contributing guide

Research direction

Start by reading the existing Client trait and asynchronous client to understand the current SDK surface and Tokio dependency. Compare the proposed feature-flagged synchronous client using standard TCP and reqwest's blocking client, then determine the scope of synchronous high-level builders; done requires an agreed design and a complete synchronous API.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
backend-api-design, networking
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.