Giter Site home page Giter Site logo

allegro / hermes Goto Github PK

View Code? Open in Web Editor NEW
808.0 33.0 209.0 14.15 MB

Fast and reliable message broker built on top of Kafka.

Home Page: http://hermes.allegro.tech

License: Other

Shell 0.03% Java 70.98% Groovy 13.79% JavaScript 0.02% HTML 0.01% Python 0.03% Dockerfile 0.05% TypeScript 10.80% Vue 4.28% SCSS 0.01%
hermes kafka pubsub messaging hacktoberfest

hermes's Introduction

Hermes

Build Status Documentation Status Maven Central

Hermes is an asynchronous message broker built on top of Kafka. We provide reliable, fault tolerant REST interface for message publishing and adaptive push mechanisms for message sending.

See our 10-minute getting started guide with Docker: Getting started

Visit our page: hermes.allegro.tech

See our full documentation: http://hermes-pubsub.readthedocs.org/en/latest/

If you have any question or idea regarding the project, please feel free to reach us out using GitHub discussions.

License

hermes is published under Apache License 2.0.

hermes's People

Contributors

adamdubiel avatar bgalek avatar chemicl avatar cristaloleg avatar dankraw avatar diewa avatar druminski avatar dyspc avatar faderskd avatar jakubdyszkiewicz avatar jewertow avatar kacperb333 avatar krzysztofcybulski avatar mareckmareck avatar milenakrawczyk avatar moscicky avatar pbetkier avatar piotrrzysko avatar pjagielski avatar platan avatar pszymczyk avatar pwolaq avatar robert-duda avatar rzukow avatar sobelek avatar szczygiel-m avatar tmmi avatar trombka avatar wojciechsova avatar wojtkiewicz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

hermes's Issues

Retransmission dry-run

There should be a dry-run option in retransmission which just returns calculated offsets for each partition

Broker seems to be down

Going through the tutorial, interacting with groups/topics/subscriptions worked fine for me. At the last step of publishing though (the first step at port :8888), I'm met with an HTTP 500 error: {"message":"Broker seems to be down, cause: Failed to update metadata after 500 ms.","code":"INTERNAL_ERROR"}. However, trying to access :8888 by browser, it yields me a http://localhost:8888/status/health with content UP. Maybe this relates to Kafka settings like topic.metadata.refresh.interval.ms, which apparently had a default value of 600 * 1000 (i.e. 1200 times as much). I hadn't changed anything, so not sure why it's 500, though on localhost I'd expect this 500 ms should suffice... What might be a good way to debug this?

Output rate limiter - additional treshold

We need to add additional treshold in consumer rate limiter, so it can increase speed even if there is some percent of failures - it's too easy to starve consumer now.

image allegro/hermes-consumers not found

Following the guide:

./run.sh
Starting docker_kafka_1...
Creating docker_consumers_1...
Pulling image allegro/hermes-consumers:latest...
Pulling repository allegro/hermes-consumers
[...]
Error: image allegro/hermes-consumers:latest not found

I also had to remove the 'distZip' parameter from build.sh to prevent another error (on there being no such task)...

As the error stated though, I can't find hermes-related images in allegro's Docker repository.

I noticed there were already local Dockerfiles that corresponded to the ones it can't find online, so I tried building images using those:

$ docker build Dockerfile-frontend
FATA[0000] The Dockerfile (Dockerfile) must be within the build context (Dockerfile-frontend) 

I must concede I'm relatively new to Docker, but I'm not sure if I'm missing an easy way to address these issues... I'd appreciate any help! :)

Problem with consumer restart after retransmission

There is a problem with consumer being spawned too many times after restart for partition that has been retransmitted recently. This may be connected with retransmission marker not being cleaned up from ZK sometimes.

Extract MongoLogRepository to external module

TODO:

  • Extract MongoLogRepository to external module
  • add posibility to register multiple implementations of LogRepository

AC:
should be possible to use multiple implementations of LogRepository simultaneously

single message read with avro

Rest operation for single message read should also read messages in avro format. Avro messages should be converted to json for that operation.

Thread pools queues monitoring

When using thread pool it is always difficult to set correct number of threads.

To make it easier we want to measure a time each task is waiting for execution in thread pool, and store it together with other metrics in graphite.

First pool we want to measure this way is jetty pool in consumers module.

Additional metrics for producer with ack=ALL

Hermes uses same metric to meter latency for producer with ack=-1 and ack=1. Due to that we have one chart with latency for 99 precentile which show us always value 65ms. We could visualize latency more precisely by separating latency metric for both producers.

AC:

  • additional metric for producer latency with ack=-1
  • two charts with latency. First for ack = 1, second for ack=-1

Avro support

AC:

  • On every topic I can choose json or avro serialization
  • Hermes frontend accepts data in both avro and json
  • Hermes subscriber transforms all data to json
  • avro schemas are stored for all topics that use avro

statsd support

I would like to report stats to statsd to get overview of system behavior.

empty subscriptions

When I do some GET operation on non existing subscription then it will be created. Later I can't delete it via DELETE operation.

Travis

What about Travis or other CI integration?

New offset commiting mechanism with lag raporting

Current offset commiting mechanism in extreme cases (quick output rate decrease) might lead to situations, when we commit events that might have not been sent. If sender is be okay - this is fine, but in case of any sender bugs, we will acknowledge unsent event.

This change might lead to situation, when lag is growing, as we don't commit messages. There should be some graphite metric (and log message) that we can observe and react.

Delete of subscription doesn't fully work

Hermes doesn't remove metrics node under subscription node. Therefore subscription node is not removed and we have empty subscription. Concerns 0.7.6 version of hermes.

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.