Open-Source Service Discovery
Service discovery is a key component of most distributed systems and service oriented architectures.
The problem seems simple at first: How do clients determine the IP and port for a service that exist on multiple hosts?
Solutions described in the blog post:
GRPC: Open Source RPC framework built on HTTP/2 with libraries in 10 languages
- GRPC has libraries in C, C++, Java, Go, Node.js, Python, Ruby, Objective-C, PHP and C#.
- Define services using Protocol Buffers.
ZeroRPC: Lightweight RPC library built on ZeroMQ & MessagePack with Node.js, Python, & command line clients
ZeroRPC is a light-weight, reliable and language-agnostic library for distributed communication between server-side processes. It builds on top of ZeroMQ and MessagePack. Support for streamed responses – similar to python generators – makes ZeroRPC more than a typical RPC engine. Built-in heartbeats and timeouts detect and recover from failed requests. Introspective capabilities, first-class exceptions and the command-line utility make debugging easy. ZeroRPC powers the infrastructure behind dotCloud.
Consul: Distributed service registry & key/value data store
Presentation: µService Architecture
I’ve become very interested in MicroServices lately. Here’s a presentaion I came across via this article.
Article: Microservices, by Martin Fowler and James Lewis
Article about Microservices from a couple of Thoughtworks guys.
In short, the microservice architectural style is an approach to developing a
single application as a suite of small services, each running in its own
process and communicating with lightweight mechanisms, often an HTTP resource
API. These services are built around business capabilities and independently
deployable by fully automated deployment machinery. There is a bare mininum of
centralized management of these services, which may be written in different
programming languages and use different data storage technologies.
Gilliam: Micro-services framework built on Docker, written in Python
I like the idea of micro services. It feels very Unix-y to me. This project is full of buzzword goodness: Docker, REST, JSON, event-driven IO… If only they had worked Git in somehow!
From the Gilliam website:
Gilliam is a open source Platform as a Service (PaaS) that allows you easily develop, deploy and scale your application backend. Unlike commercial
and many other open source PaaS systems, Gilliams is intended for Micro Service Architectures.
Gilliam stands on the sholders of Docker. Every piece of code running on Gilliam is a Docker image. To that Gilliam adds service discovery, a router,
scheduling and elastic scaling.