ooooo        ooooo ooooo      ooo ooooo     ooo ooooooo  ooooo   .oooooo.   ooooooooo.   
     `888'        `888' `888b.     `8' `888'     `8'  `8888    d8'   d8P'  `Y8b  `888   `Y88. 
      888          888   8 `88b.    8   888       8     Y888..8P    888      888  888   .d88' 
      888          888   8   `88b.  8   888       8      `8888'     888      888  888ooo88P'  
      888          888   8     `88b.8   888       8     .8PY888.    888      888  888`88b.    
      888       o  888   8       `888   `88.    .8'    d8'  `888b   `88b    d88'  888  `88b.  
     o888ooooood8 o888o o8o        `8     `YbodP'    o888o  o88888o  `Y8bood8P'  o888o  o888o 

Distributed systems Frameworks


  • Micro (License: Apache-2.0)
    Micro - github
    Micro is a microservice toolkit. Its purpose is to simplify distributed systems development. Go Micro abstracts way the details of distributed systems. Here are the main features:
    • Service Discovery - Applications are automatically registered with service discovery so they can find each other.
    • Load Balancing - Smart client side load balancing is used to balance requests between instances of a service.
    • Synchronous Communication - Request-response is provided as a bidirectional streaming transport layer.
    • Asynchronous Communication - Microservices should promote an event driven architecture. Publish and Subscribe semantics are built in.
    • Message Encoding - Micro services can encode requests in a number of encoding formats and seamlessly decode based on the Content-Type header.
    • RPC Client/Server - The client and server leverage the above features and provide a clean simple interface for building microservices.
  • Micro DOC
    Micro - a microservices toolkit
    Micro - Past, Present and Future

Go kit

  • Go kit (License: MIT)
    Go kit - github
    Go kit is a distributed programming toolkit for building microservices in large organizations. We solve common problems in distributed systems, so you can focus on your business logic.


  • memberlist - Golang package for gossip based membership and failure detection (License: MPL-2.0)
    memberlist is a Go library that manages cluster membership and member failure detection using a gossip based protocol. The use cases for such a library are far-reaching: all distributed systems require membership, and memberlist is a re-usable solution to managing cluster membership and node failure detection. memberlist is eventually consistent but converges quickly on average. The speed at which it converges can be heavily tuned via various knobs on the protocol. Node failures are detected and network partitions are partially tolerated by attempting to communicate to potentially dead nodes through multiple routes.



  • beehive
    Distributed Programming Framework in GoLang