特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过。如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/mao2080/

大家好,这次为大家带来的是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的架构非常简单,使用的都是最常用的一些技术以及产品,它之所以表现得非常稳定,跟其架构简单是分不开的,当然,稳定的另一个主要原因是它具备一套比较完善的容灾机制,容灾机制将在下一篇文章中讲述。

原文地址:http://aliapp.blog.51cto.com/8192229/1325686

最新文章

  1. chrome的timeline中stalled问题解析
  2. node.js和express.js安装和使用步骤 [windows]
  3. USACO Section 3.1: Score Inflation
  4. SPOJ 2916 Can you answer these queries V(线段树-分类讨论)
  5. C++为QLabel增加单击事件
  6. 遍历、显示ftp下的文件夹和文件信息
  7. MySQL Workbench导出数据库
  8. RDLC报表系列(四) 矩阵
  9. 在CentOS7部署zookeeper集群以及简单API使用
  10. Service详解
  11. vue-cli脚手架npm相关文件解读(4)utils.js
  12. Idea下载后初始配置(windows环境下)
  13. python告诉你ti8 dota2英雄bp
  14. Android系统启动概要
  15. web service基础知识
  16. 关于android中透明、半透明、百分比转换
  17. Swift3 CADisplayLink简单用法
  18. 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
  19. Tomcat部署Web应用
  20. JS学习:JavaScript的核心

热门文章

  1. loj 2392「JOISC 2017 Day 1」烟花棒
  2. MySQL主从延时这么长,要怎么优化?
  3. Clang调试CUDA代码
  4. 89. Gray Code (Java)
  5. Java中的字符串常量池,栈和堆的概念
  6. 2019.9.27PHP基础
  7. LCD 原理和移植总结【转】
  8. init container
  9. FTP部署与使用
  10. 2017 ICPC 乌鲁木齐