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

从远程调用框架认识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上问我,为什么不检测服务调用者的心跳,这个完全没必要,调用者是主动方,提供者是被动方,这就好比你访问网站,如果你生病了不去访问了,系统没有必要检查你是否已经生病了。

通过700合作伙伴的进一步细分,Google变得越来越像微软 一周热点:高薪必备:Hadoop求职者的6大攻略 谷歌Android主管:两周内为开发者推出可穿戴设备SDK 【OSTC讲师专访】魏子钧: “中国式开源”没有“然后” 揭秘CarPlay欲将颠覆汽车产业的真相 联想王岳源:利用Web App推动互联网转型 IT经理人:提高团队工作效率的11个方法 30美元一小时,数据科学家的收入是否太低? 选择Go语言的12个理由 动鱼数码携三款大作参战Unity游戏及应用大赛 从Google、Apple、Dropbox、Twitter和Square学到的管理哲学 软件开发就像炒股,关键看你怎么选股票! iOS 7.1正式版:新增CarPlay连接功能、完美支持iPhone 4 【OSTC讲师专访】马全一:Docker,Hadoop的竞争者来了! 福布斯:全球那些富可敌国的科技大佬们 抢工作、争资源,如此聪明的AI你拿什么阻止? iUI:移动Web应用开发必备的开源框架 支持iOS 7.1!苹果发布Xcode 5.1更新 视频云将成为2014年乐视新的发力点 3月12日:万维网迎来理念诞生25周年 《近匠》云适配CEO陈本峰:跨屏移动,曲线一样救国 Intel陈荣坤:赢取移动市场的几个先决条件 而立之年,开发者在害怕什么? 首席工程师揭秘:LinkedIn大数据后台是如何运作的 年交易额1800亿美元,揭秘PayPal成功背后的三大热门技术 微软妥协Android?向该平台推开源Office 365 SDK 中国云计算大会PPT集萃(一):众多名家分享技术挑战与行业趋势 速度是现在的10000倍,出自物理学家之手的新型电脑 逗你玩?淘宝开放平台从4月1起开始全面收费 出现编程疲劳?千万别纠结 “编程竞赛界王子”教你更好的招聘程序员 关于Access数据库的两个问题,急! 一个初学者的简单问题。 大家好,一个小技术问题,不知道怎魔办? 两句的代码都出现问题!憋闷 高分寻求《数据结构-C++语言描述》书友,来者有分 谁知道哪儿能下载access的jdbc驱动程序吗? 好消息,Win2000下自定义报表问题! ATL里使用静态库的问题 我看不见你们问题的内容 试试难不难??HELP 请问如何禁止浏览器的退回按钮 怎样在客户端实现连接服务器的数据库,不装oracle的客户端 怎么获得地址 怎样使UltraEdit可以编译Java? 菜鸟问题:我建立一个工程后,用ClassWizard增加了一个类,它的基类是CTreeView,当我编译的时候出现错误,提示我的基类是不明确的,这是为什么 这个错误是因为什么?Exception in thread "main" java.lang.NoClassDefFoundError:Example 为什么接到集线器上的网线会一闪一闪的! insert into的问题,看是简单,但却不简单。。。 vb绘图问题 请问加入什么代码才能在下面的程序中实现分页!??谢谢! 如何判断局域网内另一台机器上的一个NT服务是否启动? 一各递归的问题。 寻求有关NAND FLASH 和支持他的文件系统的中文资料 Access数据库应该用什么数据库引擎驱动? 各位,谁有InstallShield Express 3.53 15天使用版的激活码阿 ado 中的数据库动态查询 好久没上来了,请大家谈一谈portal吧..... 连接 Access数据库应该用什么数据库引擎驱动? 怎么做到你在Copy文件,遍历目录时.进度条和操作过程一至呢? 如何在XP下设置打印机的纸张 请问如何获取DataList的EditItemTemplate中的自定义控的属性? asp.net(C#)里,如何判断一个数据库的字段是否为null? 世界杯和队歌集锦 在汇编中,如何实现延时 Outlook的问题,很急!!!在线等!!! 小弟最近需要注册一国际域名,可否提供一个地方? 诚征MCSD考友,本人上地上班 请大家指教 请教各位一个关于ADO的问题,很奇怪 应用程序性能评测器 (APE,Application Performance Explorer)大家有没有使用经验?来交流以下了! 关于outlook express和MSN Messager的问题 我想从指定的文件初始化 Bitmap 类的新实例。我怎样才能更改那个新实例的大小和分辨率呢? 各位软件开发人员:大家都看到了IT市场的不景气,你们各自有什么看法,请发表意见!!! 送分了! 菜鸟提问: 用TDBNavigator + DBGrid删除记录时,会弹出一个英文的删除确认对话框,请问如何去掉该对话框? 急!!!win2000 server安装server pack 2重新启动进入系统后,一切都变成黑白的了???怎样解决?谢谢! 大家帮忙,哪里有datalist中绑定datalist或者datagrid的例子啊? 分啊 程序发布 dephi中用哪个函数可以解决两个日期的差,要求精确到分钟! 宋茜现在跟谁一个屋呢,以前是跟雪莉,上次看hello fx 雪莉跟月亮一屋了.那宋茜呢应该不是吧,上会看hello fx里水晶带着摄制组进的宿舍,似乎她在家住吧, 请问如何分析一种树脂的成分? 桶装的纯净纯净水打开以后保质期是多久?饮水机上 F(X)中Krystal和组员中谁的关系最好,是宋茜吗?Krysta在表演是晕倒之前,不是还向V妈求助吗?是不是和V妈最好 求电子高人.可以把档位式的电扇调速器接在电烙铁上实现调温的目的吗?50W的烙铁,乘风牌1400mm的调速器,5档的 葡萄酒酿造过程中为什么要加二氧化硫? 氢氧化钠和二氧化硫反应生成什么? 如图所示,下列说法正确的是:A.灯泡发光说明电路中有电流B.金属导线中发生定向移端是正极C.灯泡发光时,电源上端是正极D.灯泡发光时,电源将电能转化为化学能哪位大侠给我解释下 为什么身上带那么多静电啊?要入个学还得提个问题先,那就问个吧,静电是怎么回事呢?脱个衣服那么电,连火钳子也带电. 氢氧化钠和二氧化硫反应生成什么呀 家兔的组织细胞新陈代谢产生的二氧化碳在排出体外的过程中,可以不经过左心房,为什么 冬天身上容易带静电是什么原因? 手部产生的二氧化碳如何排出体外 家兔的组织细胞新陈代谢产生的二氧化碳在排出体外的过程中 可以不经过( ) A 右心室 B 左心房 C 体静脉 D 肺动脉 一个火车车皮是装60吨吗?多少立方呀? KARA姜智英的脚码 FX雪莉的鞋码KARA姜智英 FX雪莉 MISSA秀智被称为大脚SISTERS 她们的鞋码分别是多少啊? 吊扇调速开关怎么接说详细点有图拟看怎么接 树脂胶粉有腐蚀性吗? 南亚的主要河流只要名称 关于人类历史发展的规律能不能解释更详细? 被子上有静电,怎么弄掉被子上有静电,睡觉的时候这样很不舒服,被电着了很痛.谁有没有什么小窍门可以去除静电. KARA智英的理想型? 学习从宏观、人类和世界历史的角度思考、分析中国古代历史的问题,出人类历史发展中的普遍性规律和真理是什么? 如何清除被子的静电? 东南亚,南亚流量最大的河流各是什么? 做可燃物在氧气中燃烧的实验时,要注意以下问题请你说出原因,1可燃物要瓶口缓缓伸到瓶底,2点燃硫粉时,硫的用量不宜过多3燃烧铝箔时,铝箔的一端系一根火柴且集气瓶底部铺一层细沙 被子起静电.怎么办? 东南亚的主要河流有哪些?请解答 在做碳硫铁等物质在氧气中燃烧实验时,为何可燃物应由瓶口缓慢向下伸? 冬天用容易产生静电的被子当被子```````冬天用容易产生静电的被子当被子,会有什么情况啊啊``就是会有什么病,会痒,会怎样怎样的?```谢谢你们的回答,让我长了见识啊``` 东南亚主要河流流向伊洛瓦底江,萨尔温江,红河,湄公河,湄南河的流向?分别注入那个大洋?他们所在国家的名称?“流向”指河流的方向,如自北向南流,自西向东流所在国家名称指发源地 空气中氧气含量的测定实验对燃烧匙内可燃物的要求最好附带实验图. 被子有静电怎么办 在直流电动机中,定子是指磁铁,还是包括了磁铁和电刷? 电机电路中熔断器、断路器的选型原则电工书上看到,熔断器熔体电流〉=启动电流/2.5,同时例题中7.5kW的水泵选了50A的熔体.现在,我要选用7.5kW的电机驱动液压泵,有几个人说选D型20A的就可以了, 怎么判断蛇是有毒的还是无毒的? 人教版八年级物理是否改版了 电烙铁与白炽灯在额定电压和额定功率一样哪个散发的热量更多? 怎样区分无毒的蛇和有毒的蛇? 直流电动机是由磁铁、线圈__、__和直流电源组成的?填出横线上的内容, 电灯开关怎么接?我家电灯有2个按钮.按钮A单独按下,大灯亮起.按钮B单独按下,小灯不亮.同时按下按钮A和B,两盏灯同时亮.如何才能让按钮A和B分别控制大灯和小灯呢? 怎样识别可受热无毒的塑料制品 新陈代谢:)现象,如鲸浮出水面( ),松鼠摄取营养物质 请问树脂胶粉的具体化学名称 火车车皮吨位车型 车号 怎么区分 生物的特征为 生活需要营养物质 能呼吸 能新陈代谢 对外界刺激做出反应 能生长繁殖 必须满足这些条件才能算生物吗 普通胶粉与塑化胶粉的区别多少目以上属于超细胶粉 矿泉水或纯净水保质期那么长,是否有添加剂或防腐剂之类的?我家这边没有自来水,地下水很脏,怀孕后至儿子现在一周半,我一直用农夫山泉和娃哈哈纯净水,最近突然想,它们保质期都一年,是 生物具有许多共同特征,其中生物最基本的特征是 a.运动 b.应激性 c.生长现象d.新陈代谢 物质满足什么条件时可以用燃烧法测定氧气的含量 食品中不要添加防腐剂如何提高保质期我想知道在食品罐头中不添防腐剂这样提高保质期,是速食食品. 氢氧化钠与足量二氧化硫反应生成?这里的足量按过量还是不足看? 氧气的特征是----------检验氧气的方法是---------------氧气的含量越高,木条燃烧越---------------- 气车发动机气缸没压力是什么原因 过量的二氧化硫通入氢氧化钠溶液当中发生的反应?不过量时和过量时的方程式. 在动植物得到了哪些启示的作文400字 初三化学.盐在人体的新陈代谢中十分重要,它可以维持血液中适当的酸碱度,并通过人体复杂的作用,产生消化液帮助消化.这里的盐是指( )A.氯化钙 B.硫酸钠 C.氯化钠 D.氯 硫酸铝与氨水反应可制氢氧化铝,如果氨水是浓的可以吗? 崔雪莉跑男上骂脏话,“XX妈”,太那个了吧 一定量的so2与naoh溶液反应 所得产物中含有Na2SO和NaHSO3 物质的量之比为2:3则参加反应的SO2与NaOH的物质的量之比为
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘