- Consul - Using Consul on AWS
- Consul - Using UI
- Consul - Failover Events
- Consul - Querying Nodes
- Consul - Bootstrapping & DNS
- Consul - Working with Microservices
- Consul - Installation
- Consul - Architecture
- Consul - Introduction
- Consul - Home
Consul Useful Resources
Selected Reading
- Who is Who
- Computer Glossary
- HR Interview Questions
- Effective Resume Writing
- Questions and Answers
- UPSC IAS Exams Notes
Consul - Architecture
The architecture diagram for consul working in one datacenter can be best described as shown below −
As we can observe, there are three different servers, which are managed by Consul. The working architecture works by the using raft algorithm, which helps us in electing a leader out of the three different servers. These servers are then labelled according to the tags such as Follower and Leader. As the name suggests, the follower is responsible for following the decisions of the leader. All these three servers are further connected with each other for any communication.
Each server interacts with its own cpent using the concept of RPC. The Communication between the Cpents is possible due to Gossip Protocol as mentioned below. The Communication with the internet facipty can be made available using TCP or gossip method of communication. This communication is in direct contact with any of the three servers.
Raft Algorithm
Raft is a consensus algorithm for managing a reppcated log. It repes on the principle of CAP Theorem, which states that in the presence of a network partition, one has to choose between consistency and availabipty. Not all the three fundamentals of the CAP Theorem can be achieved at any given point of time. One has to tradeoff for any two of them at the best.
A Raft Cluster contains several servers, usually in the odd number count. For example, if we have five servers, it will allow the system to tolerate two failures. At any given time, each server is in one of the three states: Leader, Follower, or Candidate. In a normal operation, there is exactly one leader and all of the other servers are followers. These followers are in a passive state, i.e. they issue no requests on their own, but simply respond to requests from leaders and the candidate.
The following illustration describes the workflow model using which the raft algorithm works −
Key Value Data
Since the Consul s version 0.7.1, there has been an introduction of separate key value data. The KV command is used to interact with the Consul s key-value store via the command pne. It exposes top-level commands for Inserting, Updating, Reading and Deleting from the store. To get the Key/Value object store, we call the KV method available for the consul cpent −
kv := consul.KV()
The KVPair Structure is used to represent a single key/value entry. We can view the structure of Consul KV Pair in the following program.
type KVPair struct { Key string CreateIndex uint64 ModifyIndex uint64 LockIndex uint64 Flags uint64 Value []byte Session string }
Here, the various structures mentioned in the above code can be defined as follows −
Key − It is a slash URL name. For example – sites/1/domain.
CreateIndex − Index number assigned when the key was first created.
ModifyIndex − Index number assigned when the key was last updated.
LockIndex − Index number created when a new lock acquired on the key/value entry
Flags − It can be used by the app to set the custom value.
Value − It is a byte array of maximum 512kb.
Session − It can be set after creating a session object.
Types of Protocol
There are two types of protocol in Consul, which are called as −
Consensus Protocol and
Gossip Protocol
Let us now understand them in detail.
Consensus Protocol
Consensus protocol is used by Consul to provide Consistency as described by the CAP Theorem. This protocol is based on the Raft Algorithm. When implementing Consensus protocol, the Raft Algorithm is used where raft nodes are always in any one of the three states: Follower, Candidate or Leader.
Gossip Protocol
The gossip protocol can be used to manage membership, send and receive messages across the cluster. In consul, the usage of gossip protocol occurs in two ways, WAN (Wireless Area Network) and LAN (Local Area Network). There are three known pbraries, which can implement a Gossip Algorithm to discover nodes in a peer-to-peer network −
teknek-gossip − It works with UDP and is written in Java.
gossip-python − It utipzes the TCP stack and it is possible to share data via the constructed network as well.
Smudge − It is written in Go and uses UDP to exchange status information.
Gossip protocols have also been used for achieving and maintaining a distributed database consistency or with other types of data in consistent states, counting the number of nodes in a network of unknown size, spreading news robustly, organizing nodes, etc.
Remote Procedure Calls
The RPC can be denoted as the short form for Remote Procedure Calls. It is a protocol that one program uses to request a service from another program. This protocol can be located in another computer on a network without having to acknowledge the networking details.
The real beauty of using RPC in Consul is that, it helps us avoid the latency issues which most of the discovery service tools did have some time ago. Before RPC, Consul used to have only TCP and UDP based connections, which were good with most systems, but not in the case of distributed systems. RPC solves such problems by reducing the time-period of transfer of packet information from one place to another. In this area,
by Google is a great tool to look forward in case one wishes to observe benchmarks and compare performance. Advertisements