Replies: 2 comments 4 replies
-
How it's going with the design. @egaxhaj-figure, @i-norden i propose to make an update to ADR-038. Can anyone start a draft PR? |
Beta Was this translation helpful? Give feedback.
4 replies
-
I would love to see a draft PR for the ADR-038 update specifying the architecture design:
@i-norden , @egaxhaj-figure - are you going to handle the ADR update? I think that will be the best way to discuss the design more in detail. |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
@egaxhaj-figure, @iramiller, and I had a meeting today to discuss the Kafka streaming service plugin for ADR-038
The primary take aways from this meeting are:
@egaxhaj-figure is going to begin work on a Kafka plugin that satisfies the ADR-038 streaming service interface, this work will be based off of this branch https://github.com/i-norden/cosmos-sdk/tree/plugin_arch. This service will perform "bulk streaming" of ABCI messages and their resultant state changes, with minimal processing other than the delineation necessary to maintain the grouping of state changes to the ABCI requests that caused them and the ABCI responses they affected. This is similar to the delineation used in the file streaming service, but the exact format is TBD and hammering out the details of that format (aka #10337) is one of the purposes of this discussion thread.
Specific to Kafka, in addition to the format of the data itself, there is the question of how many topics and/or partitions to publish to. We need to maintain proper ordering of our data so our topic(s) will only use a single partition. We could publish each type of ABCI grouping (req + state changes + res) to its own topic (
BeginBlock
,EndBlock
,DeliverTx
). ForBeginBlock
andEndBlock
this doesn't complicate things since there is only one req/res cycle per block and so the Kafka record offset would correspond to the blockheight. However withDeliverTx
since there is an indeterminate/variable number ofDeliverTx
messages per block we would need additional delineation to maintain proper grouping of a set ofDeliverTx
records and their ordering relative to theBeginBlock
andEndBlock
records. Alternatively, we could write all the data out to a single topic.For many systems, further decomposition of this "bulk stream" into more granular Kafka topics will be desired. To this end, @iramiller is specing out an auxiliary service for this purpose. This is handled outside of the SDK because 1) we want to minimize backpressure on the regular processes of the Tendermint/Cosmos blockchain+application and 2) this decomposition will be application/system specific. This would fall into a separate ADR, or outside the scope of the SDK altogether.
Beta Was this translation helpful? Give feedback.
All reactions