Distributed systems Frameworks
Micro
- 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
- 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.
Kite
-
Kite - Micro-service framework in Go
Kite - Micro-service framewor - github
Kite is both the name of the framework and the micro-service that is written by using this framework. Basically, Kite is a RPC server as well as a client. It connects to other kites and peers to communicate with each other. They can discover other kites using a service called Kontrol, and communicate with them bidirectionaly. The communication protocol uses a WebSocket (or XHR) as transport in order to allow web applications to connect directly to kites. Kites can talk with each other by sending dnode messages over a socket session. If the client knows the URL of the server kite it can connect to it directly. If the URL is not known, client can ask for it from Kontrol (Service Discovery). - Kite DOC
2015 - Kite A Go Library for Writing Distributed Microservices
2014 - Kite: Library for writing distributed microservices
Bhive
- beehive
Distributed Programming Framework in GoLang