Here we discuss the architecture design for the mangement services on the Master node.
Philosophy and principles
The architecture will follow the following principles:
- Micro-service: Means we decouple various functions to individual micro services. No service will crash others whatever it does.
- Fault-resilience: Means the service should be tolerant for fault, such as database crash.
- Scalability: Try best to distribute the services, to mitigate centralized bottle neck.
Following the decouple design, there are 3 layers in Cello.
- Access layer: including those Web UI dashboards operated by users.
- Orchestration layer: received the request form Access layer, and make call to correct agents to operate the blockchain resources.
- Agent layer: real workers that interact with underly infrastructures like Docker, Swarm, K8s.
Each layer should maintain stable APIs for upper layers, to achieve pluggability without changing upper layer code.
Agent layer APIs
- Host management: create, query/list, update, delete, fillup, clean, reset
- Cluster management: create, query/list, start/stop/restart, delete, reset
dashboard: Provide the dashboard for the pool administrator, also the core engine to automatically maintain everything.
restserver: Provide the restful api for other system to apply/release/list chains.
watchdog: Timely checking system status, keep everything healthy and clean.
The restful related implementation is based on Flask, a Werkzeug based micro-framework for web service.
The reasons of choosing it include:
- Good enough in performance
- Flexible for extending
- Stable in code
This work is licensed under a Creative Commons Attribution 4.0 International License.