What is Consul and what are its top alternatives?
Top Alternatives to Consul
- etcd
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. ...
- Zookeeper
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
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). ...
- Ambassador
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
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
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
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
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
etcd
- Service discovery11
- Fault tolerant key value store6
- Secure2
- Bundled with coreos2
- Privilege Access Management1
- Consol integration1
- Open Source1
related etcd posts
- High performance ,easy to generate node specific config11
- Kafka support8
- Java8
- Spring Boot Support5
- Supports extensive distributed IPC3
- Used in ClickHouse2
- Supports DC/OS2
- Embeddable In Java Service1
- Curator1
- Used in Hadoop1
related Zookeeper posts
- Srv discovery for etcd2
related SkyDNS posts
Ambassador
- Edge-proxy3
- Kubernetes friendly configuration1
related Ambassador posts
Kubernetes
- Leading docker container management solution162
- Simple and powerful127
- Open source104
- Backed by google75
- The right abstractions56
- Scale services24
- Replication controller19
- Permission managment10
- Cheap7
- Supports autoscaling7
- Simple7
- Reliable4
- Self-healing4
- No cloud platform lock-in4
- Quick cloud setup3
- Open, powerful, stable3
- Scalable3
- Promotes modern/good infrascture practice3
- Captain of Container Ship2
- A self healing environment with rich metadata2
- Cloud Agnostic2
- Runs on azure2
- Backed by Red Hat2
- Custom and extensibility2
- Golang1
- Expandable1
- Gke1
- Easy setup1
- Sfg1
- Everything of CaaS1
- Poor workflow for development15
- Steep learning curve15
- 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:
https://eng.uber.com/distributed-tracing/
(GitHub Pages : https://www.jaegertracing.io/, GitHub: https://github.com/jaegertracing/jaeger)
Bindings/Operator: Python Java Node.js Go C++ Kubernetes JavaScript OpenShift C# Apache Spark
Our first experience with .NET core was when we developed our OSS feature management platform - Tweek (https://github.com/soluto/tweek). We wanted to create a solution that is able to run anywhere (super important for OSS), has excellent performance characteristics and can fit in a multi-container architecture. We decided to implement our rule engine processor in F# , our main service was implemented in C# and other components were built using JavaScript / TypeScript and Go.
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...
- Performance882
- Super fast540
- Ease of use510
- In-memory cache441
- Advanced key-value cache321
- Open source190
- Easy to deploy180
- Stable163
- Free153
- Fast120
- High-Performance40
- High Availability39
- Data Structures34
- Very Scalable31
- Replication23
- Great community21
- Pub/Sub21
- "NoSQL" key-value data store17
- Hashes14
- Sets12
- Sorted Sets10
- Lists9
- BSD licensed8
- NoSQL8
- Integrates super easy with Sidekiq for Rails background7
- Async replication7
- Bitmaps7
- Keys with a limited time-to-live6
- Open Source6
- Strings5
- Lua scripting5
- Hyperloglogs4
- Awesomeness for Free!4
- Transactions3
- Runs server side LUA3
- outstanding performance3
- Networked3
- LRU eviction of keys3
- Written in ANSI C3
- Feature Rich3
- Performance & ease of use2
- Data structure server2
- Simple1
- Channels concept1
- Scalable1
- Temporarily kept on disk1
- Dont save data if no subscribers are found1
- Automatic failover1
- Easy to use1
- Existing Laravel Integration1
- Object [key/value] size each 500 MB1
- 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.
Since we have different frontend apps we have found useful to have Bit to document visual components and utils in JavaScript.
Istio
- Zero code for logging and monitoring13
- Service Mesh8
- Great flexibility7
- Ingress controller4
- Powerful authorization mechanisms4
- Resiliency3
- Easy integration with Kubernetes and Docker3
- Full Security3
- Performance15
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
- Monitoring7
- Circuit breaker7
- Service discovery6
- Netflix battle tested components6
- Open Source4