Git Product home page Git Product logo

ks-tributary's Introduction

  • Badges

Conventional Commits

  • Build

Drone:

Build Status

CodeCov.io:

codecov

KS-Tributary; A Kafka Streams Reference App

Realistic implementation of a full real Kafka Streams application and stream processing logic.

How to run

Integration tests require a running docker daemon.

Intellij - use provided run targets to run with or without integration tests

Maven

Disable integration tests

mvn clean verify -DskipITs

How to build

Features

Stream Processing

Generic

  • Realtime delta calculation (e.g. produce derived delta messages from database CDC full state messages)
  • Cached system configuration lookup with realtime updates
  • Realtime fan out of topic data onto communication channels like web sockets
  • Dynamic Avro wrapper system to extend Avro objects with custom code without modifying generated code, integrated with Avro Serdes

Finance

  • Realtime calculation of windows
  • Three topologies
    • Financial snap set precomputation
    • Simpler approach that's centralised performance wise
      • More sophisticated fully distributed
      • Custom state store intermediate level demonstration
  • Simple high low bar calculation
  • Back loading of data from previous buckets

Chat

  • Transcript generation

Unit testing

  • Demonstration of Time model decoupling for test
  • Demonstration of AssertJ powerful assertions
    • here
    • here

Integration testing

  • Model hydration using human readable data from JavaFaker[] project
    • Deterministic generation of series of random data, useful for larger integration tests
  • TestContainers for Integration Testing with real Kafka brokers.
  • CI service integration: Travis, CircleCI, Drone (drone not working with Docker in Docker (i.e. TestContainers not working))
  • JSR Money integration
  • Avro message sizing analysis - i.e. how big is my data when it's bin packed and compressed? Compared with Gzipped vs Zstd vs Json?
  • Demonstration of asynchronous testing using Awaitility[]

Software Structure

  • Guice (dynamic) and Dagger (static) dependency injection examples
  • Dagger
  • Java Money library demonstration
  • Java Units of Measure library demonstration (statically typed Scientific units combination library)
  • Lombok use (make Java more tolerable)
  • Avro IDL vs AVSC model generation demonstration

Features on their way...

Stream Processing

  • Realtime out of order recalculation of data aggregation in state dependent buckets
  • Massive scale question and answer quiz show of just in time answer discovery
    • Massive skew avoidance techniques
  • Compound key query demonstration / data demoralisation (e.g. Invoice reconstruction from Orders and Order Items)
  • Yearly aggregator by date (think April 5th Financial years)
    • Normal window computations can only run against fixed size windows (e.g. not calendar dates)
    • Extending to also do monthly dates is an easy modification

Software Structure

  • External Interactive Query example on Qurkus[] and GraalVM[]

[0.7] Dagger

[0.6] 0.5 0.4 0.3 0.2 [0.1]

  • Three topologies
    • Financial snap set precomputation

    • Simpler approach that's centralised performance wise

      • More sophisticated fully distributed
        • Custom state store intermediate level demonstration
  • Unit testing coverage
    • Guice test wiring
  • Separated Integration testing
    • Kafka ContainerTests
  • Avro message model sizing analysis
    • Raw bin-packed vs GZipped vs Json
  • Java Science Units and Quantities use

Development

Building

  • Requires Lombok plugin for your IDE

Contributing

Submit a PR for review :)

https://www.conventionalcommits.org/en/v1.0.0/ the Angular convention

ks-tributary's People

Contributors

astubbs avatar dependabot[bot] avatar

Stargazers

Jonathan Wylliem avatar Fabio Dias Rollo avatar Radu Cirstoiu avatar Gilles Philippart avatar blossomc avatar  avatar Akhlaq Malik avatar Florian Hussonnois avatar Marko avatar Matt Mangia avatar

Watchers

 avatar Akhlaq Malik avatar James Cloos avatar Hans-Peter Grahsl avatar  avatar Ava Naeini avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.