【转】diamond专题(三)—— diamond架构
大家好,这次为大家带来的是diamond的架构
说明:
1、作为一个配置中心,diamond的功能分为发布和订阅两部分。因为diamond存放的是持久数据,这些数据的变化频率不会很高,甚至很低,所以发布采用手工的形式,通过diamond后台管理界面发布;订阅是diamond的核心功能,订阅通过diamond-client的API进行。
2、diamond服务端采用mysql加本地文件的形式存放配置数据。发布数据时,数据先写到mysql,再写到本地文件;订阅数据时,直接获取本地文件,不查询数据库,这样可以最大程度减少对数据库的压力。
3、diamond服务端是一个集群,集群中的每台机器连接同一个mysql,集群之间的数据同步通过两种方式进行,一是每台server定时去mysqldump数据到本地文件,二是某一台server接收发布数据请求,在更新完mysql和本机的本地文件后,发送一个HTTP请求(通知)到集群中的其他几台server,其他server收到通知,去mysql中将刚刚更新的数据dump到本地文件。
4、每一台server前端都有一个nginx,用来做流量控制。
5、图中没有将地址服务器画出,地址服务器是一台有域名的机器,上面运行有一个HTTPserver,其中有一个静态文件,存放着diamond服务器的地址列表。客户端启动时,根据自身的域名绑定,连接到地址服务器,取回diamond服务器的地址列表,从中随机选择一台diamond服务器进行连接。
可以看到,整个diamond的架构非常简单,使用的都是最常用的一些技术以及产品,它之所以表现得非常稳定,跟其架构简单是分不开的,当然,稳定的另一个主要原因是它具备一套比较完善的容灾机制,容灾机制将在下一篇文章中讲述。
最新文章
- chrome的timeline中stalled问题解析
- node.js和express.js安装和使用步骤 [windows]
- USACO Section 3.1: Score Inflation
- SPOJ 2916 Can you answer these queries V(线段树-分类讨论)
- C++为QLabel增加单击事件
- 遍历、显示ftp下的文件夹和文件信息
- MySQL Workbench导出数据库
- RDLC报表系列(四) 矩阵
- 在CentOS7部署zookeeper集群以及简单API使用
- Service详解
- vue-cli脚手架npm相关文件解读(4)utils.js
- Idea下载后初始配置(windows环境下)
- python告诉你ti8 dota2英雄bp
- Android系统启动概要
- web service基础知识
- 关于android中透明、半透明、百分比转换
- Swift3 CADisplayLink简单用法
- Caused by: Unable to load configuration. - action - file:/C:/apache-tomcat-7.0.70/webapps/Structs/WEB-INF/classes/struts.xml:7:72 	at com.opensymphony.xwork2.config.ConfigurationManager.getConfigurati
- Tomcat部署Web应用
- JS学习:JavaScript的核心