一种全量分布式高并发计算方法及装置与流程

文档序号:17889820发布日期:2019-06-13 15:30阅读:154来源:国知局
本发明涉及大数据
技术领域
:,尤其涉及一种全量分布式高并发计算方法及装置。
背景技术
::目前,各类在线交易平台、售票系统、游戏服务器等,所需承载的访问压力越来越高,每时每刻的并发量已成为天文数字。比如,很多大型电商的价格系统,每秒需要接收千万级甚至上亿级的查询价格访问。为了应对高并发访问的压力,通常需要将数据的结果提前算出来。而目前很多系统是采用热点缓存的方法来应对海量的查询访问。这一定程度上能够缓减问题,但是热点缓存的抗压机制不高,会带数据库带来很大的压力,从而降低稳定性。技术实现要素:本发明的实施例提供一种全量分布式高并发计算方法及装置,能够避免现有技术中热点缓存的抗压机制不高,数据库带来很大的压力,从而降低稳定性的问题。为达到上述目的,本发明的实施例采用如下技术方案:停止分布式系统中的增量计算程序,所述分布式系统上部署了公共库、价格库、缓存和业务价库;启动全量调度任务,并生成所述业务价库的全量表;在所述全量调度任务执行后,更新所述全量表;启动所述增量计算程序。所述更新所述全量表,包括:从所述公共库、价格库和缓存中批量获取原始数据;利用所述原始数据计算价格数据;将计算得到的价格数据批量插入所述全量表。所述全量调度任务包括:生成分布式任务调度表,所述分布式任务调度表中记录了:x个定时任务、y个jboss应用和z张数据表,所述z张数据表从所述原始数据中获取,x、y和z都是正整数,定时任务的数量与jboss应用的数量相匹配;初始化所述全量调度任务后,每一个定时任务锁定一个数据表;当第n个jboss应用上运行的定时任务执行完毕后,对所述第n个jboss应用上运行的定时任务锁定的数据表进行解锁,之后所述第n个jboss应用上运行的定时任务再次锁定一张未被锁定过的数据表,并再次执行。并且,为目标业务系统分配redis机器组和mysql机器组,所述目标业务系统对接所述业务价库,所述业务价库用于为所述目标业务系统提供价格数据;为所述全量调度任务分配redis缓存资源和mysql资源,其中,所分配的redis缓存资源不属于为所述目标业务系统分配的redis机器组,所分配的mysql资源不属于为所述目标业务系统分配的mysql机器组。本实施例中,能够使得计算阶段用户能够正常访问。通过利用应用服务器资源,采用分布式并行计算方法,为需要此数据的应用方提供准确的数据,适用于高并发场景下的全量海量数据计算。采用全量计算方法,可以提前计算出数据方需要的结果,从而提高高并发访问的响应时间和调用量。在全量分布式的计算过程中,不影响前台价格实时查询,同时有其他增量因素过来,可以实时更新同一个商品的价格数据,保证数据的准确性和完整性。也避免了现有技术中热点缓存的抗压机制不高,数据库带来很大的压力,从而降低稳定性的问题。附图说明为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。图1为本发明实施例提供的系统架构示意图;图2为本发明实施例提供的方法流程示意图;图3、4为本发明实施例提供的具体实例的示意图;图5为本发明实施例提供的装置结构示意图。具体实施方式为使本领域技术人员更好地理解本发明的技术方案,下面结合附图和具体实施方式对本发明作进一步详细描述。下文中将详细描述本发明的实施方式,所述实施方式的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施方式是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。本
技术领域
:技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的任一单元和全部组合。本
技术领域
:技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语)具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样定义,不会用理想化或过于正式的含义来解释。本实施例中的方法流程,具体可以在一种如图1所示的系统上执行,该系统包括:业务系统、redis机器集群、管理服务器、后台数据库和用户终端,系统的各端设备相互之间可以通过互联网建立信道,并通过各自的数据传输端口进行数据交互。其中:本实施例中所揭示的业务系统和管理服务器,在硬件层面上具体可以是工作站、超级计算机等设备,或者是由多台服务器组成的一种用于数据处理的服务器集群。其中,管理服务器,所指的是用于管理redis机器集群,以及实时监测业务系统的服务器设备,通常的管理服务器设置在于用于后台维护各业务系统的运维中心中。本实施例中所揭示的redis机器集群,在硬件层面上具体可以是由多台服务器、缓存机组成的一种用于数据处理的设备集群。redis机器集群中的缓存资源被用于存储后台数据库中的数据,以便于业务系统在接收到用户终端发送的访问请求时,从redis机器集群中提取数据返回给用户终端,相对于直接访问数据库获取数据,从缓存中提取能够提高数据的反馈速度。后台数据库中,存储了业务系统运行时所需使用的数据,比如:价格数据、物流数据、存货数据等等。后台数据库具体可以采用目前常见的数据库架构、类型。业务系统,在硬件层面上具体可以是由多台服务器组成的,一种用于运营在线业务的系统,比如在线购物平台上运营的促销系统、订单系统、通知系统等。用户终端,具体可以实做成单独一台设备,或整合于各种不同的媒体数据播放系统中,诸如智能手机、平板电脑(tabletpersonalcomputer)、膝上型电脑(laptopcomputer)、个人数字助理(personaldigitalassistant,简称pda)等。比如:接入在线购物平台的用户终端,通常被用户用于价格查询、下单、商品信息浏览等操作。本发明实施例提供一种全量分布式高并发计算方法,如图2所示,包括:s101、停止分布式系统中的增量计算程序。其中,所述分布式系统上部署了公共库、价格库、缓存和业务价库。管理服务器用于控制分布式系统中的增量计算程序和全量调度任务。其中:公共库可以理解为数据库的一种,用于存放公共数据资源,一般不采用分库分表的数据库架构。价格库是就是全量和增量计算要依赖的,并且主要采用分表分库的数据库架构。业务价库就是全量和增量计算完毕后,最终计算出来的数据落地的数据库,并且主要采用分表分库的数据库架构。在实际应用中,分布式系统在运行需要全量计算的业务的时候,会存在很多因子变化的情况,由此会触发增量计算,触发增量计算后会更新同一张表,从而记录发生的变化。s102、启动全量调度任务,并生成所述业务价库的全量表。s103、在所述全量调度任务执行后,更新所述全量表。s104、启动所述增量计算程序。具体的,所述更新所述全量表,包括:从所述公共库、价格库和缓存中批量获取原始数据。利用所述原始数据计算价格数据。将计算得到的价格数据批量插入所述全量表。其中,原始数据指的是全量和增量计算需要依赖基础数据,包含底价,加价比例和优惠单等数据或者信息。利用所述原始数据计算价格数据,包括了:商品在购物页面上标明的购买价格,在购买价格的基础上以及除去优惠单后的最终需要顾客支付的价格。价格数据批量插入所述全量表,指的是将多个价格数据作为一批插入数据,执行一次插入动作同时插入全量表,相对于将每一个价格数据依次插入全量表的方式,批量能够提高数据插入全量表的效率。其中,价格数据包括了各个品类的商品的价格信息、价格波动范围等,价格波动范围的具体区间,可以由技术人员设定,也也可以根据预设的计算模型实时计算得到。具体的,如图3所示的,管理服务器执行全量调度任务的过程中,采用多进程多线程并行,并可以根据业务维度拆分成多任务,任务动态分配给空闲线程执行。并可以在每一个数据表被处理完毕欧,记录任务执行阶段,以便于停止后下次可恢复执行,以免全量调度任务中断并重启后重复处理数据表。本实施例中,能够使得计算阶段用户能够正常访问。通过利用应用服务器资源,采用分布式并行计算方法,为需要此数据的应用方提供准确的数据,适用于高并发场景下的全量海量数据计算。采用全量计算方法,可以提前计算出数据方需要的结果,从而提高高并发访问的响应时间和调用量。在全量分布式的计算过程中,不影响前台价格实时查询,同时有其他增量因素过来,可以实时更新同一个商品的价格数据,保证数据的准确性和完整性。在本实施例中,所述全量调度任务的执行过程大致包括:生成分布式任务调度表。初始化所述全量调度任务后,每一个定时任务锁定一个数据表。当第n个jboss应用上运行的定时任务执行完毕后,对所述第n个jboss应用上运行的定时任务锁定的数据表进行解锁,之后所述第n个jboss应用上运行的定时任务再次锁定一张未被锁定过的数据表,并再次执行。其中,所述分布式任务调度表中记录了:x个定时任务、y个jboss应用和z张数据表,所述z张数据表从所述原始数据中获取,x、y和z都是正整数,定时任务的数量与jboss应用的数量相匹配,其中,“相匹配”可以理解为定时任务的数量与jboss应用的数量相同,或者jboss应用的数量是定时任务的数量的整数倍。例如图4所示的,设定分布式任务调度表,每天晚上凌晨12点准时跑,100个定时任务,100台jboss应用,1000张数据表。每个定时任务跑之前会锁定一个数据表,在100台jboss应用上,首次跑的时候会锁定100张数据表,在这个计算的过程中,如果有一个jboss应用跑完了,会继续去跑101张数据表,以此类推,在全量任务跑完之前,100台jboss应用都在运作着,跑到最后100张数据表时,jboss应用会慢慢的释放出来,全量计算是在后台集群中进行,计算过程中会充分利用redis以及mysql的数据库资源,redis以及mysql资源,通常可以称为redis实例和mysql实例。如果还能提高性能,可以扩容jboss数量以及mysql数量,高并发并行计算出最终数据结果进一步的,还包括:为目标业务系统分配redis机器组和mysql机器组;并为所述全量调度任务分配redis缓存资源和mysql资源,其中,所述目标业务系统对接所述业务价库,所述业务价库用于为所述目标业务系统提供价格数据。所分配的redis缓存资源不属于为所述目标业务系统分配的redis机器组,所分配的mysql资源不属于为所述目标业务系统分配的mysql机器组。例如:根据应用机器数据信息,为目标业务系统分配redis机器组和mysql机器组,使得查询访问用的redis机器组和mysql机器组,与实时计算用的redis机器组和mysql机器组分开。保证了在计算的情况下,系统的redis缓存和mysql能够被正常访问查询价格,使得价格服务正常提供的基础下,进行全量计算。并且,由于在计算成功前,并不影响redis机器组和mysql里面的数据,假设在计算失败的前提下,redis机器组和mysql还是可以正常提供服务的。实现了业务系统在线的状态下进行全量计算时,其中不中断业务系统的正常查询、访问,提高系统的可扩展性。尤其是对于多个业务系统争抢redis资源和mysql的情况,有利于管理服务器提高缓存资源的分配效率。进一步的,由于在高并发查询时,依然能够通过缓存处理访问请求,也就减少了向数据库访问查询的次数,保证数据库的稳定性的同时,也维持了查询服务的性能。本发明实施例还提供一种全量分布式高并发计算装置,如图5所示的,包括:任务管理模块,用于停止分布式系统中的增量计算程序,所述分布式系统上部署了公共库、价格库、缓存和业务价库;处理模块,用于启动全量调度任务,并生成所述业务价库的全量表;更新模块,用于在所述全量调度任务执行后,更新所述全量表;所述任务管理模块,还用于启动所述增量计算程序。其中,所述更新模块,具体用于从所述公共库、价格库和缓存中批量获取原始数据;利用所述原始数据计算价格数据;将计算得到的价格数据批量插入所述全量表。所述处理模块,具体用于生成分布式任务调度表,所述分布式任务调度表中记录了:x个定时任务、y个jboss应用和z张数据表,所述z张数据表从所述原始数据中获取,x、y和z都是正整数,定时任务的数量与jboss应用的数量相匹配;初始化所述全量调度任务后,每一个定时任务锁定一个数据表;当第n个jboss应用上运行的定时任务执行完毕后,对所述第n个jboss应用上运行的定时任务锁定的数据表进行解锁,之后所述第n个jboss应用上运行的定时任务再次锁定一张未被锁定过的数据表,并再次执行。进一步的,还包括:资源模块,用于为目标业务系统分配redis机器组和mysql机器组,所述目标业务系统对接所述业务价库,所述业务价库用于为所述目标业务系统提供价格数据;为所述全量调度任务分配redis缓存资源和mysql资源,其中,所分配的redis缓存资源不属于为所述目标业务系统分配的redis机器组,所分配的mysql资源不属于为所述目标业务系统分配的mysql机器组。本实施例中,能够使得计算阶段用户能够正常访问。通过利用应用服务器资源,采用分布式并行计算方法,为需要此数据的应用方提供准确的数据,适用于高并发场景下的全量海量数据计算。采用全量计算方法,可以提前计算出数据方需要的结果,从而提高高并发访问的响应时间和调用量。在全量分布式的计算过程中,不影响前台价格实时查询,同时有其他增量因素过来,可以实时更新同一个商品的价格数据,保证数据的准确性和完整性。本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本
技术领域
:的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1