Skip to content

findepi/azouk-libraries

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 

Repository files navigation

Azouk Libraries

Azouk libraries contain:

  • Multiplexer
  • distributed Logging component

Multiplexer

Multiplexer is short for Azouk Enterprise Message Bus. It consists of

  • server that acts as a service broker,
  • client library,
  • abstract classes for writing Multiplexer-based backends and services and provides fast, robust, fault-tolerant, asynchronous communication in distributed environment.

Both client library and backend classes are available in

  • C++
  • Python
  • Java (for Java client & server contact the project owners - they're ready but not yet released)

The communication format leverages Google Protocol Buffers. For gluing C++ and Python it uses Boost.Python. Asynchronous communication is handled with Asio.

Azouk Logging

Logging library is a rich-format logging based on Google Protocol Buffers. It consists of

  • client library that formats and renders log entries on both stderr and binary logging stream suitable for machine parsing;
    • fast
    • no overhead when log is not written
    • for both
      • C++
      • Python
  • log streamer that packs log entries from binary logging stream and sends them using Multiplexer
  • log collector that holds the log entries in memory and allows to search them.

C++ logging API leverages Boost.Preprocessor meta programming library. For gluing C++ and Python it uses Boost.Python.

Altough it's designed for general purpose, it serves well, and so we use it, to monitor and log events in a django-powered app.

Authors

Multiplexer and Azouk Logging were end-to-end designed and implemented by Piotr Findeisen as a part of his work for Azouk. Krzysztof Kulewski participated in the architecture overview.

Java client, Java server were designed and implemented ground up by Kasia Findeisen and Piotr Findeisen. Pure-Python client (a work in progress) is modelled after Java version and developed by Piotr Findeisen.

Credits

Credits go to Azouk Network Ltd. for contributing the libraries to the Open Source community.