Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/rahul-dhar-e5609/distributed-monitoring-system
A distributed system built in Golang that uses the RabbitMQ's exchanges for communicating data and messages between various consumer applications that consume the data published by the various generators. The data is coordinated by a coordinator program that can be scaled up easily depending upon the traffic. These coordinators use an event-based design to communicate the data generated to the consumers that show interest in the data by subscribing to them using event listeners.
https://github.com/rahul-dhar-e5609/distributed-monitoring-system
concurrent-programming distributed distributed-systems event-bus event-driven event-listener eventbus go golang monitoring-system rabbitmq
Last synced: about 2 months ago
JSON representation
A distributed system built in Golang that uses the RabbitMQ's exchanges for communicating data and messages between various consumer applications that consume the data published by the various generators. The data is coordinated by a coordinator program that can be scaled up easily depending upon the traffic. These coordinators use an event-based design to communicate the data generated to the consumers that show interest in the data by subscribing to them using event listeners.
- Host: GitHub
- URL: https://github.com/rahul-dhar-e5609/distributed-monitoring-system
- Owner: rahul-dhar-e5609
- Created: 2019-02-25T17:09:53.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2021-02-23T11:42:31.000Z (almost 4 years ago)
- Last Synced: 2024-06-21T18:08:47.748Z (6 months ago)
- Topics: concurrent-programming, distributed, distributed-systems, event-bus, event-driven, event-listener, eventbus, go, golang, monitoring-system, rabbitmq
- Language: Go
- Homepage:
- Size: 3.76 MB
- Stars: 7
- Watchers: 2
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# Distributed Monitoring System
[![Go Report Card](https://goreportcard.com/badge/github.com/IAmRDhar/distributed-monitoring-system)](https://goreportcard.com/report/github.com/IAmRDhar/distributed-monitoring-system)
> A distributed system in Go using RabbitMQ Exchanges and Queues for monitoring the communications among data generators, data coordinators and data consumers.
The queue discovery was initially a direct exchange. The sensors published two kinds of messages.
- **Data message** - Contains the name, timestamp and the value of the reading that it took. This data is published onto a route that is created by the sensor at runtime and is not discovered before that. To address that there is another message that is published onto a known route and publishes the routing key of the data queue.
- **Route message** - It messages the routing key onto a known route. Since this route is well known, it becomes easier for the downstream coordinators to know about the data routes.
The data routes are published to the default exchange, which is a direct exchange, that means only one consumer receives the message. This ensures no matter how many coordinators are active, the message broker guarantees that only one consumer gets the message at only one time.