2018年第2期
JISUANJI YU XIANDAIHUA
总第270期
文章编号:1006-2475 (2018 )02-0039-05
基于微服务构建模型的应用系统增量更新算法
黄林,杨军,徐亮亮
(华北计算技术研究所基础四部,北京100083)
摘要:针对应用系统版本升级带来的效率问题,如大规模更新时服务压力大、网络数据传输量大等问题,提出基于微服务
架构的应用系统构建模型。基于BsD?等传统二进制文件增量更新算法,提出应用系统级的增量更新算法ASIUpdate, 对应用系统进行局部性的升级,最后开发新算法的原型软件。与传统的应用系统版本更新的效率进行了测试比对,测试 结果表明本文算法在效率和资源占用方面有明显提升。
关键词:微服务;微应用;系统升级;增量更新;ASIUpdae
中图分类号:TP393.09 文献标识码:A doi: 10. 3969/j.issn. 1006-2475.2018.02.009
Incremental Updating Algorithm of Application System
Based on Micro Service Construction Model
HUANGLin,YANGJun,XULiang-liang
(Foundation four,North China Institute of Computing Technology,Beijing 100083,China)
Abstract: Aiming at
large-scale updating and
the efficiency issues which large
amount
of
the application system
upgrade brings,such propose an application
as syste
net^vorl^ data transmission,we
the micro-service architecture. Then,to update the application system locally,based on BsDiff and otlier traditional binary file incremental updating algoritlim,the
incremental
update
algoritlim of
application
system-level
ASIUp
prototype software of the newalgorithm is developed. Comparing the update efficiency withi the traditional application system version, the test results show that thie proposed algorithim has obvious improvement in eficiency and resource consumption.
Key words: micro service; micro application; system upgrade; incremental updating; ASIUpdate
:引言
“微服务a微应用”架构[1-]是近年兴起的新型 应用系统构建模型,具有架构灵活、高内聚、低耦合、 有效支持Dev〇pS[5](开发运维一体化)等新型特征, 是有效响应需求灵活多变的新型软件架构模式,在互 联网企业中得到了广泛应用。
应用系统与完全自由的互联网应用相比,除了响 应用户的修改需求,还具备较多的集中管理功能,往 往需要以应用系统而非一堆零散的APP形式发布, 经常要求在特定时间集中完成系统全面更新任务,集 中更新将会对后台部署服务器造成集中式压力,同时 会在网络上造成大量的应用下载流量,这些都需要有 创新的系统升级方法。
增量升级已有一些算法被广泛应用,比如
Bsdif
算法[6]、Xdelta3算法[7]等,但是这些算法通常只应用 于单个应用的增量升级,在对大型的应用系统进行增 量升级时效率低下,当网络环境不好时,整体更新时 间过长,容易超时导致更新失败,应用系统发生频繁 更新时,应用系统更新的块会比较集中。如何高效查 找有差异的更新块也是急需解决的问题。
本文针对大型应用系统提出一种基于微服务构 建模型的应用系统增量更新算法ASIUpdate! Applica
tion System Increment Update), 通过细粒度分层次的
系统划分,利用二分法有效地将大型应用系统进行分
解,有利于准确增量更新,提高增量升级效率。一般 情况下,程序修改是局部性的,版本的升级只会影响 其中的一部分,大型系统进行分解后,每个局部会变
收稿日期=2017-07-13
作者简介:黄林(1992-),男,湖北广水人,华北计算技术研究所基础四部硕士研究生,研究方向:云计算;杨军(1981-),男,安
徽枞阳人,研究员级高级工程师,硕士,研究方向:中间件,云计算;徐亮亮(1988-),男,安徽合肥人,助理工程师,硕士,研究 方向:云计算。
40
计算机与现代化
2018年第2期
很小,增量
的方法,
的对 很小,效 很快。
的时间。
服务端将微服务进行分组,每组微服务对应 微应
,
服务,微应用[11]针对同业务开发灵活、
性化、更快速响应、更具,而这
[12]是基于“云计
大量的分布
享的所方第三方开发商的接入。这些微
计算分
备之间的互联互通。 利用空间局部性原理[8],
频繁更新时
记每次发生变化的
1应用系统功能构成及其构建模型
一
、实、扩展性良好的应
下7
(如 [9]1
展性的服务, 算”[1324]技术, 实现
终
服务运行在服务
1.1应用系统构成
按照职
理划分应该包
[1527]计算机上,而非本地计算机或远程服务器中, 生
理
、供应理 、市场、财务管理 、人资源 、设备管理
、层决策
。
图1应用系统构成
1.2
基于微服务的应用系统构建模型
典型的应 EAI构建模型[10]包含应
成、
化
发工具、
理器、
理
具、统计分析工具等组件,其模结构如图2
。
业务系统集成业务逻辑集成
DTA J V ALA
集成开发环境'
ESBuilder
应用^框架EggngL
图2应用系统EAI模型
应
EAI模
利于细粒度地对应 统
进行区块划分,而基于微服务的应
建模型,
细粒度分层次的 划分,
效地解决大型应
的复杂性。本基于微服务
的应
,结合 的
CS
模型可分为服务端和
进
行描述:
1\"服务端。如
3
,务
下包含云服
务,云服务下包含微服务,微服务再是服务
。
[微服到…[微服_敫服丨微服务丨…|微服务]…|i敖服务1
图3
服务端
资源、
应
序全部都由一 和运算能力的
来
。服务
是将很多服务
器集中起来一起进行同一种服务, 看来就像是只有一台服务器, 利
计算机进行并
行计算 很高的计算速度,
计算机做备份,
一机器出现了故障
系
还是能正常运行。2\" 。如图4
,业务
下包含子系统,
下包含应用,应用表现
进制文件。
4!的
展现
, 这 的
本地服务的程序,
一些只在本地运行的
应
序之外,一般安
的
机上,
与
服务端互相配合运行。 是包含很多应用的一合。
的行
它所包含的应
,
实现一 接口,这些接口
行的行为。
服务 和
合来表 :
S
=|CS$,CS2, CS3,…,CSnl
CS = - G1,G2,G3,•••,a A.
其中:S 表
应 CS1,CS2,CS3,…,CSn
的合,单
CS也是集合,由应
用a1,a2,a3,…,an组合而成。
基于微服务的应
建模
利于对应用系
统进行合理的区块划分,方便拆分成块进行增量更新。
2应用系统版本增量升级算法与实现
一个大型复 应用拆分
微服务组成,中的
微服务
立部署,
微服务之间是松耦合的,每个微服务仅关注于一务并很
好地
务,在所有情况下,每
务代表着一的业务
。ASIUpdate算
对基于微服务
2018年第2期黄林等'基于彳鼓服务构建模型的应用系统增量更新算法41
应 建模型,将应
应用,
外置描述 量
进行细粒度的分层区,再对
进行拆分成差异的应用,最外置描述
记
5
本的应
ASIUpdate算法原理:图5 ( a\"是旧版
划分,拆分 对差异应 算法。
当应 新的 ,包含4 (每颜色代表的区
算法,
录各区块及分层的详细信息,有利于适宜地使用差分
发生频繁的版本更新时,应
统更
[
域代表一 \",每 都包含 应用
(每一方块代表一个应用\"% 5(b)是新版本的 应 ,与旧版本应 的区别在于有3彳都一个应用(白色区域)有版本更新;图5 ( C\" 和图5(d\"
旧版本与新版本应用ASIUpdate算法先
中不同M
D
比较集中, 差的更新块的
5值对应的块, 新
中,
空间局部性原理,当应
的某一块发生新时,在下一个版本中,
的
很快发生
新,将每次发生更新的块记录到外置描述 中,
利于下一新更快地 差异的块。
Bsdiff算法是对 进制大 进行无差别的进制比对,而本 的基于微服务应建模型的ASIUpdate算法,先 分法将大型系统进行大块分层次分解,然对分解后的 比对。
2.1
ASIUpdate算法原理
图5
ASIUpdate算法的原理
的应用,然对这些块进行差值处理, 生应 新旧版本之间的差异包;图5 ( e\"为旧版本和新版本即对新旧版本 中差异的应
Bsdiff算法生成差异包patch; 5(f\"则是最终对 进行差 生的 差异包,其大只
包含有差异应用的差异包大小之和, 5(f\"中色的块大小,最终的
只需下
差异包与旧版本
的应用进行结合产生新的差异包进行
,
下
5 ( b\" 中 新版本应 。2.2
ASIUpdate算法及实现ASIUpdate算法主要分为6
步,具体步骤如图6
。
图6
ASIUpdate算法流程
1\"划分。将 同的 模块按照基
于微服务的应 建模型进行划分为相应的子
42
计算机与现代化
ac
2018年第2期
系统YranchSystem□,从而达至|J实用、扩展性好的效果。消耗的总时间为s升的百分比为&。
;,节省没差异应用的差异时
2)
MD
间,则整个大系统含有的n个子系统平均更新效率提 找出差异子系统。通过外置的描述文件(如
划分子系统。将子系统再利用基于微服务的
5)值,找出差异的子系统。3)
应用系统构建模型划分应用GP*],每个子系统里面 的应用都有类似的功能或者属于同种类型。
单个应用的大小优化率提升为新的完整包大小
减去差异包的大小newS> -patchS>,再除以新的完整
包的大小得到单个应用的更新效率提升
newSf _ patehSf,然后对子系统中应用更新效率求和
n Si
4) 找出有差异的应用。以区块划分的机制,通
过外置的描述文件(如MD5)值,而非生硬地作二进 制比较,找出有版本差异的应用[iffApp*]。
5) 处理差异的应用。对应用采用单元级增量法,生成差异包。
6)
合并成子系统差异包。将有差异的子系统应用差异包按同一层合并成子系统差异包,并将有差 异的块记录到子系统的外置描述文件中,方便下次更 新采用局部性原理。
7) 合并成应用系统。将子系统差异包再按同层合并成应用系统差异包。
上述应用系统增量升级算法的关键在于通过描 述文件的信息快速定位到有版本差异的子系统,然后 通过描述文件对应用信息的记录,找出有变动的应 用,对这些有变动的应用采用差值算法生成差异包。
在步骤々、步骤4中关键算法的伪代码实现如下:
for ?~# to len do
begin
if oldApps* i]. MD5 <> neuApps* i]. MD5 then
Diff. gendff ( oldApps * i ]. path,neuApps * i ]. path, patchApps* i]. path);
end %
3
实验验证与测试分析
3.1
ASIUpdate算法效率分析
设旧的子系统odSi总字节数为。^#,子系统 对应的应用数odssum,单个应用对应的字节数为old-
Si,新的子系统newSi总字节数为newSSys,子系统对
应的应用数newS厂,单个应用对应的字节数为newS丨, 子系统差异包patchS;总字节数为patchSSys,对应的差 异应用数patchSr,单个差异应用对应的字节数为
patchS丨,差异时间为patchTi,其中设oldSf = newSs_
=p?。对于整体差异来说默认所有应用都有差异,若 没差异,则其差异字节数为0,但是会存在差异过程
时间target;;有差异时target;为0。本文采用的方 法是通过描述文件找出有差异的进行差异。设查找
除以应用个数得出子系统的平均更新效率提升为m
m
& 腳
Sf -p:chSf,再对子系统的更新效率求和除
nS?
以子系统个数得出整个大系统的平均更新效率提升 的百分比
$ n mi newSf - patchSf 「
mn&i&i 一^aRS
^
时间效率上相对于整体差异的效率提升百分比t。
先对子系统中的应用进行差异时间求和&;= i target;
,其中:有差异时 target; 为 0,然后减去通过外
置描述文件查找应用是否有更新的查询时间search-;,得出子系统整体时间的提升(&>= target;)-
search;?,
的差 时间 时间效率上提升的百分比(& >=i target; )-search;
&>= $ patch;
,在
和
的
大
时间效
相对于整体差异的效率提升百分比t:1 ^ ( & >= $ target; ) -sarch; n&i &>=$ patch;3.2对比测试
1) 传统的应用系统全部重装的算法;
2) 应用系统整体Bsdiff的算法;3) 本文实现的ASIUpdate算法。3=测试方法
同样的应用系统发布的2个版本,新版本比旧版 本只有较微小的改动,只涉及少量的应用有变化。与
Bsdiff算法作比较的原因在于其对单个文件进行增量 升级应用广泛,比较的核心点在大型应用系统整个增 量升级过程中的效率和时间上。
量:
1) 系统更新时间:客户端日志记录。
2) 网络传输量:使用网络监控工具。
实验平台是利用开发环境与Eclipse集成开 发环境,与平台无关。
算中一2018年第2期黄林等'基于彳鼓服务构建模型的应用系统增量更新算法43
3.4比对测试结果
中应
示,柱
如图0
序包大小的实验数据如表1所
〇过程的时间。
全量 与增量 表3所示,对比柱 如图9
的时间实验数据如
。
表1应用新旧版本及差异包大小/MB名称
旧版本大新版本大差包大
APACHE_TOMCAT_Noarch_32
5.88.04AGENT_BASE_Noarch_3223230.149JAVA_JDK_Noarch_32138168163
1 2 3
图7应用新旧版本及差异包大小对比
7的
中
看出patch包相对于新版本
包大大
。
Bsdiff与本文的部分差异算法
ASIUpdate消耗的时间的实验数据如表2
所示,对比
柱 如图8 。
表 > 系统整体Bsdiff与部分差异算法
ASIUpdate消耗时间/ms名称
全量Bsdiff算法 ATUPdating 算
法 APACHE_TOMCAT_Noarch_32
26000的时间
26500的时间AGENT_BASE_Noarch_322400400JAVA_JDK_Noarch_329800099800
8系统整体BsDiff与部分差异 算法ASIUpdate消耗时间对比8的
中
看出,当拆分的
新
时,本实现的部分差异算法ASIUpdate消耗的时间
比 BsDiff消耗的时间略大,但是没 化的基本 时间,对于一组微服务 的
中,往往只
些块发生变化,大大缩短
量升级
表3全量升级与增量升级所消耗的时间实验数据/ms
名称
全量Bsdiff算
ATUPdating 算
APACHE_TOMCAT_Noarch_321000的时间
600的时间AGENT_BASE_Noarch_3220000JAVA_JDK_Noarch_32
16000
8000
18000 1
JAVA_JDK_Noa
图9全量升级与增量升级所消耗的时间实验数据对比
9 的
中
, 量
相对于全量
的时间显
。
实验 的结果表明:本
的应用系统级更新算法ASIUpdate, 效
效率。4
结束语
本 的基于微服务 kl 的 应
量更新算法ASIUpdate,对大型应 进行.更新,
空间局部性原理,
外置描述
记录块
的详细信息, 表明, 效解决大型应
新 中的单一 稳定性问题,有效
量、显
新速度,尤
频繁
新的情况下,可快速 差异的块,对于大型应快速迭代更新、
快速生 效的技术
。
文献:
[1] Lewis J,Fowler M. Microservices[EB/OL]. https://www.
martinfowler. com^articles/microservices, html,2014-03-25.
[2] 米沃奇.深度剖析微服务架构的九大特征[J],电脑识与技术:经验技巧,2016(10):105-110.[3] Walraven S,Truyen E,Joosen W. Comparing PaaS ofer-
ings in light of SaaS development [ J]. Computing,2014, 96(8) :669-724.[4] 郭栋,王伟,曾国荪.一种基于微服务架构的新型云件
PaaS [J].信息网络安全,2015(11):15-20.[5] 邹筱菁,柯林.基于DeOps的软件开发管理模式[J].
技术与应用,2016(11): 184-187.
(下转第88页)
知
88
计算机与现代化
2018年第2期
表1本文算法与单线程同步I/O算法的性能对比
平均数据吞吐算法量/(
算
法
路线1
路线2
路线3
MB/s)
路线4
路线5
数据量
6 GB3 GB1 GB500 MB200 MB
7.88.47.38.1716.2345.6114.651.119.58.9单线程同步IO算法
79.882.186.676.880.770.134.311.35.62.2本文算法
[5] Lebiedz J,Mieloszyk K,Wiszniewski B. Real terrain visu
4结束语alisation with a distributed PC-Cluster[ C]// International
Conference on Parallel Processing and Applied Matliemat-
近年来,随着虚拟现实技术的快速发展,在实际 ics. 2005:349-356.
[6] Hsieh T J,Kuester F,Hutchinson T. Parallel terrain ren应用中对虚拟地形环境的规模和数据精度要求越来
dering using a cluster of computers [ J ]. Journal of thie Chi越高。因此,本文提出了一种面向大规模虚拟地形环
nese Institute of Engineers,2013,36(2) :212-223.
境的实时数据调度算法。首先,在传统的四叉树数据
[7] Olanda R,Perez M,Orduna J M,et al. Terrain data com
组织方法基础上对海量地形瓦片数据进行二次组织, pression using wavelet-tiled pyramids for online 3D terrain 并且通过基于Hilbert填充曲线的方法进行了数据的 visualization [ J ]. International Journal of Geographical In
formation Science,2014,28(2) :407-425.存储优化,提高了数据更新、迁移和调度的效率。此
[8] 关阜烕,张晔.临近空间平台下地形四叉树优化分割算
外,设计了基于'CP的地形数据异步调度机制,实
法[J].南京航空航天大学学报,2015,47(1):59-63.
现了海量地形数据的高效管理和快速调度。由实验 [9] 张立民,闫文君.基于GPU的大规模地形数据绘制算
法[J].计算机与现代化,2012(1):145-150.结果可知,本文算法具有较高的性能优势,适用于大
[10] 周艳,朱庆,张叶廷.基于Hlbet曲线层次分解的空间 规模 地 的实时 。
数据划分方法[J].地理与地理信息科学,2007,23(4) :13-17.
参考文献:
[11] 马纯永.城域景观VRGIS—体化仿真平台研究与实现
[1 ] Zhao Xuesheng,Bai Jianjun,Chen Jun,et al. A seamless
[D].青岛:中国海洋大学,2010.
visualization model of the global terrain based on the QTM
[12] Abel D J,Marl^ DM. A comparative
[C] // Proceedings of the 16th International Conference on
dimensional orderings [ J ]. International Journal of Geo
Advances in Artificial Reality and Tele-Existence. 2006 : graphical Information System,1990,4( 1 ):21-31.
1136-1145.[13] 陆锋,周成虎.一种基于ffilbet排列码的GIS空间索引 [2] 杜莹.全球多分辨率虚拟地形环境关键技术的研究方法[J].计算机辅助设计与图形学学报,2001,13
[D] .郑州:解放军信息工程大学,2005.(5) :424-429.[3] Zhang Liqiang,Yang Chongjun,Liu Suhong,et al. Effec[14] 刘向南.海量城市三维模型网络异步调度与实时渲染
tive techniques for interactive rendering of global terrain 算法研究[D].青岛:中国海洋大学,2015.surfaces [ J ]. IEEE Geoscience and Remote Sensing Let[15] 王海玲.虚拟自然场景建模与绘制关键技术研究[D].
哈尔滨:哈尔滨工程大学,2013.ters, 2005,2(2) :215-219.
[4] Ren Zijian,Ma Cunyong,Huo Peng,et al. Real-time ren[16] 周圣川.大规模城市场景图形图像混合建模与无损渲
染技术[D].青岛:中国海洋大学,2014.dering of global multij)le-resolution inlaid terrain based on
[17] 王早.基于IOCP机制的代理模型与负载均衡算法研究 tessellation [ J ]. Journal of Computational Information Sys
[D ].武汉:武汉科技大学,2005.tems, 2015,10(16) :5899-5909.(上接第43页)
[6] Stolil^j M, Cuijj)ers PJ L, Lukkien J J. Efficient repro
gramming of wireless sensor net^vorl^s using incremental updates and data compression [ C] // 2013 IEEE International Conference on Pervasive Computing and Communications Works〇ps(PERCOM Workshops. 2012:584-589.[7] 夏棋.移动互联网增量数据差分更新算法研究[D].成
都:电子科技大学,2014.[8] 刘巍.基于空间局部性的PCM和DRAM混合内存页面
调度算法[J].中国科技论文,2014,9(1):53-57.[9] 赵琳,张黎明.基于SOA架构的企业应用系统研究
[J].太原理工大学学报,2007,38(6):535-539.[10] 过立新.一种新型企业应用系统EAI模型的构建[J].
电子科技,2006(11 ):72-76.[11] 《中国金融电脑》编辑部.PWold2015:聚焦互联网+,
算法执行总时间/s
数据量 数据量 数据量
数据量
助力“大平台+微应用”[J].中国金融电脑,2015(7):96.[12] 陈全,邓倩妮.云计算及其关键技术[J].计算机应用,
2009,29(9) :2562-2567.[13] 王意洁,孙伟东,周松,等.云计算环境下的分布存储关
键技术[J].软件学报,2012,23(4):962-986.[14] 卢小宾,王涛.Gogle三大云计算技术对海量数据分析
流程的技术改进优化研究[J].图书情报工作,2015, 59(3) :6-11.[15] 魏青松.大规模分布式存储技术研究[D].成都:电子
科技大学,2004.
[16] 刘亚.基于MosFS分布式存储策略的研究与实现
[D].济南:山东大学,2015.[17] 吴思.容错分布式存储系统扩容机制研究[D].合肥:
中国科学技术大学,2016.
因篇幅问题不能全部显示,请点此查看更多更全内容