Giter Site home page Giter Site logo

jacekkorta / microservices-training-ground Goto Github PK

View Code? Open in Web Editor NEW
0.0 2.0 0.0 646 KB

Microservices training environment. Includes few microservices created in Go and Python

License: MIT License

docker docker-compose golang microservices python redis

microservices-training-ground's Introduction

microservices-training-ground

Project Status: WIP – Initial development is in progress, but there has not yet been a stable, usable release suitable for the public.

Description

The main goal of this project is to create an environment for learning and tests which includes the group of microservices. To make this project more “real” I developed a group of microservices which main task is to observe stackoverflow topics and download interesting questions. The project is intentionally overcomplicated.

For each observed stackoverflow topic/tag one instance of go.stack-app is being run. Grabbed questions are moved to RabbitMq. Because the services can grab the same message (questions can be overlapped between different tags), questions are deduplicated in the next step.

Service py.deduplicator is responsible for deduplication. This service reads messages from the queue, checks their id in RedisDB and if the id exists the message is dropped. Otherwise the message is sent to exchange for deduplicated messages and the ID of message is saved in DB

In the third step, the questions are being read, analyzed and tagged. They are put to the exchange with the routing key which depends on the question tag received in this step. Service go.message.tagger is responsible for this step.

As a final step, messages with additional information are sent by go.discord-publisher to the user.

Diagram: mtg diagram

Sub services

  1. go.stack-questions
  2. py.deduplicator
  3. go.message-tagger
  4. go.discord-publisher

How to run?

First download the main repository:

git clone [email protected]:JacekKorta/microservices-training-ground.git
cd microservices-training-ground

Then update/init all submodules

git submodule update --init

Setup all sub services. See each services's readme file for more information.

Finally you can start:

docker-compose up

Warning!

The configuration is not production ready.

microservices-training-ground's People

Contributors

jacekkorta avatar

Watchers

James Cloos avatar  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.