系统基表更新方法、装置、计算机设备和存储介质与流程

文档序号:15143722发布日期:2018-08-10 20:11阅读:229来源:国知局
本申请涉及数据库管理
技术领域
:,特别是涉及一种系统基表更新方法、装置、计算机设备和存储介质。
背景技术
::系统基表是指系统数据库中用于存储特定基表数据的实体表,实体表是各种数据管理对象所对应的表,也称基础表、数据表。系统基表通常会具有关联关系。比如系统中可包含多个等级的行业表,第一等级行业表中的行业可在第二等级行业表中细分为多个子行业,则第二等级行业表依赖于第一等级行业表。然而,当系统基表需要进行更新时,由于丢包或系统基表更新顺序异常,往往会出现第二等级行业表更新成功,但第二等级行业表所依赖的第一等级行业表并没有更新成功等系统基表上下级关系异常的情况,导致系统基表更新失败。技术实现要素:基于此,有必要针对上述技术问题,提供一种能够提高系统基表更新成功率的系统基表更新方法、装置、计算机设备和存储介质。一种系统基表更新方法,所述方法包括:将系统基表集合的基表更新数据发送至分布式消息队列中;所述系统基表集合为具有关联关系的系统基表的集合;所述基表更新数据中包含目标版本号;当所述分布式消息队列中包含的所述基表更新数据完整时,标记所述分布式消息队列中的所述系统基表集合为所述目标版本号;查询目标系统中所述系统基表集合的当前版本号,并将所述当前版本号与所述系统基表集合在分布式消息队列中的目标版本号进行比较;当所述目标版本号为所述当前版本号的下一版本号时,通过所述分布式消息队列向所述目标系统发送基表更新响应;所述基表更新响应用于指示所述目标系统从所述分布式消息队列中获取所述基表更新数据;当所述目标系统中包含的所述基表更新数据完整时,所述基表更新响应还用于指示所述目标系统将所述基表更新数据更新至相应的系统基表中,并将所述目标版本号作为所述目标系统中系统基表集合的当前版本号。在其中一个实施例中,所述将系统基表集合的基表更新数据发送至分布式消息队列中,包括:将系统基表集合的基表更新数据打包成多个json子数据包;将所述多个json子数据包发送至分布式消息队列中;在所述将系统基表集合的基表更新数据发送至分布式消息队列中之后,还包括:根据所述多个json子数据包判断分布式消息队列中包含的所述基表更新数据是否完整;当所述分布式消息队列中包含的所述json子数据包完整时,则判定所述分布式消息队列中包含的所述基表更新数据完整;当所述分布式消息队列中包含的所述json子数据包不完整时,则判定所述分布式消息队列中包含的所述基表更新数据不完整。在其中一个实施例中,所述根据所述多个json子数据包判断分布式消息队列中包含的所述基表更新数据是否完整,包括:统计所有json子数据包的第一数据包总数,并统计所述分布式消息队列成功接收的json子数据包的第二数据包总数;当所述第一数据包总数与所述第二数据包总数相等时,则判定所述分布式消息队列中包含的所述json子数据包完整;当所述第一数据包总数与所述第二数据包总数不相等时,则判定所述分布式消息队列中包含的所述json子数据包不完整。在其中一个实施例中,所述根据所述多个json子数据包判断分布式消息队列中包含的所述基表更新数据是否完整,包括:对每个json子数据包进行编号;当所述分布式消息队列中包含所有编号对应的json子数据包时,则判定所述分布式消息队列中包含的所述json子数据包完整;当所述分布式消息队列中不包含所有编号对应的json子数据包时,则判定所述分布式消息队列中包含的所述json子数据包不完整。在其中一个实施例中,在所述判定所述分布式消息队列中包含的所述基表更新数据不完整之后,还包括:根据将系统基表集合的基表更新数据打包成多个json子数据包的第一时间,以及判定所述分布式消息队列中包含的所述基表更新数据不完整的第二时间进行计算,得到系统基表更新时长;当系统基表更新时长大于预设时长时,删除所述分布式消息队列中所述目标版本号所对应的json子数据包,并返回将所述多个json子数据包发送至分布式消息队列中的步骤;当系统基表更新时长小于预设时长时,返回根据所述多个json子数据包判断分布式消息队列中包含的所述基表更新数据是否完整的步骤。在其中一个实施例中,在所述通过所述分布式消息队列向所述目标系统发送基表更新响应之前,还包括:接收多个目标系统发送的基表更新请求;每个基表更新请求中包含相应目标系统的系统标识和系统基表集合标识;所述查询目标系统中所述系统基表集合的当前版本号,包括:查询匹配的目标系统中所述系统基表集合的当前版本号;所述匹配的目标系统为相应系统标识所对应的基表更新请求中包含的系统基表集合标识,与所述系统基表集合所对应的系统基表集合标识一致的目标系统。在其中一个实施例中,所述基表更新请求中还包含系统密钥,所述方法还包括:根据所述系统标识对所述系统密钥进行验证;所述查询匹配的目标系统中所述系统基表集合的当前版本号,包括:当所述系统密钥验证通过时,查询匹配的目标系统中所述系统基表集合的当前版本号。一种系统基表更新装置,所述装置包括:发送模块,用于将系统基表集合的基表更新数据发送至分布式消息队列中;所述系统基表集合为具有关联关系的系统基表的集合;所述基表更新数据中包含目标版本号;标记模块,用于当所述分布式消息队列中包含的所述基表更新数据完整时,标记所述分布式消息队列中的所述系统基表集合为所述目标版本号;查询模块,用于查询目标系统中所述系统基表集合的当前版本号,并将所述当前版本号与所述系统基表集合在分布式消息队列中的目标版本号进行比较;响应模块,用于当所述目标版本号为所述当前版本号的下一版本号时,通过所述分布式消息队列向所述目标系统发送基表更新响应;所述基表更新响应用于指示所述目标系统从所述分布式消息队列中获取所述基表更新数据;当所述目标系统中包含的所述基表更新数据完整时,所述基表更新响应还用于指示所述目标系统将所述基表更新数据更新至相应的系统基表中,并将所述目标版本号作为所述目标系统中系统基表集合的当前版本号。一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时实现上述各个实施例中所述的系统基表更新方法的步骤。一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述各个实施例中所述的系统基表更新方法的步骤。上述系统基表更新方法、装置、计算机设备和存储介质,通过将有关联关系的系统基表集合所对应的基表更新数据发送至分布式消息队列中,在分布式消息队列中包含的基表更新数据完整时,将分布式消息队列中基表更新数据对应的系统基表集合标记为目标版本号。当分布式消息队列中包含的基表更新数据完整时,通过比较目标系统中系统基表集合的当前版本号和系统基表集合在分布式消息队列中的目标版本号,确定当前版本号的下一版本号对应的目标版本号的基表更新数据。通过发送基表更新响应至目标系统,使得目标系统能够从分布式消息队列中获取下一版本号的基表更新数据,且在目标系统中包含的基表更新数据完整时,将基表更新数据更新至相应的系统基表中。本次系统基表更新完成之后,可将目标版本号作为目标系统中系统基表集合的当前版本号,并在有更新版本号的基表更新数据时进行下一次的系统基表更新。通过将有关联关系的系统基表的基表更新数据作为整体进行更新,且按照版本号的顺序进行系统基表更新,避免了系统基表更新时出现系统基表上下级关系异常的情况,从而提高了系统基表更新的成功率。附图说明图1为一个实施例中系统基表更新方法的应用场景图;图2为一个实施例中系统基表更新方法的流程示意图;图3为一个实施例中分布式消息队列的发布订阅模型的示意图;图4为一个实施例中系统基表更新装置的结构框图;图5为一个实施例中计算机设备的内部结构图。具体实施方式为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。可以理解,本发明所使用的术语“第一”、“第二”等可在本文中用于描述各种元件,但这些元件不受这些术语的限制。这些术语仅用于将第一个元件与另一个元件区分。举例来说,在不脱离本发明的范围的情况下,可以将第一数据包总数称为第二数据包总数,且类似地,可将第二数据包总数称为第一数据包总数。第一数据包总数和第二数据包总数两者都是数据包总数,但其不是同一数据包总数。本申请提供的系统基表更新方法,可以应用于如图1所示的应用环境中。其中,系统服务器集群102通过网络与基表服务器104通过网络进行通信。其中,系统服务器集群102可包括第一系统服务器102a、第二系统服务器102b和第三系统服务器102c等多个系统服务器,且每个系统服务器上都可部署相应的一个或多个目标系统。基表服务器104可将统基表集合的基表更新数据发送至分布式消息队列中,当分布式消息队列中包含的基表更新数据完整时,标记分布式消息队列中的系统基表集合为目标版本号。基表服务器104可查询系统服务器集群102中系统服务器中目标系统中系统基表集合的当前版本号,并将当前版本号与系统基表集合在分布式消息队列中的目标版本号进行比较。当目标版本号为当前版本号的下一版本号时,通过分布式消息队列向目标系统发送基表更新响应,系统服务器集群102可根据基表更新响应从分布式消息队列中获取基表更新数据。当系统服务器中目标系统中包含的基表更新数据完整时,目标系统将基表更新数据更新至相应的系统基表中,并将目标版本号作为目标系统中系统基表集合的当前版本号。在一个实施例中,如图2所示,提供了一种系统基表更新方法,以该方法应用于图1中的基表服务器104为例进行说明,包括以下步骤:步骤202,将系统基表集合的基表更新数据发送至分布式消息队列中;系统基表集合为具有关联关系的系统基表的集合;基表更新数据中包含目标版本号。系统基表是指用于存储特定基表数据的实体表,且每个目标系统中都包含一个或多个需要进行系统基表同步的系统基表,系统基表包括但不限于字段定义表、配置信息表、个人信息表、企业信息表、行业等级表、城市等级表等其中一种或多种。其中,目标系统是指需要进行系统基表更新的系统。基表更新数据是指需要在系统中进行增加、删除、更改等的基表数据。其中,基表数据是指系统基表中针对数据管理对象的具体数据。系统基表中可包含表名、列名、列类型、列内容、索引名等字段。每个字段下可对应一个或多个具体的字段值,基表数据即由具体的字段值所构成。比如说,针对数据管理对象“行业”来说,基表数据可为行业名、行业代码、上级行业代码及行业描述等。每个具体行业的相关字段值可构成一条基表数据,系统基表中所有行业的相关字段值则构成系统基表的基表数据。目标版本号是指本次基表更新数据的版本标识。分布式消息队列是指可以容纳大量数据且可以并行处理数据的消息队列。其中,消息队列是在消息的传输过程中保存消息的容器。分布式消息队列分为两大类,broker(中间件)类和brokerless(非中间件)类。其中,broker类的分布式消息队列,是指有独立部署进行的分布式服务,即发送者把消息发布到broker进程,再由broker进程推(push)或者是拉(pull)给订阅者。brokerless类的消息队列,主要采用api(applicationprogramminginterface,应用程序编程接口)的方式,编译到应用程序中,在应用程序间进行点对点的通信。在一个实施例中,系统基表之间的关联关系可为依赖关系。其中,依赖关系包括但不限于值依赖、存在依赖、验证依赖、配置依赖及权限依赖等其中一种或多种。值依赖举例来说是指第一系统基表中的字段为某个预设的值、或值在预设的范围、或值满足预设模式、或值满足预设类型时,第二系统基表中相应的字段只能为相应的特定值或值类型;存在依赖举例来说是指第一系统基表中的字段为预设值时,第二系统基表中的字段相应地存在或不存在;验证依赖举例来说是指第一系统基表中的字段为预设值时,第二系统基表中的字段的验证有相应的验证规则,比如必填或非必填;权限依赖举例来说是指第一系统基表中的字段在权限验证为预设值时,相应的变更第二系统基表中的字段的配置项中的权限参数。步骤204,当分布式消息队列中包含的基表更新数据完整时,标记分布式消息队列中的系统基表集合为目标版本号。在一个实施例中,将系统基表集合的基表更新数据发送至分布式消息队列中,包括:将系统基表集合的基表更新数据打包成多个json子数据包;将多个json子数据包发送至分布式消息队列中;在将系统基表集合的基表更新数据发送至分布式消息队列中之后,还包括:根据多个json子数据包判断分布式消息队列中包含的基表更新数据是否完整;当分布式消息队列中包含的json子数据包完整时,则判定分布式消息队列中包含的基表更新数据完整,可标记分布式消息队列中的json子数据包对应的系统基表集合为目标版本号;当分布式消息队列中包含的json子数据包不完整时,则判定分布式消息队列中包含的基表更新数据不完整。其中,json(javascriptobjectnotation,js对象标记,是一种轻量级的数据交换格式)子数据包是指通过json格式将基表更新数据转换生成的数据包。比如说,一共有100000行需要进行增加、删除、更改等的基表数据,可按照每1000行基表更新数据打包成一个json子数据包,则会得到100个json子数据包。步骤206,查询目标系统中系统基表集合的当前版本号,并将当前版本号与系统基表集合在分布式消息队列中的目标版本号进行比较。当前版本号是指当前目标系统中系统基表集合的版本标识,也就是目标系统中前一次系统基表更新后系统基表集合的版本标识。由于系统基表是在不断更新的,可针对每次基表更新数据预设相应的目标版本号,且可按照系统基表更新顺序对目标版本号进行编号。通过将系统基表集合的当前版本号与系统基表集合在分布式消息队列中的目标版本号进行比较,可以判断目标版本号是否为当前版本号的下一版本号。比如说,第一个需要进行更新的基表更新数据的目标版本号可为1号,第二个需要进行更新的基表更新数据的目标版本号可为2号,第三个需要进行更新的基表更新数据的目标版本号可为3号,以此类推。则2号版本号为1号版本号的下一版本号,3号版本号为2号版本号的下一版本号。在一个实施例中,当目标版本号不为当前版本号的下一版本号时,则不作处理。举例来说,当目标系统中的系统基表集合为7版本,针对分布式消息队列中包含10版本的系统基表集合的基表更新数据不进行系统基表更新,直至分布式消息队列中包含8版本的系统基表集合的基表更新数据时,才执行步骤208。通过按照版本号实现系统基表更新,避免出现第二等级行业表更新成功,但第二等级行业表所依赖的第一等级行业表并没有更新成功等目标系统中系统基表上下级关系异常的情况。步骤208,当目标版本号为当前版本号的下一版本号时,通过分布式消息队列向目标系统发送基表更新响应;基表更新响应用于指示目标系统从分布式消息队列中获取基表更新数据。基表更新响应是指基表服务器发送至相应目标系统的响应,用于指示相应的目标系统从分布式消息队列中获取基表更新数据。系统服务器集群中每个系统服务器可与分布式消息队列建立长连接,实时监控分布式消息队列中是否包含相应目标系统所订阅系统基表的基表更新数据。当分布式消息队列中包含与任意一个系统服务器中的目标系统具有订阅关系的基表更新数据时,该目标系统所对应的服务器会接收到基表服务器通过分布式消息队列发送基表更新响应,图3为分布式消息队列的发布订阅模型的示意图。基表服务器可作为发布者302(publisher)将基表数据和相应的系统基表的系统基表标识发送至分布式消息队列304中,使得订阅者(subscriber)可以获取到分布式消息队列中相应的消息。其中,订阅者可多个,比如订阅者306a、订阅者306b及订阅者306c等。举例来说,当发布者302发布了三个系统基表对应的消息,分别为消息1、消息2、和消息3(msg1、2、3)时,订阅者可根据消息中包含的系统基表标识从分布式消息队列304中获取相应的消息,比如,订阅者306a可从分布式消息队列304中获取消息1(msg1),订阅者306b可从分布式消息队列304中获取消息2(msg2),订阅者306c可从分布式消息队列304中获取消息3(msg3)。在一个实施例中,系统服务器集群中每个系统服务器可与分布式消息队列建立长连接,实时监控分布式消息队列中是否包含相应目标系统所订阅系统基表的基表更新数据。当分布式消息队列中包含与任意一个系统服务器中的目标系统具有订阅关系的基表更新数据时,该目标系统所对应的系统服务器会接收到基表服务器通过分布式消息队列发送基表更新响应。步骤210,当目标系统中包含的基表更新数据完整时,基表更新响应还用于指示目标系统将基表更新数据更新至相应的系统基表中,并将目标版本号作为目标系统中系统基表集合的当前版本号。当检测到目标系统所对应的系统服务器已成功获取目标版本号所对应的基表更新数据之后,目标系统可将基表更新数据更新至相应的系统基表中。比如说,目标系统可根据基表更新数据对相应系统系表中的基表数据进行增加、删除、更改等。在一个实施例中,当系统基表集合的基表更新数据以多个json子数据包的形式进行下发时,且当目标系统中包含的json子数据包完整时,则目标系统可对所有的json子数据包进行解析,并将得到的完整的基表更新数据更新至相应的系统基表中。其中,json子数据包可包含多个字段,举例来说:"tableset":比如"new_industry",代表更新new_industry表集合;"version":目标版本号,代表此次100个数据包的整体更新,是ssp_city表的第几个更新版本;"table":比如"new_industry",代表具体更新的基表表名;"column":代表具体更新的基表列名;"action",代表这1行数据,是c(新增),u(更新),d(删除);"id"、"created_by"、"created_date"、"updated_by"、"updated_date",代表具体更新的基表的字段是哪些;"count":比如100,代表此次整体更新,有100个数据包;"orderno":比如3,代表当前数据包,是100个数据包的第3个数据包;"affectedlines",代表以这1个数据包更新基表,会有哪些影响;"totalcnt":代表以这1个数据包更新基表,一共会影响多少行数据;"createdcnt":代表以这1个数据包更新基表,会新增多少行数据;"updatedcnt":代表以这1个数据包更新基表,会更新多少行数据;"deletedcnt":代表以这1个数据包更新基表,会删除多少行数据。上述系统基表更新方法中,通过将有关联关系的系统基表集合所对应的基表更新数据发送至分布式消息队列中,在分布式消息队列中包含的基表更新数据完整时,将分布式消息队列中基表更新数据对应的系统基表集合标记为目标版本号。当分布式消息队列中包含的基表更新数据完整时,通过比较目标系统中系统基表集合的当前版本号和系统基表集合在分布式消息队列中的目标版本号进行比较,确定当前版本号的下一版本号对应的目标版本号的基表更新数据。通过发送基表更新相应至目标系统,使得目标系统能够从分布式消息队列中获取下一版本号的基表更新数据,且在目标系统中包含的基表更新数据完整时,将基表更新数据更新至相应的系统基表中。本次系统基表更新完成之后,可将目标版本号作为目标系统中系统基表集合的当前版本号,并在有更新版本号的基表更新数据时进行下一次的系统基表更新。通过将有关联关系的系统基表的基表更新数据作为整体进行更新,且按照版本号的顺序进行系统基表更新,避免了系统基表更新时出现系统基表上下级关系异常的情况,从而提高了系统基表更新的成功率。应该理解的是,虽然图2的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。在一个实施例中,根据多个json子数据包判断分布式消息队列中包含的基表更新数据是否完整,包括:统计所有json子数据包的第一数据包总数,并统计分布式消息队列成功接收的json子数据包的第二数据包总数;当第一数据包总数与第二数据包总数相等时,则判定分布式消息队列中包含的json子数据包完整;当第一数据包总数与第二数据包总数不相等时,则判定分布式消息队列中包含的json子数据包不完整。举例来说,将100000行需要进行增加、删除、更改等的基表数据,按照每1000行基表更新数据打包成一个json子数据包进行打包,则第一数据包总数为100。当分布式消息队列成功接收的json子数据包的第二数据包总数小于100时,则说明分布式消息队列中包含的json子数据包不完整。在一个实施例中,根据多个json子数据包判断分布式消息队列中包含的基表更新数据是否完整,包括:对每个json子数据包进行编号;当分布式消息队列中包含所有编号对应的json子数据包时,则判定分布式消息队列中包含的json子数据包完整;当分布式消息队列中不包含所有编号对应的json子数据包时,则判定分布式消息队列中包含的json子数据包不完整。举例来说,有编号1、编号2、编号n、编号100一共100个json子数据包,当分布式消息队列中包含编号1至编号100所有编号对应的json子数据包时,则判定分布式消息队列中包含的json子数据包完整。进一步还可检测是否存在重复编号的json子数据包,若存在,可将重复的编号的json子数据包删除,以保证每个编号都只对应一个json子数据包,减少数据冗余。上述实施例中,通过将基表更新数据打包成多个json子数据包,且对每个json子数据包进行编号,从而能够在json子数据包下发出现异常的时候,直接将出现异常的json子数据包重新下发,而无需全部重新下发,节约了基表更新数据下发的时间,从而提高了系统基表更新的效率。在一个实施例中,当分布式消息队列中包含的基表更新数据不完整时,可将分布式消息队列中包含的基表更新数据对应的系统基表集合标记为异常版本。当目标系统检测到分布式消息队列中的系统基表集合为异常版本时,不进行系统基表更新。在一个实施例中,在判定分布式消息队列中包含的基表更新数据不完整之后,还包括:根据将系统基表集合的基表更新数据打包成多个json子数据包的第一时间,以及判定分布式消息队列中包含的基表更新数据不完整的第二时间进行计算,得到系统基表更新时长;当系统基表更新时长大于预设时长时,删除分布式消息队列中目标版本号所对应的json子数据包,并返回将多个json子数据包发送至分布式消息队列中的步骤;当系统基表更新时长小于预设时长时,返回根据多个json子数据包判断分布式消息队列中包含的基表更新数据是否完整的步骤。第一时间是指开始进行系统基表更新的时间,第二时间是指当前判定分布式消息队列中包含的基表更新数据不完整的时间,系统基表更新时长是指从第一时间到第二时间、系统基表更新的实际时长。当系统基表更新时长小于预设时长,比如2分钟,时,则说明基表服务器还在将json子数据包下发至分布式消息队列的过程中,则可暂时不作处理,并在等待一段时间之后再次统计分布式消息队列成功接收的json子数据包的第二数据包总数。当系统基表更新时长大于预设时长时,则说明基表服务器本次json子数据包下发已结束,且由于分布式消息队列中包含的基表更新数据不完整,则说明本次json子数据包下发出现异常。当json子数据包下发出现异常时,可删除分布式消息队列中目标版本号所对应的json子数据包,基表服务器可重新执行将多个json子数据包发送至分布式消息队列中的步骤,直至分布式消息队列中包含的json子数据包完整。上述实施例中,通过根据系统基表更新时长判断json子数据包是否还在下发过程中,避免了将正常系统基表更新过程判断为异常情况的可能性,从而防止重复进行json子数据包的下发工作。在一个实施例中,在通过分布式消息队列向目标系统发送基表更新响应之前,还包括:接收多个目标系统发送的基表更新请求;每个基表更新请求中包含相应目标系统的系统标识和系统基表集合标识;查询目标系统中系统基表集合的当前版本号,包括:查询匹配的目标系统中系统基表集合的当前版本号;匹配的目标系统为相应系统标识所对应的基表更新请求中包含的系统基表集合标识,与系统基表集合所对应的系统基表集合标识一致的目标系统。基表更新请求是指目标系统用于接入基表服务器,并通过基表服务器实现系统基表更新的请求。系统标识是指用于将一个目标系统区分于其他目标系统的标识,比如目标系统的英文名、英文名简称、中文名简称等。系统基表集合标识是指目标系统订阅的系统基表集合的标识。当存在系统基表更新数据时,可根据系统基表更新数据所涉及的系统基表集合,查找与系统基表集合具有映射关系的目标系统,通过上述各种系统基表更新方法将系统基表更新数据更新至该相应的目标系统。在一个实施例中,分布式消息队列可根据系统基表集合标识将基表更新响应发送至相应的目标系统。比如说,当分布式消息队列为broker类,则分布式消息队列中包含消息交换机(exchange,用于指定消息按什么规则,路由到哪个队列)、消息列队列载体(queue,每个消息都会被投入到一个或多个队列)及绑定(binding,用于把exchange和queue按照路由规则绑定起来),当接收到包含基表更新数据及相应系统基表集合标识的消息之后,消息交换机可根据绑定的规则,即系统标识和系统基表集合标识之间的映射关系,将消息路由到相应的消息队列载体,目标系统可在消息队列载体中获取到基表更新数据。在一个实施例中,还可将目标系统中的基表更新数据更新至系统基表过程设置为可回滚。当目标系统中只有部分目标版本号对应的基表更新数据更新成功时,可触发将系统基表集合中相应的基表数据回滚至更新前的当前版本号。可通过检测系统基表中基表更新数据的最后更新时间,以及系统基表中基表数据的总行数来判断基表更新数据是否全部更新成功。在一个实施例中,基表更新请求中还包含系统密钥,方法还包括:根据系统标识对系统密钥进行验证;查询匹配的目标系统中系统基表集合的当前版本号,包括:当系统密钥验证通过时,查询匹配的目标系统中系统基表集合的当前版本号。系统密钥是指目标系统用于证明目标系统身份的密钥,且每个目标系统的系统密钥可为全局唯一的。系统密钥可为基表服务器为每个目标系统分配的令牌号tokenid。系统密钥可由英文字母、标点符号及阿拉伯数字等其中一种或多种组成。在一个实施例中,可通过预设的加密算法对系统标识进行加密,将得到的密文作为系统密钥。比如说可通过md5(messagedigestalgorithm5,信息摘要算法)、sha(securehashalgorithm,安全散列算法)、hmac(hashmessageauthenticationcode,散列消息鉴别码)等单项加密算法等对系统标识进行加密处理,将系统标识转换为固定长度的字符串,并将得到的字符串作为系统密钥。通过将对系统标识加密得到的密文作为系统密钥,可以保证系统密钥的全局唯一性。在接收到系统标识和系统密钥之后,还可对接收到的系统标识通过预设的加密算法进行加密处理,判断得到的密文是否与接收到的系统密钥一致。若是,则判定密钥验证通过;若否,则判定密钥验证不通过。在一个实施例中,可针对分布式消息队列预置多种属性。比如说,消息消费模式(比如点对点模式、广播模式和订阅模式等)、消息消费方式(比如push推动模式,pull拉动模式)、消息加密方式(比如消息可采用二进制方式传输和存储)、单条消息大小限制(比如32k、64k)、消息投递效率(比如毫秒级至5秒)、消息保存周期(比如保存周期为5天,5天之后无论消息是否被消费,消息都会被删除)、还可以预设针对消息发送、接收的功能开关(比如在分布式消息队列异常时,关闭掉消息功能)等。在一个实施例中,如图4所示,提供了一种系统基表更新装置400,该装置包括:发送模块402,用于将系统基表集合的基表更新数据发送至分布式消息队列中;系统基表集合为具有关联关系的系统基表的集合;基表更新数据中包含目标版本号;标记模块404,用于当分布式消息队列中包含的基表更新数据完整时,标记分布式消息队列中的系统基表集合为目标版本号;查询模块406,用于查询目标系统中系统基表集合的当前版本号,并将当前版本号与系统基表集合在分布式消息队列中的目标版本号进行比较;响应模块408,用于当目标版本号为当前版本号的下一版本号时,通过分布式消息队列向目标系统发送基表更新响应;基表更新响应用于指示目标系统从分布式消息队列中获取基表更新数据;当目标系统中包含的基表更新数据完整时,基表更新响应还用于指示目标系统将基表更新数据更新至相应的系统基表中,并将目标版本号作为目标系统中系统基表集合的当前版本号。在一个实施例中,发送模块402还用于将系统基表集合的基表更新数据打包成多个json子数据包;将多个json子数据包发送至分布式消息队列中;该装置还包括完整性判断模块,用于根据多个json子数据包判断分布式消息队列中包含的基表更新数据是否完整;当分布式消息队列中包含的json子数据包完整时,则判定分布式消息队列中包含的基表更新数据完整;当分布式消息队列中包含的json子数据包不完整时,则判定分布式消息队列中包含的基表更新数据不完整。在一个实施例中,完整性判断模块还用于统计所有json子数据包的第一数据包总数,并统计分布式消息队列成功接收的json子数据包的第二数据包总数;当第一数据包总数与第二数据包总数相等时,则判定分布式消息队列中包含的json子数据包完整;当第一数据包总数与第二数据包总数不相等时,则判定分布式消息队列中包含的json子数据包不完整。在一个实施例中,完整性判断模块还用于对每个json子数据包进行编号;当分布式消息队列中包含所有编号对应的json子数据包时,则判定分布式消息队列中包含的json子数据包完整;当分布式消息队列中不包含所有编号对应的json子数据包时,则判定分布式消息队列中包含的json子数据包不完整。在一个实施例中,发送模块402还用于根据将系统基表集合的基表更新数据打包成多个json子数据包的第一时间,以及判定分布式消息队列中包含的基表更新数据不完整的第二时间进行计算,得到系统基表更新时长;当系统基表更新时长大于预设时长时,删除分布式消息队列中目标版本号所对应的json子数据包,并返回将多个json子数据包发送至分布式消息队列中的步骤;当系统基表更新时长小于预设时长时,返回根据多个json子数据包判断分布式消息队列中包含的基表更新数据是否完整的步骤。在一个实施例中,该装置还包括接收模块,用于接收多个目标系统发送的基表更新请求;每个基表更新请求中包含相应目标系统的系统标识和系统基表集合标识;查询模块406查询匹配的目标系统中系统基表集合的当前版本号;匹配的目标系统为相应系统标识所对应的基表更新请求中包含的系统基表集合标识,与系统基表集合所对应的系统基表集合标识一致的目标系统。在一个实施例中,基表更新请求中还包含系统密钥,接收模块还用于根据系统标识对系统密钥进行验证;查询模块406还用于当系统密钥验证通过时,查询匹配的目标系统中系统基表集合的当前版本号。关于系统基表更新装置的具体限定可以参见上文中对于系统基表更新方法的限定,在此不再赘述。上述系统基表更新装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图5所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储基表更新数据、系统基表集合等。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种系统基表更新方法。本领域技术人员可以理解,图5中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现以下步骤:将系统基表集合的基表更新数据发送至分布式消息队列中;系统基表集合为具有关联关系的系统基表的集合;基表更新数据中包含目标版本号;当分布式消息队列中包含的基表更新数据完整时,标记分布式消息队列中的系统基表集合为目标版本号;查询目标系统中系统基表集合的当前版本号,并将当前版本号与系统基表集合在分布式消息队列中的目标版本号进行比较;当目标版本号为当前版本号的下一版本号时,通过分布式消息队列向目标系统发送基表更新响应;基表更新响应用于指示目标系统从分布式消息队列中获取基表更新数据;当目标系统中包含的基表更新数据完整时,基表更新响应还用于指示目标系统将基表更新数据更新至相应的系统基表中,并将目标版本号作为目标系统中系统基表集合的当前版本号。在一个实施例中,处理器执行计算机程序时,所实现的将系统基表集合的基表更新数据发送至分布式消息队列中的步骤,包括以下步骤:将系统基表集合的基表更新数据打包成多个json子数据包;将多个json子数据包发送至分布式消息队列中;在所实现的将系统基表集合的基表更新数据发送至分布式消息队列中的步骤之后,还包括以下步骤:根据多个json子数据包判断分布式消息队列中包含的基表更新数据是否完整;当分布式消息队列中包含的json子数据包完整时,则判定分布式消息队列中包含的基表更新数据完整;当分布式消息队列中包含的json子数据包不完整时,则判定分布式消息队列中包含的基表更新数据不完整。在一个实施例中,处理器执行计算机程序时,所实现的根据多个json子数据包判断分布式消息队列中包含的基表更新数据是否完整的步骤,包括以下步骤:统计所有json子数据包的第一数据包总数,并统计分布式消息队列成功接收的json子数据包的第二数据包总数;当第一数据包总数与第二数据包总数相等时,则判定分布式消息队列中包含的json子数据包完整;当第一数据包总数与第二数据包总数不相等时,则判定分布式消息队列中包含的json子数据包不完整。在一个实施例中,处理器执行计算机程序时,所实现的根据多个json子数据包判断分布式消息队列中包含的基表更新数据是否完整的步骤,包括以下步骤:对每个json子数据包进行编号;当分布式消息队列中包含所有编号对应的json子数据包时,则判定分布式消息队列中包含的json子数据包完整;当分布式消息队列中不包含所有编号对应的json子数据包时,则判定分布式消息队列中包含的json子数据包不完整。在一个实施例中,处理器执行计算机程序时,在所实现的判定分布式消息队列中包含的基表更新数据不完整的步骤之后,还包括以下步骤:根据将系统基表集合的基表更新数据打包成多个json子数据包的第一时间,以及判定分布式消息队列中包含的基表更新数据不完整的第二时间进行计算,得到系统基表更新时长;当系统基表更新时长大于预设时长时,删除分布式消息队列中目标版本号所对应的json子数据包,并返回将多个json子数据包发送至分布式消息队列中的步骤;当系统基表更新时长小于预设时长时,返回根据多个json子数据包判断分布式消息队列中包含的基表更新数据是否完整的步骤。在一个实施例中,处理器执行计算机程序时,在所实现的通过分布式消息队列向目标系统发送基表更新响应的步骤之前,还包括以下步骤:接收多个目标系统发送的基表更新请求;每个基表更新请求中包含相应目标系统的系统标识和系统基表集合标识;所实现的查询目标系统中系统基表集合的当前版本号的步骤,包括以下步骤:查询匹配的目标系统中系统基表集合的当前版本号;匹配的目标系统为相应系统标识所对应的基表更新请求中包含的系统基表集合标识,与系统基表集合所对应的系统基表集合标识一致的目标系统。在一个实施例中,基表更新请求中还包含系统密钥,处理器执行计算机程序时还实现以下步骤:根据系统标识对系统密钥进行验证;查询匹配的目标系统中系统基表集合的当前版本号,包括:当系统密钥验证通过时,查询匹配的目标系统中系统基表集合的当前版本号。在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:将系统基表集合的基表更新数据发送至分布式消息队列中;系统基表集合为具有关联关系的系统基表的集合;基表更新数据中包含目标版本号;当分布式消息队列中包含的基表更新数据完整时,标记分布式消息队列中的系统基表集合为目标版本号;查询目标系统中系统基表集合的当前版本号,并将当前版本号与系统基表集合在分布式消息队列中的目标版本号进行比较;当目标版本号为当前版本号的下一版本号时,通过分布式消息队列向目标系统发送基表更新响应;基表更新响应用于指示目标系统从分布式消息队列中获取基表更新数据;当目标系统中包含的基表更新数据完整时,基表更新响应还用于指示目标系统将基表更新数据更新至相应的系统基表中,并将目标版本号作为目标系统中系统基表集合的当前版本号。在一个实施例中,计算机程序被处理器执行时,所实现的将系统基表集合的基表更新数据发送至分布式消息队列中的步骤,包括以下步骤:将系统基表集合的基表更新数据打包成多个json子数据包;将多个json子数据包发送至分布式消息队列中;在所实现的将系统基表集合的基表更新数据发送至分布式消息队列中的步骤之后,还包括以下步骤:根据多个json子数据包判断分布式消息队列中包含的基表更新数据是否完整;当分布式消息队列中包含的json子数据包完整时,则判定分布式消息队列中包含的基表更新数据完整;当分布式消息队列中包含的json子数据包不完整时,则判定分布式消息队列中包含的基表更新数据不完整。在一个实施例中,计算机程序被处理器执行时,所实现的根据多个json子数据包判断分布式消息队列中包含的基表更新数据是否完整的步骤,包括以下步骤:统计所有json子数据包的第一数据包总数,并统计分布式消息队列成功接收的json子数据包的第二数据包总数;当第一数据包总数与第二数据包总数相等时,则判定分布式消息队列中包含的json子数据包完整;当第一数据包总数与第二数据包总数不相等时,则判定分布式消息队列中包含的json子数据包不完整。在一个实施例中,计算机程序被处理器执行时,所实现的根据多个json子数据包判断分布式消息队列中包含的基表更新数据是否完整的步骤,包括以下步骤:对每个json子数据包进行编号;当分布式消息队列中包含所有编号对应的json子数据包时,则判定分布式消息队列中包含的json子数据包完整;当分布式消息队列中不包含所有编号对应的json子数据包时,则判定分布式消息队列中包含的json子数据包不完整。在一个实施例中,计算机程序被处理器执行时,在所实现的判定分布式消息队列中包含的基表更新数据不完整的步骤之后,还包括以下步骤:根据将系统基表集合的基表更新数据打包成多个json子数据包的第一时间,以及判定分布式消息队列中包含的基表更新数据不完整的第二时间进行计算,得到系统基表更新时长;当系统基表更新时长大于预设时长时,删除分布式消息队列中目标版本号所对应的json子数据包,并返回将多个json子数据包发送至分布式消息队列中的步骤;当系统基表更新时长小于预设时长时,返回根据多个json子数据包判断分布式消息队列中包含的基表更新数据是否完整的步骤。在一个实施例中,计算机程序被处理器执行时,在所实现的通过分布式消息队列向目标系统发送基表更新响应的步骤之前,还包括以下步骤:接收多个目标系统发送的基表更新请求;每个基表更新请求中包含相应目标系统的系统标识和系统基表集合标识;所实现的查询目标系统中系统基表集合的当前版本号的步骤,包括以下步骤:查询匹配的目标系统中系统基表集合的当前版本号;匹配的目标系统为相应系统标识所对应的基表更新请求中包含的系统基表集合标识,与系统基表集合所对应的系统基表集合标识一致的目标系统。在一个实施例中,基表更新请求中还包含系统密钥,计算机程序被处理器执行时还实现以下步骤:根据系统标识对系统密钥进行验证;查询匹配的目标系统中系统基表集合的当前版本号,包括:当系统密钥验证通过时,查询匹配的目标系统中系统基表集合的当前版本号。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1