solution: more clear intro to the project

This commit is contained in:
Igor Artamonov
2020-03-29 20:56:04 -04:00
parent 0e8ab7dd06
commit 33028a5050
2 changed files with 11 additions and 25 deletions

View File

@@ -6,41 +6,27 @@ endif::[]
image:https://github.com/emeraldpay/dshackle/workflows/Tests/badge.svg["Unit Tests"]
image:https://img.shields.io/docker/pulls/emeraldpay/dshackle?style=flat-square["Docker",link="https://hub.docker.com/r/emeraldpay/dshackle"]
image:https://img.shields.io/github/license/emeraldpay/dshackle.svg?style=flat-square&maxAge=2592000["License", link="https://github.com/emeraldpay/dshackle/blob/master/LICENSE"]
image:https://img.shields.io/github/license/emeraldpay/dshackle.svg?style=flat-square&maxAge=2592000["License",link="https://github.com/emeraldpay/dshackle/blob/master/LICENSE"]
image:https://badges.gitter.im/emeraldpay/community.svg[link="https://gitter.im/emeraldpay/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge]
Dshackle is an L7 Blockchain API Load Balancer with automatic discovery and health checking, authentication, and TLS termination.
It is designed to work as an edge proxy, middle proxy, or API gateway.
Dshackle provided a high level aggregated API on top of several underlying upstreams (blockchain nodes or providers, such
as Geth, Parity, Infura, etc), it automatically verifies their availability and the current status of the network, executes
commands making sure that the response is consistent and/or data successfully broadcasted to the network.
Dshackle provided a high level aggregated API on top of several underlying upstreams (blockchain nodes or providers, such as Geth, Parity, Infura, etc), it automatically verifies their availability and the current status of the network, executes commands making sure that the response is consistent and/or data successfully broadcasted to the network.
The main goals of the project is to:
- Standard Ethereum JSON RPC API, plus advanced gRPC-based API
- TLS with optional client authentication
- Blockchain-aware **caching** in memory and in Redis
- Routing based on data availability (peers, height, sync status), always a **most actual state**
- Automatic **failover** and retry
- separate application services and blockchain nodes
- make blockchain access compatible with modern microservice oriented architecture
- provide secure access to a blockchain, on both protocol and data level
The main features and advantages are:
- provides standard JSON RPC as smart load balancing proxy to active nodes
- in addition to JSON RPC it provides gRPC protocol, with server push and asynchronous communications, to simplify and optimize standard access patterns
- targeting Kubernetes architecture
- automatically distributing access to API through multiple different target nodes, taking into account their current availability and status
- allowing to build a mesh network of routers in different regions sharing a set of underlying nodes, with automatic rebalancing and smart routing
- caching data on the edge
- providing monitoring (ex.
Prometheus) and externalizable logging
- configurable access authentication and authorization, including TLS certificates
Dshackle allows to build a mesh network of interconnected Dshackle servers to have fast, secure, stable and fail-proof access to blockchain.
Dshackle connects to several upstreams via JSON RPC, Websockets, or gRPC protocols.
It verifies if a node ("upstream") is
fully synchronized (not in initial sync mode), has enough peers, and its height is not behind other nodes. If upstream lags
behind others, lost peers, started to resync or went down, then Dshackle temporarily excludes it from requests and returns
when the upstream problem is fixed.
It verifies if a node ("upstream") is fully synchronized (not in initial sync mode), has enough peers, and its height is not behind other nodes.
If upstream lags behind others, lost peers, started to resync or went down, then Dshackle temporarily excludes it from requests and returns when the upstream problem is fixed.
image::call-schema.png[alt="Call Schema",width=100%,align="center"]
image::dshackle-intro.png[alt="",width=100%,align="center"]
== Roadmap

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB