Skip to content

Latest commit

 

History

History
33 lines (24 loc) · 2.25 KB

arch-notes.md

File metadata and controls

33 lines (24 loc) · 2.25 KB

Library architecture notes

The C# Quix Streams library is organized in 3 main layers:


   ┌───────────────────────────┐
   │      Streaming layer      │    /QuixStreams.Streaming
   └─────────────┬─────────────┘
                 │
                 │
   ┌─────────────▼─────────────┐
   │      Telemetry layer      │    /QuixStreams.Telemetry
   └─────────────┬─────────────┘
                 │
                 │
   ┌─────────────▼─────────────┐
   │   Kafka Transport layer   │    /QuixStreams.Kafka.Transport
   ├───────────────────────────┤
   │    Kafka wrapper layer    │    /QuixStreams.Kafka
   └───────────────────────────┘

Each layer has his own responsibilities:

  • Streaming layer: This is the user facing layer of the library. It includes all the syntax sugar needed to have a pleasant experience with the library.

  • Telemetry layer: This layer implements the Codecs to ser/des the Telemetry messages of Quix Streams protocol. This includes time-series and non time-series messages, stream metadata, stream properties messages, parameters definitions, as well as creating the Stream context scopes. The layer also implements a Stream Pipeline system to concatenate different components that can be used to implement complex low-level Telemetry services.

  • Transport layer: This layer is responsible for handling communication with the kafka broker. It introduces additional features to ease the use of Kafka, improves on some of the broker's limitations and contains workarounds to some known issues. The library relies on Confluent .NET Client for Apache Kafka.

For more information and general questions about the architecture of the library you can join to our official Slack channel.