Diamond is an implementation of a distributed configuration management service open sourced by Taobao
Disconf is a distributed configuration management platform from Baidu, which is being used by well-known Internet companies such as Baidu, Didi Chuxing, UnionPay, NetEase, Lagou.com, Suning Tesco, and SF Express!
Compare items | diamond | disconf |
configuration storage | stored on mysql | stored on mysql |
Push-pull model | Pull the model, pull the full data every 15s | Push model based on Zookeeper, real-time push |
Configure read and write | Support instance to read and write configuration. Support an instance to write configuration data and broadcast it to other instances | Only instance-to-configuration read is supported. Broadcast to all application instances by updating the configuration on disconf-web |
disaster recovery | Multi-level disaster recovery mode, the configuration data will be dumped locally to avoid being unavailable when the central service is down. | Multi-level disaster recovery mode, read local configuration files first |
Configure the data model |
Only supports data in KV structure, not in configuration file mode | Support traditional configuration file mode (configuration file), also supports KV structure data (configuration item) |
Features | The address server is required, the client connects to the address server, and retrieves the address list of the diamond server | 1. Persistently manage the configuration and provide restful connections to the outside world. 2. Annotated programming requires Spring programming environment . 3. Support configuration upload and download . |
Cluster data synchronization |
Based on the database and local files 1. When the server writes data, the data is first written to mysql, and then to the local file . 2. When the client subscribes to the data, it accesses the local file and does not query the database. Affect the client's subscription 3. Perceive data changes by comparing the MD5 values of the client and server data |
Real-time push of global distributed consistency lock for configuration changes based on zookeeper to achieve unified deployment of active and standby, and automatic switching of active and standby when the system is abnormal |
advantage | Simple, reliable and easy to use | Real-time push based on distributed Zookeeper is better than diamond in terms of stability, effectiveness and ease of use |
shortcoming | 1. No access modification permission control 2. There is a lack of functionality for the service registration discovery based on SOA architecture that may be done in the future |
There are many source codes, and it is relatively complicated to read and use |
Use Cases | The configuration of most of Taobao's internal systems is managed by diamond. | Including Baidu, Didi Chuxing, UnionPay, NetEase, Lagou.com, Suning Tesco, SF Technology and other well-known Internet companies are using it! |
Other open source configuration management middleware
name | characteristic |
Xdiamond | 1. Based on the database for configuration storage 2. Compared with diamond, the permission design is added, combined with the Secret key to ensure the security of the configuration 3. The configuration is cached locally to prevent the application from being unable to start due to network problems |
Qconf | 1. The internal distributed configuration management tool of Qihoo 360 2. Written in C/C++, supporting languages such as c/c++, shell, php, python, etc. 3. Using Zookeeper for cluster management 4. In the case of multiple processes, the QPS can reach 100 Ten thousand |
etcd | 1. Written in Go language and process log replication through Raft consensus algorithm to ensure strong consistency |
https://github.com/knightliao/disconf