说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

从远程调用框架认识Zookeeper

HTML文档下载 WORD文档下载 PDF文档下载
在Hadoop的学习过程中,Zookeeper是让很多初学者困惑的技术,夏俊认为远程调用服务是一个很适合Zookeeper应用的场景,他从自己设计的远程调用服务架构谈起,详细介绍了Zookeeper这一应用场景。

编者按:作为Hadoop的子项目,Zookeeper多数情况下是配合Hadoop的工作,但Zookeeper还有更广泛的应用场景。Zookeeper是Google Chubby的开源实现,主要用来解决分布式集群中应用系统的一致性问题,它能提供基于类似于文件系统的目录节点树方式的数据存储,维护和监控数据的状态变化,做到基于数据的集群管理。本文转载自夏俊的博客,作者从远程调用服务的架构来认识Zookeeper,相信读完本文,对Zookeeper也会有新的认识。以下为文章内容:

远程调用是系统或进程间的通信机制,是分布式系统开发的核心技术。远程调用技术可以将一组计算机系统形成一个网络系统,对外提供整体服务,那么这一群的计算机系统就构成了一个更大型、性能更高的计算机系统。

远程调用服务的架构设计总述

首先我们要深入理解以下几个问题:为什么应用软件服务里需要一个远程调用服务?远程调用服务解决了软件设计中的什么问题?

笔者曾写过一篇关于分布式网站架构设计的文章, 在文章开头就把这个新的网站架构方案和传统的企业软件的B/S架构作了对比,笔者将一个网站里提供业务服务的组件抽象为独立的服务系统,接收用户信息的逻辑部分抽象为前端系统,服务系统和前端系统使用netty这样的通讯组件进行通讯。而到了讲解远程调用服务的框架设计时候,将netty通讯组件进一步抽象为一个通讯独立系统及远程调用服务,这就是为什么要设计远程调用服务的缘起了,远程调用服务会带来了网站架构的升级,如果传统的企业B/S架构为1.0版,前端和业务服务端分离为独立系统则是2.0版,那么引入了远程调用服务网站就是3.0版了,3.0版的架构带来的好处就是可以将N多的前端系统和N多的业务服务端系统融为一个整体,网站的规模会越来越大,提供的服务也会越来越多,这既避免重复造轮子的问题还使得网站规模越来越大。


3.0版网站架构总图

有了远程调用服务,我们可以做到业务级别的集群,例如:一个制造企业,一般都会有采购业务,生产业务、销售业务以及财务业务,按照传统的思路我们都会给每个业务独立开发一个系统,如果引用了远程调用服务,我们可以将这些业务都做成独立的服务,这些服务组成业务集群,而这些服务都是用统一的远程调用服务作为操作的入口,这样前端的调用者可以做到应用的统一。所谓的应用的统一淘宝网站是最典型的代表,我们在一个同一的网站里可以操作各种不同的应用,而不会发生因为应用的不同我们就得重新访问新的地址或者重新登录到另外一个系统里做其他业务的操作。而服务端这边,完全可以摆脱传统的客户端和服务端耦合的开发,增强了整个服务端的专业性和稳定性,这样更易于服务端的扩展性和可维护性。如果服务端之间也需要相互调用也可以通过远程调用服务实现,由于远程调用服务的统一性,这样就避免了服务调用之间报文和调用方式的不统一,规范了整个开发的流程。如果远程调用服务还有负载均衡功能,整个服务集群就变成了一个私有的云,所以说远程调用服务是云计算的重要组成部分,这个说法一点都不为过。

远程调用服务技术原理


远程调用框架

传统的服务调用都是服务提供者和服务调用者的直接调用,从架构图里我们看到这里多了一个远程调用管理组件,远程调用管理组件是一个独立的服务系统,为了保证该系统的稳定性,它也一定是一个分布式的系统,但是这个分布式系统和Web的分布式系统是完全不同的分布式系统。传统Web应用集群是基于HTTP协议的无状态的特点设计的,因为每个HTTP请求都是一个独立的事务,不同请求之间是没有任何关系的,所以我们可以将Web应用部署到不同服务器上,请求不管到了那台服务器,都能正常的给用户提供相应的服务,但是Web应用的session机制是有状态的,所以传统Web集群都是要有session同步的操作,大型网站往往会把session功能抽象为独立的缓存系统,但是这里的远程调用管理组件的集群原理或者说分布式原理是有别于Web应用集群分布式原理的。远程调用管理组件可以当做一个注册中心,它会记录下服务提供者和服务调用者的相关信息,并将这些信息推送给服务提供者或者服务调用者,为了保证系统的执行效率,这些注册信息都是记录在内存里。我们试想下,如果这些注册信息丢失,整个系统将会不可用,因此远程调用管理组件的集群是一种保证数据可靠性和服务提供健壮性的集群,而不是建立在HTTP无状态特性基础上的集群。

我们这里假想下远程调用服务的集群运行场景,我们假如有5台服务器作为远程调用服务运行的服务器,那么每台服务器都必须有注册信息的冗余备份,当服务运行时候其中一台服务器发生了故障,这台故障的服务器上的数据不会丢失,此外集群应该还要有一个检查故障的机制,当发现有台服务器不可用的时候,能及时剔除该服务器,而Zookeeper就是解决这种问题的技术框架。此外除了保证系统的稳定性和可用性外,集群的数据存储方式也是很重要的,前面我讲到集群的数据存储要有一个冗余机制,除了冗余机制还要有一个很适合快速访问和读写的数据模型,而Zookeeper正好包含这种数据模型,所以我设计的远程调用服务是一个很适合Zookeeper应用的场景。

远程调用管理组件还有一个心跳机制,心跳机制的作用是检测服务提供者的健康性及服务提供者是否可用,服务提供者启动时候会将自己的注册信息发送给远程调用管理组件,这个注册信息里包含服务端的IP地址和端口号,远程调用管理组件会启动一个线程,根据定时对这个IP地址和端口号去ping这个IP和端口号对应的应用是否可用,如果不可用远程调用管理组件会反复尝试几次,这个次数和多久检测心跳都是可以配置的,如果反复几次还是不通,那么就认定该服务不可用了。有网友在QQ上问我,为什么不检测服务调用者的心跳,这个完全没必要,调用者是主动方,提供者是被动方,这就好比你访问网站,如果你生病了不去访问了,系统没有必要检查你是否已经生病了。

VB如何设置对VB数据库连接的动态路径 VB如何使用 ADO 來压缩或修复 Microsoft Access 文件 VB如何修改Foxpro数据库(不是用VB实现的,不过也可以看看) VB如何在 SQL 语句中使用日期? 返回 VB如何在表中保存单引号? VB如何抓出 Access 的 Table 欄位中的【敘述】部份呢? 实现Access数据库的Web查询-VB资料 使用Visual Basic访问数据库几个注意的问题 数据库查询-VB资料 数据约束控件和 RecordSet-VB资料 锁住数据库中的表 -VB资料 谈谈VB的数据库编程方式 为VB5辩解: VB处理数据库时求数据表记录总数的最佳方法 为什么安装后的数据库应用总是路径不对或找不到? 返回 -VB资料 无论如何,就是只能输入数字-VB资料 VB用 DAO 或 ADO 正确访问 Access 2000 VB用CELL组件显示Access数据库的图片对象 VB用DAO打开Excel文件 VB用DATA控件绑定报表控件打印报表 VB用EXCEL来打印报表并生成折线图 VB用EXCEL组件简化VB编程的一种方法 VB用MDB文件做密码库 VB用ODBC API访问ODBC数据库 用VB 实现类电子表格的数据录入 用VB5直接控制Excel 97 用VBA编制Access的查询程序 用VB和RDO访问SQL Server 用VB开发多通道仪表数据采集程序 用VB实现关闭所有数据库对象 用VB实现类电子表格的数据录入 VB用代码创建数据库,表,字段 OLE 文档序列化!请大虾指教! 双硬盘????,郁闷中。。。在线等 批量数据写入,是否有简捷的方法 请问谁有1、美达S693A2主板光盘;2、还有美达p4vad主板,是什么显卡? 用java weblogic.ejbc编译时为何总报找不到.xml文件 ftp的问题 请问各位:如何在ASP.NET中打开一个现有的或一个新的WORD文档? 讨论怎么发财 关于查询系统的需求分析怎么写?用触摸屏实现 如何把一个文件保存到数据库中? 耦合 哪里有WEB合同管理代码?或资料?演示?急!!!谢谢!有人知道吗?? 谁能把这段代码破解 求一函数,在线等....... 剛從vb轉delphi,幫我看一看!結貼很快! 如何可在WINXP中改MAC?? sprintf(a,"%2X",b)问题 关于简单的access查询 java字符转换问题!!! 请教一个Struts标记问题! 一个cab下载的错误信息解读,请教高人。 OutLook?怎么用它发邮件,经常提示错误? 帮看这段删除纪录代码有什么问题?三层结构oracle 本人要做一个WEB合同管理平台,由于以前没做过,请大家指示? Web Application 中怎么来调用 Web Server?谢谢! DataGrid中模板列嵌套的DataGrid怎样相应其事件 [调查]程序员证在你们公司里到底有多大的作用?有多少人有证?希望有没有证的都进来说一下。 怎样把字符串"C;\aaa\bbb"变成字符串"C:\aaa\ccc\dd"?用什么函数,操作? 我的SQL Server 装好后,出现下面的错误 这个文件查找真是怪!......msdn源代码居然有问题, 进来看看... 请问在TreeView控件中如何通过光标的上下移动获得光标所在项在数据库中的ID值 對掌上電腦Sony Peg-TG50和ACER N10怎麼看??? 使用SOAP协议传递服务器端查询结果容量问题? 菜鸟问题:数据窗口怎么设置检索参数?急!!在线等 ****入门提出的问题****,请各位高手指教! 很简单的一个问题。 这个问题怎么处理? vb如何调用一个组件?? 一个小问题,可不简单哦! 应聘CMM时,会被问到什么有关CMM的问题? 调用servlet出现这个错误HTTP method POST is not supported by this URL 在公网上如何连接远程数据库啊。。 这算不算bcb的bug?关于Image控件的使用。 使用 GDI 函数画直线时,如何同时在该直线的两端画出箭头来? 怎样改变网卡的工作模式???~~ 疑难杂症--关于共享adsl专线的网络问题--疑难杂症 小弟有一事请教??? 我的IE WEB 控件---TREEVIEW控件,怎么没有treeView.AfterSelect()事件? 新手接触midas的若干典型问题!小的头都搞大了!还是不行!望各位大虾赏个脸解答一下! 一个静态页面中的困惑!心急如焚.................. 请问这句话什么意思? 淘宝秒杀拼音该怎么输?各种首字母,各种输拼音~几天了就是输不对,谁能举个列子到底怎么才算对? 函数f(x)=x+sinx+1(x∈R) ,若f(a)=2 ,则 f(-a) 的值为( 【图】一个摩擦力的题,力F作用于木块a,b,c一起在水平地面上匀速运动…… 淘宝一元秒杀一串拼音什么意思 数学中的解得是什么意思? 木块在不受力时恰能从斜面上匀速滑下,那么要将木块匀速推上该斜面,求图的受力分析和详细过程需要多大的外力F? 3个数最大公约数算法请用高中必修3的语言来写,C++,JAVA等不适宜.我就是说只有INPUT PRINT IF WHILE那些来写 atlas什么意思 乙烯裂解炉工况特点 关于求最大公约数算法的问题书上是说:1.输入m、n(m为被除数,n为除数)2.m/n得余数r.3.判断r=0?是的话n为最大公约数.4.否则讲n赋给m,r赋给n,循环2.我想问为什么能这么做?(为什么能用除数除 阿特拉斯的天罗地网是什么 石脑油管式炉蒸汽裂解制乙烯.相关内容1举例说明石脑油管式炉蒸汽裂解制乙烯的反应机理,(自由基的链引发连传递链终止),并回答为什么主要产品是乙烯2什么养的石脑油组成更容易裂解 请指出电熨斗的各个部件哪些是导体,哪些是绝缘体,哪些是热的良导体,哪些是热的不 阿特拉斯的介绍? 乙烯裂解炉有什么简单实用的提高效率的办法? 最大公约数 算法求正求两个数:m,n的就大公约数算法为:t=1;while(t){t=m%n;m=n;n=t;}结果n为最大公约数!~!请问能用数学证明它的正确性吗?这题的意思是..m/n得到的余数为t,如果t不等于0,则把n的值 南京阿特拉斯科普柯待遇有谁知道南京的阿特拉斯·科普柯(南京)建筑与矿山设备有限公司 业务助理待遇怎么样 有没有发展前景? 变色玻璃的材料有可能做成透明涂料涂在普通玻璃或塑料上吗?变色玻璃的原理好像是往玻璃里加入一些化学物质,被可见光激发会产生可逆反应,同样的原理目前的技术有可能做成透明涂料或 请问有木有关于数学运算的英文文献啊?急啊!最好还有中文翻译哦 ooa ood oop指的是什么 汽车一般经过主火开关的电路是正极线吗?还有汽车上一般那些开关里是搭铁线,中控锁怎么安装的? 求一篇5到6页的数学英文文献,需要中文翻译, 曲柄连杆在图示位置时B点速度Vb和加速度Ab为答案 Vb=r*ω 方向向左 Ab=1/根号三 *r*ω2(1处以根号三*角速度的平方*半径) 匀速直线运动中速度决定位移吗? 秦始皇的历史作用?秦始皇是怎样的一个人?他在影视剧中与历史上的有没有差别? java面试提问:什么是OOP?我知道OOP是面向对象编程,面向对象主要有抽象,封装,继承和多态,按照书上对几个特征的定义回答,总觉得不太好,不口语化,问了什么是OOP之后,又问比如做一个人事管理 KCR与MTR分别指什么啊 电火花成型机 工作液为什么要用煤油? 鱼类的血液循环路线是几条? A、四条 B、三条 C、两条 D、一条(单循环) 找工作,起了一卦,六爻算的.卦象是睽卦.六次掷硬币,第一次,第三次,和第四次都是变爻.此卦怎么解? 每天什么时间运动最科学呢? 软骨鱼类与硬骨鱼类在血液循环系统给方面的主要区别 白白2个字简写英文怎么写 say 双控接线法 第一种单进火线控制我了解了 第二种两个开关都需要进火进零 中间连接一个线分开接灯头 那不是灯头会出现两头都是火的现象吗!? 但是试过 发现没什么异常 光电效应中的电流方向是否与光照方向相反? NVER SAY GOODBEY 我的女孩 拜求大师刚刚看完了矛盾论,但是不能明白为什么说既然矛盾的斗争性是绝对的、无条件的,不论是在矛盾双方要相互依存、共处于一个统一体中的时候,还是在统一体破裂、对立双方转化的时 数学搜题中^是什么意思 双驴头抽油机冲程计算方法 “描浓”用英语怎么说? 求教图中是否意思4组电流互感器 各互感器的绕组是2个?两图有什么区别呢,有一个有竖线,有一个没有 抽油机冲程是什么? 黑色的英语如何写 直流电流互感器在CAD电气图纸中的表示方法交流电流互感器我们是这样表示的 7天 9月29.30 十月1-5 按理说是7天,但是要看高几了~现在很少有高中能放全假了 7天的假 能放个3天就很高兴了 OOP密封袋是什么意思? 为什么自己包的包子蒸好后皮很硬,而外面买的皮却很柔软.已经会发面了,不要复制原有的答案, 中国有国际城市科学节吗? 求问什么是上市公司?阿里巴巴是不是上市公司? 写出猕猴桃在分类等级上所处的位置( ) never say goodbey 64卦的第35卦是什么? 化学实验颜色对比我现在在做化学实验,滴定离子浓度,很多都需要颜色辨别是否反应完全,请帮忙提供一份化学实验的颜色对比的图片啊,主要包括:砖红色、橘红色等等等等! 飞机表演时的彩烟是什么物质? 一个六位数,个位数是六,把个位数移到最前面,使其变成原的来的4倍!求原来的六位数是!快啊, 化学实验中说的实验结论是什么 威马G-896STJ电熨斗为什么比一般的熨斗重?买了款威马的G-896STJ电熨斗,发现比你一般的电熨斗要重啊,这是为啥? 求一道数学趣味题的解abcd*e=fghiabcdefghi代表123456789,他们各代表的是多少? 化学实验分析和实验结论一些化学的习题让人填实验分析和实验结论,可是我搞不懂两者有什么区别. 澳使馆为美搜集亚太情报 中国是监听目美国务卿将于3日访埃及 穆尔西被罢黜俄男子在法庭引爆手榴弹 导致2人死亡外交部:美方澄清钓鱼岛共同防卫计划的俄男子在法庭引爆手榴弹 导致2人死亡中国驻日使馆表彰见义勇为留学生印将建高达182米世界最大雕像 高约印度古吉拉特邦建世界最大雕像 暗贬尼俄专家称俄罗斯人无法仅凭工资购买一套外交部:望澳方重视对华关系 视中国发律师称斯诺登可在俄境内就德国遭美监听中方对目前阶段销毁叙化武相关决定执行嫦娥三号月球探测器完成总装 正进行飞卜拉希米称日内瓦会议有望于数周内召开外交部:中方将与上合组织各方一道进一俄将向美驻阿富汗军队追加提供30架米俄一法庭发生爆炸致2死2伤公交司机因车速慢被打 打人者自称是警福州破获虚假恐怖信息致航班延误案 1《新快报》社高层调整 社长、总编及副日俄防长会谈当天俄军机飞临 日战机紧打车背后的止损逻辑18K黄金+白金=29万元“土豪金”我的宠物小鸡除夕上盆菜 马上添喜庆险胜过后夜谈心 李娜师徒笑开颜难觅半份菜生活在别处专家:选“差生”有损学生人格坐 稳他们未被遗忘 “事实孤儿”获助加快专业批发市场转型升级广州天气省领导河源调研产业园建设记录一场从零开始的民间公益2014广娱大本营与你一生一世沙滘 小岛的闲食时光抱团来“洗澡” 如何不“纠结”?银行理财产品 节前年化收益率或再冲高大洋网征新年愿望印度少女遭两次轮奸后被烧死 警方被指六旬翁“入选”国家队
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘