文档章节

分布式环境下配置中心实现思考【推荐】

chaun
 chaun
发布于 2015/04/09 16:53
字数 802
阅读 97
收藏 1

行业解决方案、产品招募中!想赚钱就来传!>>>

转载注明出处: 季义钦的博客

最近在考虑分布式环境下配置中心实现。


我的配置中心需要如下功能:

1、服务动态注册和发现(包括负载均衡)

2、配置信息的读取和写入

3、配置信息、服务信息的监视(变化时通知)


针对配置中心有如下要求:

1、集群支撑

2、快速的写入和读取

3、强一致性

4、跨语言client支持


对于配置中心很难设计。

光用Zookeeper吧,发现一是跨语言支持不好,需要大量跨语言支持的开发,而且没办法在上面增加大量的算法和逻辑。

如果在Zookeeper前面加一层服务来作为辅助的话,又怕成为单点压力。


下面是我画的一个架构图,希望大家帮忙看看,踊跃讨论。

希望各位不管有什么意见和建议、都在下面评论里面留下自己的想法,帮助我改进,谢谢



============================= 20140818晚补充==============================

其实我想了想,单点压力并不是太大的问题。

可以为Java服务构造集群来解决,使用Nginx等负载均衡器做负载均衡,这样单点压力问题就没有了。


但是这样还有单点故障问题。

一旦负载均衡器出现故障,配置中心便无法使用,整个系统也就无法使用。

这个问题也可以通过增加多个负载均衡器来实现,客户端维护一个负载均衡器地址列表,选定一个作为有效负载均衡器。

当请求达到一定超时时限时,就换一个来试,直到成功,并将新的负载均衡器的地址作为当前有效地址记录。

不过这样做稍微有些麻烦。


其实除了上面讲到的两点之外,在Zookeeper前面加一层服务还有两个非常关键的缺点:

1、watch机制难以实现。

2、自动检测连接到Zookeeper 集群是否存活(Zookeeper中有短暂的znode的概念)无法实现,只能借用于定时向Java服务报告自己的状况这种传统的做法。


其实可以换一种思路,同样是增加一个辅助服务,但是我们并不让其屏蔽掉后面的Zookeeper集群,而是做一些算法方面的工作,比如当客户端请求服务地址时,根据一定的负载均衡算法返回最合适的服务地址,然而这就需要为Zookeeper Server集群开发不同语言的客户端。



直到最近ETCD进入我的视线,其提供REST API接口,即使用HTTP请求即可与Server集群交互,在跨语言方面支持好像很好,有待继续深入了解。


====================== 2014年12月补充 ====================

Zookeeper对跨语言支持也比较成熟了,可以用于生产环境!

ETCD也可以用,两者都可以,但是相对来说Zookeeper应用较广,成熟度较高,社区比较活跃,性能也高不少。


chaun
粉丝 92
博文 271
码字总数 91117
作品 0
深圳
高级程序员
私信 提问
加载中
请先登录后再评论。
记一次失败的Perl + Nginx + FastCGI 配置过程

这两天心血来潮,不知道为什么和 Perl + Nginx + FastCGI 配置 耗上了。但是失败了,记录如下: 1)安装Nginx 1.4.3 ,我的是WINDOWS 7 系统,修改配置文件如下: location ~ .(pl|cgi|perl)?...

通吃岛-低手哥
2013/10/27
1.6K
7
用vertx实现高吞吐量的站点计数器

工具:vertx,redis,mongodb,log4j 源代码地址:https://github.com/jianglibo/visitrank 先看架构图: 如果你不熟悉vertx,请先google一下。我这里将vertx当作一个容器,上面所有的圆圈要...

jianglibo
2014/04/03
4K
3
SQLServer实现split分割字符串到列

网上已有人实现sqlserver的split函数可将字符串分割成行,但是我们习惯了split返回数组或者列表,因此这里对其做一些改动,最终实现也许不尽如意,但是也能解决一些问题。 先贴上某大牛写的s...

cwalet
2014/05/21
9.6K
0
CDH5: 使用parcels配置lzo

一、Parcel 部署步骤 1 下载: 首先需要下载 Parcel。下载完成后,Parcel 将驻留在 Cloudera Manager 主机的本地目录中。 2 分配: Parcel 下载后,将分配到群集中的所有主机上并解压缩。 3 激...

cloud-coder
2014/07/01
6.8K
1
树莓派(Raspberry Pi):完美的家用服务器

自从树莓派发布后,所有在互联网上的网站为此激动人心的设备提供了很多有趣和具有挑战性的使用方法。虽然这些想法都很棒,但树莓派( RPi )最明显却又是最不吸引人的用处是:创建你的完美家用...

异次元
2013/11/09
6K
8

没有更多内容

加载失败,请刷新页面

加载更多

什么是移动语义? - What is move semantics?

问题: I just finished listening to the Software Engineering radio podcast interview with Scott Meyers regarding C++0x . 我刚刚结束了对Scott Meyers进行的有关C ++ 0x的Software En......

技术盛宴
41分钟前
24
0
算法与数据结构体系课

算法与数据结构体系课【超清原画】 下载地址:百度云盘 从0到工作5年,面试、进大厂、搭建知识体系、拓展技术上限 你不再需要其它算法与数据结构课程了 为什么学算法已经是一个不应该问的问题...

1930133570
今天
21
0
如何停止跟踪并忽略对Git中文件的更改? - How to stop tracking and ignore changes to a file in Git?

问题: I have cloned a project that includes some .csproj files. 我已经克隆了一个包含一些.csproj文件的项目。 I don't need/like my local csproj files being tracked by Git (or bei......

富含淀粉
今天
25
0
Redis阻塞

可能存在问题 内在原因:API或数据结构使用不合理、CPU饱和、持久化阻塞等 外在原因:CPU竞争、内存交换、网络问题等 问题处理: API或数据结构使用不合理,可能存在慢查询或者大对象: 发现...

游泳鸟
今天
17
0
OSChina 周五乱弹 —— 来人,上幼儿园老师跳舞的图!

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 小小编辑:《奇跡の海》- 坂本真綾 《奇跡の海》- 坂本真綾 手机党少年们想听歌,请使劲儿戳(这里) 巴蜀(@巴拉迪维)最近有点闹心了, @巴...

小小编辑
今天
64
1

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部