Microservices¶
The Koinos node uses a microservice architecture. This means that the node consists of independently running programs that interact with one another, each performing a specific task, to implement all features of the node. Advantages of this architecture are cleaner implementations and better abstractions in the microservices themselves as well as greater flexibility for how a node is run. Docker compose runs each microservice on the same physical host, but in sandboxed environments. You can run all of the microservices on the host directly, but this can be tedious managing every binary individually. Microservices can even be run on different machines and communicate over the network.
The microservice architecture is explored in more depth here.
Microservice descriptions¶
Each microservice serves a specific purpose and not all are required. Below is a list of each microservice, its responsibilities, whether or not it is required, and what compose profiles enables the microservice.
Required microservices are always enabled, while optional microservices are enabled with compose profiles.
Microservice | Responsibilities | Required | Compose profiles |
---|---|---|---|
Koinos Chain | Processing blocks and maintaining the state of the chain | ||
Koinos Block Store | Storing block information | ||
Koinos P2P | P2P communication between node clusters | ||
Koinos Mempool | Storing transactions that have yet to be included in blocks | ||
Koinos Transaction Store | Storing transaction information | transaction_store , api , all |
|
Koinos Block Producer | The production of blocks | block_producer , all |
|
Koinos JSON-RPC | Providing API access from outside the cluster | jsonrpc , api , all |
|
Koinos gRPC | Providing API access from outside the cluster | grpc , api , all |
|
Koinos Contract Meta Store | Providing ABI data for smart contracts | contract_meta_store , api , all |
|
Koinos Account History | Providing records for each address | account_history , api , all |