轻量的分布式配置管理平台
- :用户名/密码(admin/admin123)。
一些特性
-
轻量级: 没有复杂的技术和第三方依赖;
-
可靠存储: 使用Redis作为存储,建议使用Redis Cluster,Redis Master-Slave 或者 Redis Proxy Middleware等技术保证存储的可靠性;
-
对等的Server节点: Server节点的对等性,保证即便某些Server不可用,集群仍能工作;
-
近似实时更新: diablo使用Http长轮询来保证客户端能及时得到配置更新的通知;
-
简单的UI: diablo内嵌了一个简单易用的web界面,叫做Diablo Tower;
-
...
Diablo架构
Quick start
安装
-
最新的压缩包;
-
或者通过源码构建:
mvn clean package -DskipTests # package located diablo-server/target/diablo-server.tar.gz
-
解压缩包:
tar zxf diablo-server.tar.gz ll diablo bin # the execute scripts conf # conf dir lib # dependency libs ```
-
编辑配置文件diablo.conf:
# vim ${DIABLO_HOME}/conf/diablo.conf # The server bind address BIND_ADDR=127.0.0.1 # The server listening port LISTEN_PORT=2143 # The redis host REDIS_HOST=127.0.0.1 # The redis port REDIS_PORT=6379 # The log path LOG_PATH=~/logs/diablo # The password for Diablo Tower admin TOWER_PASS=admin # The inverval(seconds) for checking server's status CHECK_SERVER_INTERVAL=5 # Enable or disable client api auth # client must config the appKey, if CLIENT_AUTH=true CLIENT_AUTH=true # Java Heap options JAVA_HEAP_OPTS="-Xms512m -Xmx512m"
-
启动或停止diablo server:
${DIABLO_HOME}/bin/diablo.sh start ${DIABLO_HOME}/bin/diablo.sh stop ${DIABLO_HOME}/bin/diablo.sh restart
使用 Diablo Tower
-
启动diablo server后,便可通过Http访问diablo tower(如);
-
事先准备应用和配置项:
-
编辑应用:
-
编辑配置项:
-
集成diablo client到应用中
-
(编程模式):
-
添加maven依赖:
me.hao0 diablo-client ${version} -
代码样例:
SimpleDiabloClient client = new SimpleDiabloClient();client.setAppName("myapp");client.setAppKey("123456");client.setServers("127.0.0.1:2143,127.0.0.1:2144");// 可添加配置监听client.addListener(new ConfigListener
() { @Override public String name() { // 配置项名称 return "test_config1"; } @Override public void onUpdate(String newValue) { // 该方法会在本地配置更新后触发 System.out.println("test_config1 has updated to " + newValue); }});client.start();// 获取配置项最新的值String testConfig = client.get("test_config");// 获取配置项最新的json对象MyClass myClass = client.get("test_json", MyClass.class);client.shutdown(); -
具体见.
-
-
(Spring注入模式):
-
添加maven依赖:
me.hao0 diablo-client-spring ${version} -
配置片段:
-
添加diablo配置Bean到spring上下文中, 如:
@Component public class MyAppConfig implements DiabloConfig { // 支持基本类型转换 private String activityNo; private Integer activityChannel; private Boolean activityStart; private Float activityRatio; private Long activityCount; private Double activityFee; // 支持普通json对象转换 private TimeInfo timeInfo; // 支持一级List对象转换 private List
timeInfos; // 支持一级Map对象转换 private Map timeInfoMap; // getters and setters }
-
-
具体见.
-
这样一旦你通过Diablo Tower修改了对应配置项时,客户端将收到通知。
-
。