搜索
搜 索
本版
文章
帖子
用户
图文精华
hadoop-2.6.0+zookeeper-3.4.6+hbase-1.0.0+hive-1.1.0完全分布 ...
首页
Portal
专题
BBS
面试
办公|编程助手
更多
登录
注册
用户组:游客
主题
帖子
云币
我的帖子
我的收藏
我的好友
我的勋章
设置
退出
导读
淘贴
博客
群组
社区VIP
APP下载
今日排行
本周排行
本周热帖
本月排行
本月热帖
会员排行
About云-梭伦科技
»
专题
›
技术学习(版主发帖区)
›
大数据学习
›
总结型
›
分布式环境下配置中心设计实现考虑问题
0
2
0
分享
分布式环境下配置中心设计实现考虑问题
52Pig
2014-10-13 22:37:54
发表于
总结型
[显示全部楼层]
只看大图
阅读模式
关闭右栏
2
12770
本帖最后由 pig2 于 2014-10-13 23:37 编辑
阅读导读:
1.设计过程中单点压力问题是如何解决的?
2.设计中单点故障问题是如何解决的?
配置中需要实现的功能:
1、服务动态注册和发现(包括负载均衡)
2、配置信息的读取和写入
3、配置信息、服务信息的监视(变化时通知)
针对配置中心有如下要求:
1、集群支撑
2、快速的写入和读取
3、强一致性
4、跨语言client支持
对于配置中心很难设计。
光用Zookeeper吧,发现一是跨语言支持不好,需要大量跨语言支持的开发,而且没办法在上面增加大量的算法和逻辑。
如果在Zookeeper前面加一层服务来作为辅助的话,又怕成为单点压力。
下面是我画的一个架构图,希望大家帮忙看看,踊跃讨论。
希望各位不管有什么意见和建议、都在下面评论里面留下自己的想法,帮助我改进,谢谢。
其实我想了想,
单点压力
并不是太大的问题。
可以为Java服务构造集群来解决,使用Nginx等负载均衡器做负载均衡,这样单点压力问题就没有了。
但是这样还有
单点故障
问题。一旦负载均衡器出现故障,配置中心便无法使用,整个系统也就无法使用。
这个问题也可以通过增加多个负载均衡器来实现,客户端维护一个负载均衡器地址列表,选定一个作为有效负载均衡器。
当请求达到一定超时时限时,就换一个来试,直到成功,并将新的负载均衡器的地址作为当前有效地址记录。
不过这样做稍微有些麻烦。
其实除了上面讲到的两点之外,在Zookeeper前面加一层服务还有两个非常关键的
缺点
:
1、watch机制难以实现。
2、自动检测连接到Zookeeper 集群是否存活(Zookeeper中有短暂的znode的概念)无法实现,只能借用于定时向Java服务报告自己的状况这种传统的做法。
其实可以换一种思路,同样是增加一个辅助服务,但是我们并不让其屏蔽掉后面的Zookeeper集群,而是做一些算法方面的工作,比如当客户端请求服务地址时,根据一定的负载均衡算法返回最合适的服务地址,然而这就需要为Zookeeper Server集群开发不同语言的客户端。
直到最近ETCD进入我的视线,其提供REST API接口,即使用HTTP请求即可与Server集群交互,在跨语言方面支持好像很好,有待继续深入了解。
出处:
季义钦的博客
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
显身卡
已有(2)人评论
电梯直达
正序浏览
buildhappy
发表于 2014-10-14 08:28:52
顶一个 谢谢
回复
使用道具
举报
显身卡
sun128837
发表于 2014-10-14 09:20:29
赞一个,好人那
回复
使用道具
举报
显身卡
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
发表新帖
52Pig
中级会员
关注
49
主题
57
帖子
16
粉丝
TA的主题
Google云系统将支持Ubuntu Linux发行版
2014-11-12
Trident拓扑与传感器数据
2014-11-11
Scala-Spark环境搭建配置
2014-11-10
PeopleRank从社交网络中发现个体价值
2014-11-9
用Mahout构建职位推荐引擎
2014-11-8
24小时热文
Docker+容器与容器云(第2版)
docker容器实战:原理、架构与应用
Docker基础与实战
kafka面试题精选
Nebula Flink Connector 在实时 ETL 的实践
关闭
推荐
/2
中文版ChatGPT
1.无需魔法 2.提高编程效率 3.提高文档能力
查看 »
新手帮助
新手帮助:注册遇到问题,领取资源,加入铁粉群,不会使用搜索,如何获取积分等
查看 »
意见
反馈