29.安心技术梳理 - diamond使用介绍
diamond介绍
diamond为应用系统提供了获取配置的服务,应用不仅可以在启动时从diamond获取相关的配置,而且可以在运行中对配置数据的变化进行感知并获取变化后的配置数据。
diamond特点
diamond的特点是简单、可靠、易用:
简单:整体结构非常简单,从而减少了出错的可能性。
可靠:应用方在任何情况下都可以启动,在承载阿里核心系统并正常运行多年来,没有出现过任何重大故障。
易用:客户端使用只需要两行代码,暴露的接口都非常简单,易于理解。
常见应用场景
- 使用tddl分表分库的DB配置。
- 中间件的服务地址。
- 经常变化的开关,配置。
简单使用
引入依赖(如果使用了tddl客户端包,会有diamond冲突,排除掉其中一个diamond即可)
|
客户端代码:
DiamondClientExample
|
diamond环境运维
diamond客户端与服务端通过httpclient请求数据,服务端地址获取方式有以下几种:
方式一:启动用户目录下/diamond/ServerAddress中指定ip列表,ip用逗号或者空行分隔
方式二:类路径下,增加配置文件ServerAddress并指定ip列表
方式三:diamond客户端运行后,启动用户目录下会自动生成.diamond.domain文件,客户端会使用文件中配置的域名来访问服务端。
#diamond.sit.ds.gome.com.cn(测试环境)
#diamond.uat.ds.gome.com.cn(测试环境)
#diamond.pre.ds.gome.com.cn(测试环境)
#diamond.prelive.ds.gome.com.cn (4344环境)
#diamond.live.ds.gome.com.cn(生产环境)
(1) windows和mac的操作系统默认内容是diamond.sit.ds.gome.com.cn,可以自行修改
(2) linux操作系统不设置默认内容,需要修改.diamond.domain来选择对应环境的域名
(3) 若要兼容老的域名访问方式,请在.diamond.domain中配置a.b.c,同时在/etc/hosts配置a.b.c指向自己的nginx
配置:
部署结构:
容灾性
1、数据库不可用.
2、所有server均不可用.
3、client主动删除了snapshot.
4、client没有备份配置数据,导致其不能配置“容灾目录”.
diamond与springPropertyPlaceholder动态集成
///////////////////动态配置说明/////////////////////
1.引入
|
2.项目下
config.properties //配置了diamond定义的配置信息的 groupId和dataId 名称
//注意这个配置规范
ServerAddress //配置diamond的服务器ip地址
3.spring 配置
|
diamond执行流程
1.读本地用户目录下 .diamond.domain 文件中的域名 ,比如 diamond.uat.ds.gome.com.cn , 如果使用a.b.c 需要在服务器hosts文件中配置
2.读步骤1中域名对应的ip , 比如:ping diamond.uat.ds.gome.com.cn ==> 10.58.50.110
3.通过步骤2中的ip取出可用的diamond-server列表, 访问 http://ip/url , 比如:curl 'http://diamond.uat.ds.gome.com.cn/url' ==> 10.58.50.204,10.58.50.205
4.通过步骤3中的ip列表,提取数据,比如(苦中group,dataId由程序中给定):curl 'http://10.58.50.204/diamond-server/config.co?group=zookeeper&dataId=url' ==> 10.58.50.203:2181,10.58.50.204:2181,10.58.50.205:2181
相关链接
阿里中间件团队技术博客 http://jm.taobao.org/ .