APP下载

高并发数据共享系统基于Push—Pull混合模式的性能优化

2018-07-12王子光王子明

现代信息科技 2018年4期
关键词:性能优化

王子光 王子明

摘 要:随着面向服务架构的大规模分布式系统的应用,多个系统之间由于数据集成的需要,彼此间要高并发传递大量数据,特别是状态数据的同步,对数据的实时性要求越来越高。数据单纯通过客户端以Pull(拉取)模式获取已经不能满足实时性要求,高频率服务调用也会给服务端数据库带来较大的压力。单纯通过服务端以Push(推送)模式推送给客户端也不能满足客户端对个性化数据的需求,大量推送既会给服务端带来较大压力,又会造成客户端数据处理不及时。本文针对高并发数据共享系统应用过程中产生的性能问题,提出一种基于pub/sub消息处理的Push-Pull混合模式优化方案,实践表明该方案极大地提高了系统可用性及数据安全性,对同类系统的性能优化具有较好的借鉴作用。

关键词:高并发;数据共享系统;性能优化;pub/sub消息处理;Push-Pull混合模式

中图分类号:TN929.5 文献标识码:A 文章编号:2096-4706(2018)04-0065-03

Abstract:With the application of large-scale distributed systems based on service oriented architecture,due to the need of data integration between multiple systems,these systems transfer large amounts of data between each other,especially the synchronous state of the data. The data obtained by the client through pull mode cannot meet the real-time requirements,high-frequent service-calls have also bring greater pressure to the database server through push mode;only by the server through the push mode to the client,it cannot meet the needs of personalized data,also a large number of push will bring greater pressure on both server and client which cannot cause data processing timely. In this paper,with the performance problems in the application of the high-concurrent data sharing system,it put forward a kind of Push-Pull mixed mode optimization scheme based on pub/sub message processing,the practice shows that the scheme greatly improves the system availability and data security,also provides a good reference for optimizing the performance of similar systems.

Keywords:high concurrency;data sharing system;performance optimization;pub/sub processing;push-pull mixed mode

0 引 言

目前,面向服務架构的大规模分布式系统之间的数据共享和集成已经成为越来越重要的研究问题。传统的系统间数据共享和集成多采用Push或Pull两种方式。Push方式多采用消息推送模式,即由服务端将数据推送给客户端,但推送数据信息过多就不能满足客户端的个性化数据需求。Pull方式多采用Webservice服务方式,即客户端通过主动调用服务端开放的服务接口获取数据,但由于Webservice服务存在网络传输不稳定以及开销较大的弊端,因此在高并发系统中进行数据共享会存在性能问题。本文设计并实现了一种Push-Pull混合模式优化方案,服务端通过pub/sub消息处理机制向多客户端推送“微数据”,客户端根据这些数据判断调用服务接口的时机,以获取其他个性化数据,较好地解决了高并发数据共享系统中存在的实际性能问题。

1 Push-Pull模式介绍

推送(Push)技术是根据用户喜好,有目的、有选择性地定期将用户感兴趣的信息主动发送到用户可查看的设备上。Push技术的主要优点在于及时性,能够方便地向用户“推送”不断更新的动态信息,且对用户专业性要求低。拉取(Pull)技术指用户主动发起请求,传统意义上的拉取是指用户有目的地在网络上主动查询信息,用户通过浏览器发送请求,由Web获取所需信息,并返回给用户。面对拥有海量信息的Internet环境,搜索引擎是较为有效的网络信息“拉取”(查询)的检索工具[1]。Web应用系统之间的数据拉取通常是指客户端主动调用服务端的服务接口或其他应用接口来获取数据,以达到数据共享的目的。

Push技术主要优点在于实时性,客户端无需额外保存状态,缺点是不能保证推送信息一定能够发送成功,推送量过大会给服务端造成性能压力。另外,推送数据也缺乏个性化定制。Pull技术的主要优点是客户端主动拉取数据,针对性较强,能满足个性化需求,且网络上所传输的数据量较少,方便服务端和客户端通信,但缺点是实时性较差,客户端无效请求较多,对客户端的要求较高[2]。

2 面向服務架构的高并发数据共享系统的性能问题

高并发数据共享系统保存着企业可共享的核心业务数据,外围系统只能通过共享系统获取业务数据,核心业务数据量庞大且更新频繁。共享系统通过ESB向外围系统提供多种数据查询服务(Webservice),外围系统通过调用查询服务获取数据,达到数据共享的目的,此种Pull模式外围系统是被动的,并严重依赖服务质量及网络稳定性,而且客户端为了获取数据可能会多次调用不同的服务接口,大大增加了客户端的运行开销,也会由于客户端的高并发调用造成服务端数据库的巨大压力,比如外围系统需要经常获取核心业务数据“状态”信息。在Pull模式下,外围系统常会使用“轮询”方式,虽然这种方式设计较为简单,外围系统只需通过定时启动轮询服务来获取服务端的状态数据,但是“轮询”效果却不甚理想。一是状态信息强调时效性,轮询频率设置过高,会造成服务端数据库压力增大,客户端获取数据延迟;二是轮询频率设置过低,会造成获取状态信息延迟过大,失去数据价值;三是状态信息未更新,轮询仍然启动,造成“空转”现象。

Pull数据共享模式如图1所示。

为了解决上述问题,可以设计一种Push处理模式,将数据共享系统的核心业务数据通过消息中间件(MOM),如开源的ActiveMQ、RabbitMQ等,并以Pub/Sub模式主动向客户端推送数据。由数据共享系统发布主题,客户端订阅感兴趣的主题,ESB服务总线进行消息转发并记录消息日志。

这种发布订阅处理方式减少了客户端的调用开销,但推送数据量过大仍会给服务端造成较大压力。另外,还可能不满足客户端的个性化数据需求,推送的很多数据客户端没有使用,反而会增加调用接口的次数。Push数据共享模式如图2所示。

3 基于Pub/Sub消息处理的Push-Pull混合模式优化方案

为了结合Push和Pull两种消息处理模式的优势,解决在高并发数据共享系统中出现的性能问题,这里提出一种基于消息中间件的Pub/Sub模式的Push-Pull混合模式优化方案,如图3所示。

首先,服务端与客户端通过Pub/Sub消息模式进行多主题消息推送与接收。Push模式的关键是需要设计好推送给客户端的“微数据”。“微数据”是指多个客户端需要的“公共数据”。“公共数据”推送量需要适度,既不能太多,也不能太少,还需考虑客户端的消费能力。太多会造成服务端推送压力大,速度慢,而客户端消费有限;太少又会过多依赖拉取数据,数据延迟较大,且对服务端仍会造成一定压力。“微数据”的设计应尽量满足客户端对业务维度基本公共数据的要求。

客户端对推送数据的消费能力也是需要解决的重要问题。如果客户端的处理逻辑复杂,可能会造成消息堆积,为了解决此问题,可将服务端推送过来的数据不加处理,先行存入客户端临时数据库表中,客户端自身启动定时调度任务,选取本地数据进行处理,同时为了保持数据时效性,可将定时调度频率适当缩短。

另外,在满足多客户端基本公共数据要求的情况下,依靠服务调用的Pull模式获取其他个性化数据。比如当客户端获取业务状态等公共数据后,可根据当前状态适时调用服务端提供的服务接口来获取其他业务数据。

4 测试结果

保险业务状态查询系统(IQS)是保险核心数据共享系统(CBS)的某一外围系统,通过与CBS的交互来获取保险业务状态的最新信息。这里两个系统数据交互采用基于Push-Pull混合模式的异步处理交易方式,IQS系统通过ESB和Active MQ与CBS进行集成,这里ESB选用开源的Mule平台,集成方式如图4所示。

CBS设置新契约状态变化、保全状态变化、理赔状态变化等11个主题,IQS系统进行持久性订阅来获取状态信息。CBS在核心业务数据库表中,如新契约表(T_POLICY)、保全表(T_POLICY_CHANGE)等主表增加tirgger,核心业务数据状态变化后,自动触发向CBS中的待通知表(T_BUSI_NOTIFY)插入数据,然后启动Quartz定时任务,每5秒推送待通知表中数据给Mule并转发给IQS,IQS成功接收后,将数据转移至已通知表(T_BUSI_NOTIFIED)。

Push-Pull混合模式优化方案新契约主题“公共数据”设计如表1所示。

对11个主题中的每个主题进行10万数据压力测试,总量达到百万。以数据量最大的新契约主题为例,测试结果如表2所示。

通过测试可以看到,混合模式的“公共数据”设计好后,除了少量个性化数据需求不能满足客户端需要接口调用外,调用次数大大减少,处理速度也比其他两种处理方式提高了很多。

5 结 论

将此Push-Pull混合模式的性能优化方案应用于高并发数据共享系统,公共“微数据”的推送基本满足了多客户端的一般性需求,其他个性化数据只需较少地调用服务接口即可满足,减少了资源消耗,大大减轻了服务端和客户端的压力,取得了较好应用效果。

参考文献:

[1] CSDN.消息系统该Push/Pull模式分析 [EB/OL].https://blog.csdn.net/pi9nc/article/details/27714745,2014-05-30.

[2] 索传军.Push技术开发应用研究述评 [J].现代图书情报技术,2003(3):48-50+63.

作者简介:王子光(1984-),男,河南人,硕士。研究方向:软件工程、软件技术在企业应用;王子明(1984-),男,河南人,工程师,硕士。研究方向:软件工程、软件开发技术。

猜你喜欢

性能优化
大数据环境下高校选课系统性能优化应用研究
数据挖掘算法性能优化的研究与应用
SQL Server数据库性能优化的几点分析
Web应用的前端性能优化
WEB网站缓存性能优化
Oracle数据库性能调整与优化分析
基于节点缓存的Web服务器性能优化研究
基于SQL数据库的性能优化的探讨
Oracle数据库应用系统的性能优化