MetaConfig is  a  service for configuration management in an large scaled
distrbuted system.

Currently we use ctrip appllo for config managment, but it is build for a
paticular scenario. it has fixed schema  application,environment,cluster and
namespace.  Each key belong to that schema.

But it is not enough for operator to manage a complicated infrasctructure
or application cluster.

So here is the proposal to build a brand new config management service,

*Features: *
*key with rich metadata: *user can define metadata for a key , that
distinguish from key to another key.  a key will not be stringed by fixed
schema.  metadata is like "env=test, service=cart, version=1.0" or
"cluster=xxx"  or "env=test, service=cart, version=1.0, ip=x.x.x.x"
*validator: *value can be checked by user defined python script, so in
runtine if someone want to change this value, the script will check if this
value is properate.
*encryption webhook: *. value can by ecrypt by your custom encryption
service.
*event producer:  *producer will send key changes event to a target
service(kafka,rabbitmq, customed).
*config view: *by setting metadata criteria, MetaConfig will aggregate a
view to return all key values which match those metadata, so that operator
can mange key in their own understading to a distributed system in
seperated views.
*config batch action: * with metadate, you can batch update, delete key
values. for example: update all "service=cart version=1.0" configuration
log level to "DEBUG" or just update  "service=cart version=1.0, ip=x.x.x.x"
 .
*rich value type: *not ony plain text any more, but support to be aware of
ini, json,yaml,xml and java properties
*heterogenous configuration system: *able to manage configuration in k8s
and consul or even more, you can update, delete, and use config view for
those systems, and you can integrate with your own config system to
MetaConfig by following standardized API and model

Reply via email to