Skip to content

Microservices demo [ Reactive Spring + Eureka + Ribbon + Hystrix + Turbine + Kafka + Mongo + Couchbase + Cassandra + Graylog + Postgres + ActiveMQ + RabbitMQ + Redis + Vault + Netty + Tomcat + Zipkin + Zuul ]

Notifications You must be signed in to change notification settings

hadasbro/microservices

Repository files navigation

Microservices

This is just Microservices Architecture sample.

Chart

Services

Module Service Port Description
ActiveMQ Broker ActiveMQ 8161 ActiveMQ on Docker
Couchbase DB Couchbase 8091 Couchbase on Docker
Cassandra Cassandra 9042 Cassandra on Docker
Mongo DB Mongo DB 11017 MongoDB on Docker
Email Orders Service Spring Integration + PostgreSQL + Tomcat 6061 Email Orders service based on Spring Integration
Graylog Service Graylog + ElasticSearch + ActiveMQ + MongoDB 6065 Centralized log service
Kafka Docker Kafka on Docker 32770 Kafka and Zookeeper on Docker
Postgres DB Postgre SQL 5432 PostgreSQL's on Docker
Redis Docker Redis 6379 Redis on Docker
Stock Service Reactive Spring + Cassandra + Netty 6063 Manages stock, supplies, orders and email orders
Warehouse Service Spring REST + Kafka Consumer + Couchbase 6064 Stores and manages supplies, products, provides supplies to Stock Service
Supplier Service Spring REST + Kafka Producer + MongoDB 6062 Handles supply-orders from Stock Service and provide ordered products to Warehouse Service
Service Registry Eureka 8761, 8762, 8763 Eureka - Service Registry
Test Service Spring Boot 1999 Test service
Admin Spring Boot Admin 65505 App adminitration
Hystrix panel Spring Boot 8015 Hystrix Dashboard
Turbine Turbine 8902 SSE streams aggregation server
Zipkin Zipkin 9411 Investigate system's behaviour and traces

Useful things

Spring Boot Admin

It is a web application, used for managing and monitoring Spring Boot applications. You should see all services except Email Order Service (todo). Spring Boot Admin

see https://github.com/codecentric/spring-boot-admin

Hystrix dashboard

Monitoring hystrix metrics.

Hystrix dashboard

see https://github.com/Netflix-Skunkworks/hystrix-dashboard

Hystrix circuit breaker

Defending app from potentially failing method calls. Hystrix

see https://github.com/Netflix/Hystrix/wiki/How-it-Works

Spring integration

Open source framework for enterprise application integration. Integration

see https://spring.io/projects/spring-integration

GrayLog

App logs and monitoring. GrayLog

see https://www.graylog.org/

Zipkin

Distributed tracing system Zipkin

see https://zipkin.io/

Find out more

. Apache ActiveMQ - JMS client
. PostgreSQL - RDBMS
. Graylog - Centralized log management system
. Spring Integration - Integrating services with Spring
. MongoDB - NoSQL Database
. Elasticsearch - used as Storage system for GrayLog
. Apache Kafka - Message broker
. Apache Zookeeper - Synchronization service for kafka
. Docker - OS level virtualization
. Reactive Spring - Reactive programming in Spring
. Spring WebFlux - Reactive APIs
. Netty - Web Server
. Tomcat - Web Server
. Apache Cassandra - NoSQL Database
. Open Feign - Java HTTP client
. Zuul - L7 application gateway
. Redis - Cache server, NoSQL Database
. Couchbase - NoSQL Database
. Hibernate - ORM
. Zipkin - Distributed tracing system
. Spring actuator - App monitoring
. Spring Admin - Spring Projects Administration
. Netflix Eureka - Services Regisrty
. Hystrix + Tourbine - Circuit breakers + H-streams Aggregator
. Ribbon - Client's side Load balancer
. Google GSON - Serialization/deserialization library

TODO / what is missing

  1. Actuator / SBA for Email Orders Service
  2. docker-compose.yml for the project
  3. Spring Security, Validation & Unit tests
  4. Missing services: Vault(15), Service (13), API Gateway + Authorization Service

Author

Slawomir Hadas - Github

About

Microservices demo [ Reactive Spring + Eureka + Ribbon + Hystrix + Turbine + Kafka + Mongo + Couchbase + Cassandra + Graylog + Postgres + ActiveMQ + RabbitMQ + Redis + Vault + Netty + Tomcat + Zipkin + Zuul ]

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages