High Availability Architecture
DataHub uses a three-tier architecture system with high availability at each layer.
- Load-balancing ingress layer
- High availability proxy layer
- Blockchain node and indexer layer
Using this approach, we are able to provide a highly available service that can withstand multiple server failures at each level.
Load-Balancing Ingress Layer
*.datahub.figment.io are received and routed through a set of load balancers. This layer can tolerate failures of multiple individual load balancers and still function correctly.
The main job of this layer is to receive all inbound requests and terminate SSL before handing off to the proxy layer.
High Availability Proxy Layer
Requests received at the ingress layer are then load balanced across a set of proxy servers at the proxy layer. This layer can tolerate failures of multiple individual proxy servers and still function correctly. The main job of this layer is to authenticate requests, check quotas and rate limits, and route requests to the correct service in the blockchain node and indexer layer.
Blockchain Node and Indexer Layer
Requests authenticated at the proxy layer are then routed to the correct pool of blockchain nodes or indexers. DataHub runs many different kinds of nodes and indexers, for example:
- Full nodes
- Archive nodes
- Higher level RPC/REST services (like Cosmos LCD)
- Services like Transaction Search
Each of these types of nodes is run as a pool, meaning for example there will be five identical copies of a full node running together that can all service requests. The pool can tolerate failures of multiple individual nodes and still function correctly. The main job of this layer is to either:
- Find and return the correct data (read)
- Submit a transaction (write)