What is Consul and what are its top alternatives?
Top Alternatives to Consul
etcd is a distributed key value store that provides a reliable way to store data across a cluster of machines. It’s open-source and available on GitHub. etcd gracefully handles master elections during network partitions and will tolerate machine failure, including the master. ...
A centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services. All of these kinds of services are used in some form or another by distributed applications. ...
SkyDNS is a distributed service for announcement and discovery of services. It leverages Raft for high-availability and consensus, and utilizes DNS queries to discover available services. This is done by leveraging SRV records in DNS, with special meaning given to subdomains, priorities and weights (more info here: http://blog.gopheracademy.com/skydns). ...
Map services to arbitrary URLs in a single, declarative YAML file. Configure routes with CORS support, circuit breakers, timeouts, and more. Replace your Kubernetes ingress controller. Route gRPC, WebSockets, or HTTP. ...
Kubernetes is an open source orchestration system for Docker containers. It handles scheduling onto nodes in a compute cluster and actively manages workloads to ensure that their state matches the users declared intentions. ...
Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache, and message broker. Redis provides data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs, geospatial indexes, and streams. ...
Istio is an open platform for providing a uniform way to integrate microservices, manage traffic flow across microservices, enforce policies and aggregate telemetry data. Istio's control plane provides an abstraction layer over the underlying cluster management platform, such as Kubernetes, Mesos, etc. ...
Eureka is a REST (Representational State Transfer) based service that is primarily used in the AWS cloud for locating services for the purpose of load balancing and failover of middle-tier servers. ...
Consul alternatives & related posts
- Service discovery11
- Fault tolerant key value store6
- Bundled with coreos2
- Consol integration1
- Privilege Access Management1
- Open Source1
related etcd posts
- High performance ,easy to generate node specific config11
- Kafka support8
- Spring Boot Support5
- Supports extensive distributed IPC3
- Used in ClickHouse2
- Supports DC/OS2
- Used in Hadoop1
- Embeddable In Java Service1
related Zookeeper posts
- Srv discovery for etcd2
related SkyDNS posts
- Kubernetes friendly configuration1
related Ambassador posts
- Leading docker container management solution163
- Simple and powerful128
- Open source105
- Backed by google76
- The right abstractions58
- Scale services25
- Replication controller20
- Permission managment11
- Supports autoscaling8
- No cloud platform lock-in5
- Open, powerful, stable4
- Quick cloud setup4
- Promotes modern/good infrascture practice4
- Backed by Red Hat3
- A self healing environment with rich metadata3
- Captain of Container Ship3
- Cloud Agnostic3
- Custom and extensibility3
- Runs on azure3
- Everything of CaaS2
- Easy setup2
- Steep learning curve15
- Poor workflow for development15
- Orchestrates only infrastructure8
- High resource requirements for on-prem clusters4
- Too heavy for simple systems2
- Additional vendor lock-in (Docker)1
- More moving parts to secure1
- Additional Technology Overhead1
related Kubernetes posts
How Uber developed the open source, end-to-end distributed tracing Jaeger , now a CNCF project:
Distributed tracing is quickly becoming a must-have component in the tools that organizations use to monitor their complex, microservice-based architectures. At Uber, our open source distributed tracing system Jaeger saw large-scale internal adoption throughout 2016, integrated into hundreds of microservices and now recording thousands of traces every second.
Here is the story of how we got here, from investigating off-the-shelf solutions like Zipkin, to why we switched from pull to push architecture, and how distributed tracing will continue to evolve:
(GitHub Pages : https://www.jaegertracing.io/, GitHub: https://github.com/jaegertracing/jaeger)
Visual Studio Code worked really well for us as well, it worked well with all our polyglot services and the .Net core integration had great cross-platform developer experience (to be fair, F# was a bit trickier) - actually, each of our team members used a different OS (Ubuntu, macos, windows). Our production deployment ran for a time on Docker Swarm until we've decided to adopt Kubernetes with almost seamless migration process.
After our positive experience of running .Net core workloads in containers and developing Tweek's .Net services on non-windows machines, C# had gained back some of its popularity (originally lost to Node.js), and other teams have been using it for developing microservices, k8s sidecars (like https://github.com/Soluto/airbag), cli tools, serverless functions and other projects...
- Super fast541
- Ease of use512
- In-memory cache443
- Advanced key-value cache323
- Open source193
- Easy to deploy182
- High Availability40
- Data Structures34
- Very Scalable32
- Great community22
- "NoSQL" key-value data store18
- Sorted Sets11
- BSD licensed9
- Async replication8
- Integrates super easy with Sidekiq for Rails background8
- Open Source7
- Keys with a limited time-to-live7
- Lua scripting6
- Awesomeness for Free5
- Feature Rich4
- Outstanding performance4
- Runs server side LUA4
- Written in ANSI C4
- LRU eviction of keys4
- Performance & ease of use3
- Data structure server3
- Temporarily kept on disk2
- Channels concept2
- Dont save data if no subscribers are found2
- Object [key/value] size each 500 MB2
- Automatic failover2
- Easy to use2
- Existing Laravel Integration2
- Cannot query objects directly15
- No secondary indexes for non-numeric data types3
- No WAL1
related Redis posts
We use MongoDB as our primary #datastore. Mongo's approach to replica sets enables some fantastic patterns for operations like maintenance, backups, and #ETL.
As we pull #microservices from our #monolith, we are taking the opportunity to build them with their own datastores using PostgreSQL. We also use Redis to cache data we’d never store permanently, and to rate-limit our requests to partners’ APIs (like GitHub).
When we’re dealing with large blobs of immutable data (logs, artifacts, and test results), we store them in Amazon S3. We handle any side-effects of S3’s eventual consistency model within our own code. This ensures that we deal with user requests correctly while writes are in process.
I'm working as one of the engineering leads in RunaHR. As our platform is a Saas, we thought It'd be good to have an API (We chose Ruby and Rails for this) and a SPA (built with React and Redux ) connected. We started the SPA with Create React App since It's pretty easy to start.
We use Jest as the testing framework and react-testing-library to test React components. In Rails we make tests using RSpec.
Our main database is PostgreSQL, but we also use MongoDB to store some type of data. We started to use Redis for cache and other time sensitive operations.
We have a couple of extra projects: One is an Employee app built with React Native and the other is an internal back office dashboard built with Next.js for the client and Python in the backend side.
- Zero code for logging and monitoring14
- Service Mesh9
- Great flexibility8
- Powerful authorization mechanisms5
- Ingress controller5
- Full Security4
- Easy integration with Kubernetes and Docker4
related Istio posts
At my company, we are trying to move away from a monolith into microservices led architecture. We are now stuck with a problem to establish a communication mechanism between microservices. Since, we are planning to use service meshes and something like Dapr/Istio, we are not sure on how to split services between the two. Service meshes offer Traffic Routing or Splitting whereas, Dapr can offer state management and service-service invocation. At the same time both of them provide mLTS, Metrics, Resiliency and tracing. How to choose who should offer what?
As for the new support of service mesh pattern by Kong, I wonder how does it compare to Istio?
- Easy setup and integration with spring-cloud21
- Web ui9
- Health checking8
- Circuit breaker7
- Netflix battle tested components6
- Service discovery6
- Open Source4