Consul is a service discovery technology that ensures microservices can communicate with each other.

Distinguishing features #

Consul has some features that set it apart from other service discovery solutions.

HTTP REST API & DNS support #

Consul has an HTTP REST API and supports DNS.

  • DNS (Domain Name System) is the system that maps host names such as www.innoq.com to IP addresses on the Internet.
  • In addition to returning IP addresses, it can return ports at which a service is available.
  • This is a feature of the SRV DNS records.

Configuration file generation #

With Consul Template, Consul can generate configuration files.

  • The files may contain IP addresses and ports of services registered in Consul.
  • Consul Template also provides Consul’s service discovery to systems that cannot access Consul via the API.
  • The systems have to use some kind of configuration file, which they often already do anyway.

Health checks #

Consul can perform health checks and exclude services from service discovery when the health check fails.

  • For example, a health check can be a request to a specific HTTP resource to determine whether the service can still process requests.
  • A service may still be able to accept HTTP requests, but it may not be able to process them properly due to a database failure.
  • The service can signal this through the health check.

Replication #

Consul supports replication and can ensure high availability.

If a Consul server fails, other servers with replicated data take over and compensate for the failed server.

Multiple data centers #

Consul also supports multiple data centers.

  • Data can be replicated between data centers to further increase availability and protect Consul against the failure of a data center.
  • The search for services can be limited to the same data center.
  • Services in the same data center usually deliver higher performance.

Service configuration #

Finally, Consul can be used not only for service discovery, but for the configuration of services.

  • Configuration has different requirements.

  • Availability is important for service discovery.

  • Faulty information can be tolerated.

  • If the service is accessed and is not available, it doesn’t matter. You can simply use another instance of the service.

  • However, if services are configured incorrectly, this can lead to errors.

  • Correct information is more important for configuration than for service discovery.

Get hands-on with 1200+ tech skills courses.