APP下载

基于 ZooKeeper的一种分布式系统架构设计与实现*

2018-01-19陈天伟彭凌西

通信技术 2018年1期
关键词:实时性客户端分布式

陈天伟,彭凌西

(1.电子科技大学,四川 成都 610101;2.四川城市职业学院,四川 成都 610110;3.广州大学,广东 广州 510006)

0 引 言

随着移动互联网的快速发展,大数据应用水平不断提高,较好的系统可扩展性﹑可靠性和实时性已成为企业级应用的核心需求。设计一个具备较好可扩展性﹑可靠性和实时性的分布式系统架构,已成为通信服务系统设计的关键[1]。

首先,分布式系统需要与集中式系统完全不同的系统架构。因为网络会损失信息,所以需要软件进行恢复。当网络出现过载时,也必须容错恢复[2]。数据由于共享存在安全隐患,容易造成对保密数据的访问。其次,数据一致性[3]。实际应用中,常常会遇到如下问题:当数据服务器过载时,需要通过分裂数据到不同的服务器上,从而将服务迁移到不同的服务器上,而多机分裂的难点在于如何使得多机在同一个分裂点原子地分裂;数据需要迁移时,需将数据按需分发,并保证数据迁移代价最低;当多个用户同时更新某个数据时,要保证最终数据的一致性。

结合某通信服务商的位置服务(LBS)系统的业务情况,针对位置定位的业务场景,设计了一种基于ZooKeeper的分布式系统架构。该架构通过分布式服务模型[4],实现了业务的发展需求,具有较好的可扩展性﹑可靠性和实时性。

1 系统设计

1.1 分布式服务模型

ZooKeeper[5]是一个开源的分布式应用程序协调服务。分布式服务模型如图1所示。

图1 分布式服务模型

该分布式服务模型可实现以下特性[6]:

①顺序性,包括偏序和全局有序。

②一致性[7]。客户端可连接到任意服务器,被认为是同一个视图。

③可靠性。一条消息被任意服务器接受,也会被所有服务器接受[8]。

④无关性[9]。客户端能够有效等待。失效的客户端和慢的客户端不会影响快速的客户端请求。

⑤原子性[10]。当更新时,包括成功和失败状态。

⑥实时性。可定时获得服务器的信息。

1.2 异步通信

ACE自适配通信环境(Adaptive Communication Environment)是一种面向对象(OO)的工具包[11]。该框架实现前摄模式(Proactor)等架构型模式[11],具有较好的性能和适应性。前摄模式(Proactor)具有较好的系统可伸缩性,如图2所示。通过异步I/O,充分利用CPU﹑网络接口和操作系统提供的并发处理机制,可极大提高通信效率。

前摄模式[11]包含如下角色:

①Handle句柄,用来标识socket连接或是打开文件;

②Asynchronous Operation Processor异步操作处理器,负责执行异步操作,一般由操作系统内核实现;

③Asynchronous Operation:异步操作;

④Completion Event Queue:完成事件队列,异步操作完成的结果放到队列中等待后续使用;

⑤Proactor:主动器,为应用程序进程提供事件循环,从完成事件队列中取出异步操作的结果,分发调用相应的后续处理逻辑[12];

⑥Completion Handler:完成事件接口,一般是由回调函数组成的接口;

⑦Concrete Completion Handler:完成事件处理逻辑,实现接口定义特定的应用处理逻辑[13]。

1.3 系统架构

服务进程视图[14]如图3所示。

图3描述了客户端服务请求步骤[15],具体如下:

①计算节点需要在分布式服务模型进行注册;

②计算节点地址列表由客户端向服务中间件模型发起请求;

③客户端收到服务中间件模型返回可用计算节点的地址列表;

④客户端随机选择一个节点,并发起连接请求;

图2 前摄模式

⑤建立连接;

⑥发送请求后,客户端需要进入队列排队并等待服务;

⑦获取请求参数,空闲服务从队列进行计算;

⑧将计算结果返回通信进程;

⑨客户端得到通信进程返回值。

图3 服务进程

系统架构的核心是分布式服务模型,分布式服务模型需要与协调服务建立连接[16]。协调服务具有极高的稳定性,部署的节点越多,可靠性越高。

分布式计算节点包括注册服务﹑服务加载﹑服务管理﹑通信服务四种类型的组件。外部请求调用时,可以指明服务名和请求参数,通过动态链接库方式进行调用。

1.4 系统部署

服务器操作系统采用Red Hat Enterprise Linux 7.3,选用7台服务器。系统部署架构如图4所示。部署了7个节点,在节点7上部署了服务注册﹑服务监管﹑服务加载和通信服务等组件。

图4 系统部署架构

2 具体实现

分布式系统架构实现了一种服务注册与感知机制,还实现了服务注册﹑服务监管﹑服务加载和通信服务等四个重要组件[17]。

2.1 服务注册

每个服务需要注册服务的套接字﹑服务种类等。

2.2 服务监管

对进程监控发现意外退出时,重新创建一个新的进程继续运行,实现较高的可靠性。

2.3 服务加载

依据通用的跨平台通信协议,服务加载可以采用任何语言开发。通过标准业务服务接口,业务逻辑代码只需实现接口便可被服务加载,通过这种方式实现较好的扩展性[18]。

2.4 通信服务

通过短连接[19]分装每对请求和应答报文,一旦通信完毕,则连接关闭。这种方式适合大规模的分布式环境,高效快速。

3 应用案例

经过测试验证,将分布式系统架构在某通信服务商的位置服务(LBS)系统中进行试点应用,并对性能进行了测试验证。选择Zookeeper服务器测试环境[20]如下:Zookeeper 3.4.5版本(软件配置);拷贝主机的CPU配置,内存8 GB,硬盘20 GB(虚拟机配置);戴尔PRECISION T7600工作站:CPU Inter Xeon-E5-2643 3.3 Hz,内存32 GB,硬盘500 GB(硬件配置)。

如表1所示,在测试环境中,选择800并发数执行“查找位置”操作,事务平均响应时间为0.94 s,事务成功率为100%。在测试脚本中参数化1000个区段,总计50 000用户数,平均每个区段约为50户,按照“用户”进行计算的平均系统吞吐量为12 400,最大吞吐量为13 600,可以满足500万用户的位置计算需求。

表1 统计数据表

经过实际场景测试,系统架构[21]在功能质量属性上有良好表现。集群管理服务实现了对动态增删节点的实时响应,扩展过程对系统访问者透明,使得系统可以按需进行扩展。

分布式系统架构[22]在非功能质量属性上也有良好的表现。在大数据集群管理时,可以动态进行节点操作,包括增加﹑删除和编辑等。当节点出现意外如宕机时,通信管理服务可实时隔离和告警[23],实现了较好的扩展性。

4 结 语

在某通信服务商的位置服务(LBS)系统运用中,“定位朋友”“查找位置”等典型业务,要求在大数据量下高并发用户下运行,需要通信服务平台具有较好的可扩展性﹑可靠性和实时性。通过构建ZooKeeper分布式系统架构[24],在实际应用中较好地解决了上述问题。下一步需要优化系统架构,完善业务场景,进一步改进系统的可扩展性﹑可靠性和实时性。

[1] Hassas Y S,Ganjali Y.Kandoo:A Framework for Efficient and Scalable Offloading of Control Applications[C].Proceedings of the First Workshop on Hot Topics in Software Defined Networks ACM,2012:19-24..

[2] Lin P,Bi J,Hu H.ASIC:An Architecture for Scalable Intra-domain Control in Open Flow[C].Proceedings of the 7th International Conference on Future Internet Technologies,2012:21-26.

[3] Koponen T,Casado M,Gude N,et al.Onix:A Distributed Control Platform for Large-scale Production Networks[C].9th USENIX Symposium on Operating Systems Design and Implementation,2010:351-364.

[4] Hassas Y S,Ganjali Y.Kandoo:A Framework for Efficient and Scalable Offloading of Control Applications[C].Proceedings of the First Workshop on Hot Topics in Software Defined Networks ACM,2012:19-24.

[5] Apache Zookeeper[EB/OL].[2017-08-12].https://zookeeper.apache.org/.

[6] Apache Hadoop[EB/OL].[2017-08-12].http://hadoop.apache.org/.

[7] 张旭刚,李东辉,俞俊等.基于Zookeeper框架实现MySQL分布式数据库集群[J].微型电脑应用,2016(01):77-80.

ZHANG Xu-gang,LI Dong-hui,YU Jun,et al.Based on the Zookeeper Framework,MySQL Distributed Database Cluster[J].Microcomputer Applications,2016(01):77-80.

[8] 顾乾斌,潘善亮.基于Zookeeper的国土资源档案分布式查询框架设计与实现[J].移动通信,2017(05):84-90.

GU Qian-bin,PAN Shan-liang.Design and Implementation of Distributed Query Framework for Land and Resources Archives based on Zookeeper[J].Mobile Communications,2017(05):84-90.

[9] 庄鹏.基于ZooKeeper的分布式服务中间件设计与实现[D].深圳:深圳大学,2016.

ZHUANG Peng.Design and Implementation of Distributed Service Middleware based on ZooKeeper[D].Shenzhen:Shenzhen University,2016.

[10] 李璋.基于Hadoop的互联网数据营销系统的设计与实现[D].北京:中国科学院大学,2017.

LI Zhang.Design and Implementation of Internet Data Marketing System based on Hadoop[D].Beijing:Chinese Academy of Sciences,2017.

[11] 谭智.基于大数据技术的网络异常行为检测系统设计与实现[D].南昌:江西财经大学,2016.

TAN Zhi.Design and Implementation of Network Anomaly Behavior Detection System based on Big Data Technology[D].Nanchang:Jiangxi University of Finance and Economics,2016.

[12] 李锐,刘刚,尹书伟等.基于ZooKeeper和ACE的分布式计算框架研究与设计[J].电力信息与通信技术,2015(06):31-35.

LI Rui,LIU Gang,YIN Shu-wei,et al.Research and Design of Distributed Computing Framework based on ZooKeeper and ACE[J].Power Information and Communication Technology,2015(06):31-35.

[13] 苟丽美,张锋叶,林国华.基于Zookeeper的GIS集群实现[J].计算机工程与设计,2017(09):2573-2579.

GOU Li-mei,ZHANG Feng-ye,LIN Guo-hua.GIS Cluster based on Zookeeper[J].Computer Engineering and Design,2017(09):2573-2579.

[14] 王文峰,袁庆祝,陆佃龙.基于Zookeeper综合任务调度平台的设计与应用[J].信息技术,2016(06):181-184.

WANG Wen-feng,YUAN Qing-zhu,LU Dian-long.Design of Integrated Task Scheduling Platform and Application based on of Zookeeper[J].Information Technology,2016(06):181-184.

[15] 王均贤.基于Hadoop的新闻推荐系统关键技术的研究[D].天津:天津理工大学,2017.

WANG Jun-xian.Research on Key Technologies of News Recommendation System based on Hadoop[D].Tianjin:Tianjin University of Technology,2017.

[16] 易柏胜.基于Zookeeper的虚拟机动态变更机制的设计与实现[D].广州:华南理工大学,2013.

YI Bai-sheng.Design and Implementation of Virtual Machine Dynamic Change Mechanism based on Zookeeper[D].Guangzhou:South China University of Technology,2013.

[17] 谭玉靖.基于ZooKeeper的分布式处理框架的研究与实现[D].北京:北京邮电大学,2014.

TAN Yu-jing.Research and Implementation of Distributed Processing Framework based on ZooKeeper[D].Beijing:Beijing University of Posts and Telecommunications,2014.

[18] 何慧虹,王勇,史亮.分布式环境下基于ZooKeeper服务的数据同步研究[J].信息网络安全,2015(09):227-230.

HE Hui-hong,WANG Yong,SHI Liang.Research on Data Synchronization based on ZooKeeper Services in Distributed Environment[J].Information Network Security,2015(09):227-230.

[19] 田心宁.基于Zookeeper的SDN多控制器架构的研究与实现[D].兰州:兰州大学,2016.

TIAN Xin-ning.The Research and Implementation of Zookeeper Controller based on SDN Architecture[D].Lanzhou:Lanzhou University,2016.

[20] 赵玉京.基于Zookeeper的分布式范围锁的设计与实现[D].武汉:华中科技大学,2015.

ZHAO Yu-jing.Design and Implementation of Distributed Range Lock based on Zookeeper[D].Wuhan:Huazhong University of Science and Technology,2015.

[21] 杜妍妍.基于Hadoop的电信经营数据分析系统的设计与实现[D].天津:天津大学,2016.

DU Yan-yan.Design and Implementation of Telecom Business Data Analysis System based on Hadoop[D].Tianjin:Tianjin University,2016.

[22] 胡雪婧.基于ZooKeeper的分布式系统的消息发送机制的设计与实现[D].长春:吉林大学,2016.

HU Xue-qian.Design and Implementation of Message Sending Mechanism for Distributed System based on ZooKeeper[D].Changchun:Jilin University,2016.

[23] 刘芬,王芳,田昊.基于Zookeeper的分布式锁服务及性能优化[J].计算机研究与发展,2014(S1):229-234.

LIU Fen,WANG Fang,TIAN Hao.Zookeeper based Distributed Lock Service and Performance Optimization[J].Computer Research and Development,2014(S1):229-234.

[24] 黄毅斐.基于ZooKeeper的分布式同步框架设计与实现[D].杭州:浙江大学,2012.

HUANG Yi-fei.Design and Implementation of a Distributed Synchronization Framework based on ZooKeeper[D].Hangzhou:Zhejiang University,2012.

猜你喜欢

实时性客户端分布式
如何看待传统媒体新闻客户端的“断舍离”?
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
大枢纽 云平台 客户端——中央人民广播电台的探索之路
分布式光伏热钱汹涌
基于预处理MUSIC算法的分布式阵列DOA估计
航空电子AFDX与AVB传输实时性抗干扰对比
计算机控制系统实时性的提高策略
可编程控制器的实时处理器的研究
基于DDS的分布式三维协同仿真研究