您的当前位置:首页正文

基于微服务构建模型的应用系统增量更新算法

来源:九壹网
计算机与现代化

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 in­cremental 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 ver­sion, 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 tar­get;

,其中:有差异时 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 up­dates 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.

因篇幅问题不能全部显示,请点此查看更多更全内容

Top