淘宝diamond
2015-07-31 16:53
267 查看
一、diamond简介
diamond是淘宝内部使用的一个管理持久配置的系统。为应用系统提供获取配置的服务,应用不仅可以启动时从diamond获取相关配置,而且可以在运行中对配置数据的变化进行感知并获取变化后的配置数据。二、diamond架构图
三、diamond核心原理
1. diamond-server集群的数据同步
diamond-server写数据时,先写入MySQL数据库,然后再写入本地缓存文件,写完后发送HTTP请求给集群中其它diamond-server,其它diamond-server收到请求后,从MySQL数据库中读取刚刚写入的数据至本地文件。diamond-server启动后会启动一个定时任务,定时从MySQL中拉取所有数据至本地文件。
2. diamond-client获取diamond-server地址
diamond-client需要绑定域名服务器(地址服务器),域名服务器上有一个静态文件存储这diamond服务器的地址列表,客户端启动时,根据自身的域名绑定,连接到域名服务器,取回diamond-server服务器的地址列表,从中随机选择一台diamond服务器进行连接。diamond-client启动后会启动一个定时任务,定时从域名服务器上获取地址列表并保存到本地文件中。
3. diamond-client主动获取数据
diamond-client调用getAvailableConfigInfomation(),即可获取一份最新的可用的配置数据。为防止短时间出现大量请求,diamond-client实现了一个带有过期时间的缓存,在过期时间内的请求直接返回缓存中的数据,不再向diamond-server发出请求。
4. diamond-client运行中感知数据变化
通过比较diamond-client和diamond-server的数据的MD5值,判断数据是否发生变化。diamond-server启动时,会将所有数据的MD5加载到内存中(MD5存储在MySQL数据库中),并且启动一个定时任务,定时去diamond-server检查数据是否发生变化。若MD5相同,则返回一个不变字符串给diamond-client,否则返回dataId和group给diamond-client,diamond-client根据dataId和group去diamond-server请求数据。
四、diamond容灾
diamond-server采用“数据库+本地文件”的方式存储数据diamond-server是一个集群
diamond-client保存snapshot
五、diamond适用场景
持久配置的统一管理(配置内容很少发生变化、一般为手动发布配置信息)运行时接收配置变化并处理
六、参考文献
diamond专题(二)http://jm-blog.aliapp.com/?p=1592diamond专题(三)http://jm-blog.aliapp.com/?p=1606
diamond专题(四)http://jm-blog.aliapp.com/?p=1617
相关文章推荐
- 过滤淘宝网弹出窗口
- jQuery实现类似淘宝网图片放大效果的方法
- php调用淘宝开放API实现根据卖家昵称获取卖家店铺ID的方法
- Python抓取淘宝下拉框关键词的方法
- 简单的抓取淘宝图片的Python爬虫
- python实现爬取千万淘宝商品的方法
- 淘宝JAVA中间件Diamond详解(1)-简介&快速使用
- 淘宝客被封作弊资金将返还给卖家
- 开网店的人均收入2115元
- 个人网店暂时不用交税了
- 26号起,淘宝老店可删“中差评”
- 淘宝网修改搜索功能 爆款将不起作用
- 淘宝购买SEO服务的站长注意:警惕被骗
- 天猫发布全新Logo形象
- 谈谈我的两个小徒弟故事:写给刚进入淘宝的新人们
- 自媒体人测评支付宝9.0版本
- 写给海淘新手的转运选择攻略(2014最新版)