一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种业务变更消息的处理方法及装置与流程

2022-04-30 02:06:09 来源:中国专利 TAG:


1.本发明实施例涉及云技术领域,尤其涉及一种业务变更消息的处理方法及装置。


背景技术:

2.业务应用中经常会有业务变更的情况,当一个业务模块中有业务发生变更时,需要通知其他依赖的业务模块进行相应的更新处理。若由每个发生业务变化的业务模块直接通知其他依赖的业务模块,那么每个业务模块需要维护一套协议,需要在接口里不断增加业务逻辑,从而影响业务模块的性能,同时容易造成业务变更消息丢失。


技术实现要素:

3.本技术实施例提供了一种业务变更消息的处理方法及装置,用于对业务模块进行解耦,同时避免业务变更消息丢失。
4.一方面,本技术实施例提供了一种业务变更消息的处理方法,该方法包括:
5.接收到携带至少一个业务变更消息的业务变更请求时,将所述至少一个业务变更消息写入持久化消息队列,所述持久化消息队列位于服务器的非易失存储介质中,且所述持久化消息队列中的业务变更消息备份保存在所述服务器的非易失存储介质中;
6.根据先入先出的顺序,从所述持久化消息队列中获取业务变更消息,并将获取的业务变更消息的消息标识写入消息中间件;
7.通过所述消息中间件将消息标识推送给对应的消息订阅端,所述消息订阅端为订阅了业务变更消息的订阅端,以使所述消息订阅端基于消息标识从所述服务器的非易失存储介质中获取对应的业务变更消息。
8.一方面,本技术实施例提供了一种业务变更消息的处理装置,该装置包括:
9.接收模块,用于接收到携带至少一个业务变更消息的业务变更请求时,将所述至少一个业务变更消息写入持久化消息队列,所述持久化消息队列位于服务器的非易失存储介质中,且所述持久化消息队列中的业务变更消息备份保存在所述服务器的非易失存储介质中;
10.处理模块,用于根据先入先出的顺序,从所述持久化消息队列中获取业务变更消息,并将获取的业务变更消息的消息标识写入消息中间件;
11.推送模块,用于通过所述消息中间件将消息标识推送给对应的消息订阅端,所述消息订阅端为订阅了业务变更消息的订阅端,以使所述消息订阅端基于消息标识从所述服务器的非易失存储介质中获取对应的业务变更消息。
12.可选地,所述处理模块具体用于:
13.获取所述持久化消息队列中位于起始指针指向的位置的业务变更消息;
14.从所述持久化消息队列中删除位于所述起始指针指向的位置的业务变更消息;
15.将所述起始指针的位置向队尾方向移动一个位置。
16.可选地,所述处理模块还用于:
17.将所述业务变更请求写入请求数据库,将所述业务变更请求的处理日志保存在大数据处理平台中。
18.可选地,所述处理模块还用于:
19.根据所述消息中间件以及所述大数据处理平台中保存的数据,校验接收的业务变更消息是否丢失。
20.可选地,所述持久化消息队列为leveldb中的持久化消息队列。
21.一方面,本技术实施例提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述业务变更消息的处理方法的步骤。
22.一方面,本技术实施例提供了一种计算机可读存储介质,其存储有可由计算机设备执行的计算机程序,当所述程序在计算机设备上运行时,使得所述计算机设备执行上述业务变更消息的处理方法的步骤。
23.本技术实施例中,在接收到业务变更消息时,先将业务变更消息写入持久化消息队列中,由于持久化消息队列位于服务器的非易失存储介质中,且通过持久化消息队列将业务变更消息备份保存在服务器的非易失存储介质中,故断电或者宕机等异常情况,持久化消息队列中的消息不会丢失,同时服务器中备份的消息也不会丢失,从而有效避免了业务变更消息丢失。其次,将业务变更消息的消息标识写入消息中间件,通过消息中间件将消息标识推送给消息订阅端。消息订阅端再基于消息标识从服务器的非易失存储介质中获取对应的业务变更消息,实现了对业务模块进行解耦,有效解决了消息滞后的问题,同时避免向消息订阅端推送重复的业务变更消息。
附图说明
24.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
25.图1为本技术实施例提供的一种系统架构图;
26.图2为本技术实施例提供的一种业务变更消息的处理方法的流程示意图;
27.图3为本技术实施例提供的一种持久化消息队列的示意图;
28.图4为本技术实施例提供的一种持久化消息队列的示意图;
29.图5为本技术实施例提供的一种持久化消息队列的示意图;
30.图6为本技术实施例提供的一种业务变更消息的处理方法的流程示意图;
31.图7为本技术实施例提供的一种写业务变更消息的监测结果示意图;
32.图8为本技术实施例提供的一种写消息标识的监测结果示意图;
33.图9为本技术实施例提供的一种业务变更消息的处理装置的结构示意图;
34.图10为本技术实施例提供的一种计算机设备的结构示意图。
具体实施方式
35.为了使本发明的目的、技术方案及有益效果更加清楚明白,以下结合附图及实施
例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
36.为了方便理解,下面对本发明实施例中涉及的名词进行解释。
37.云技术(cloud technology)基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。本技术实施例中基于云技术构建了消息云系统,实现对业务变更消息的持久化存储和传输。
38.leveldb:一个google实现的非常高效的kv数据库,目前能够支持billion(十亿)级别的数据量。
39.同步:后一个任务等待前一个任务结束,然后再执行,程序的执行顺序与任务的排列顺序是一致的。
40.异步:每一个任务有一个或多个回调函数(callback),前一个任务结束后,不是执行后一个任务,而是执行回调函数,后一个任务则是不等前一个任务结束就执行,所以程序的执行顺序与任务的排列顺序是不一致的。
41.wal:write-ahead logging,预写日志系统,数据库中一种高效的日志算法。
42.at least one:指消息至少发送一次,可能会出现重复的消息。
43.hbase:一种分布式的、面向列的开源数据库,适合对非结构化数据进行存储。
44.持久化消息队列:位于系统的非易失存储介质(比如磁盘)中,当系统重启后,该队列会保持原来的状态,队列中的数据不会丢失。另外,进入该队列的数据可以以某种机制固化到系统的非易失存储介质中,以备断电或者宕机等异常情况造成数据丢失。
45.下面对本技术实施例的设计思想进行介绍。
46.当一个业务模块中有业务发生变更时,需要通知其他依赖的业务模块进行相应的更新处理。若由每个发生业务变化的业务模块直接通知其他依赖的业务模块,那么每个业务模块需要维护一套协议,需要在接口里不断增加业务逻辑,从而影响业务模块的性能,同时容易导致消息丢失。
47.通过分析发现,若设置统一的存储中心对业务模块的业务变更消息进行持久化存储,然后由存储中心通知其他依赖的业务模块从存储中心拉取业务变更消息,这样既能对各个业务模块解耦,提升业务模块的性能,同时避免消息丢失。
48.鉴于此,本技术实施例中提供了一种业务变更消息的处理方法,该方法包括:接收到携带至少一个业务变更消息的业务变更请求时,将至少一个业务变更消息写入持久化消息队列,其中,持久化消息队列位于服务器的非易失存储介质中,且持久化消息队列中的业务变更消息备份保存在服务器的非易失存储介质中。根据先入先出的顺序,从持久化消息队列中获取业务变更消息,并将获取的业务变更消息的消息标识写入消息中间件;然后通过消息中间件将消息标识推送给对应的消息订阅端,消息订阅端为订阅了业务变更消息的订阅端,以使消息订阅端基于消息标识从所述服务器的非易失存储介质中获取对应的业务变更消息。
accessmemory,简称rram)、自旋矩存储器(spin-transfer torque ram,简称stt-ram)等。持久化消息队列中的业务变更消息备份保存在服务器的非易失存储介质中。
58.步骤s202,根据先入先出的顺序,从持久化消息队列中获取业务变更消息,并将获取的业务变更消息的消息标识写入消息中间件。
59.具体地,将业务变更消息保存在服务器的非易失存储介质中之后,采用channel(频道)信号通知协程池中的协程从持久化消息队列中获取业务变更消息,然后从业务变更消息中提取业务变更消息的消息标识,并将业务变更消息的消息标识同步写入消息中间件。业务变更消息的消息标识包括业务变更消息的类型、唯一标识码等,消息中间件可以是分布式高可靠消息中间件hippo。
60.可选地,当持久化消息队列为多个时,采用协程池中的多个协程同时对多个持久化消息队列中的业务变更消息进行处理,获得消息标识并写入消息中间件,从而提高效率。将消息标识写入消息中间件时,本技术实施例中采用at least one的原则,消息标识至少发送一次,以防消息丢失。
61.步骤s203,通过消息中间件将消息标识推送给对应的消息订阅端,以使消息订阅端基于消息标识从服务器的非易失存储介质中获取对应的业务变更消息。
62.具体地,消息订阅端为订阅了业务变更消息的订阅端,针对任意一个业务变更消息,消息中间件先根据该业务变消息的消息标识,确定该业务变更消息的目标类型,然后从各个消息订阅端中确定订阅了该目标类型的业务变更消息的目标消息订阅端,之后再将该业务变消息的消息标识发送给目标消息订阅端。目标消息订阅端再基于该业务变更消息的消息标识,从服务器的非易失存储介质中拉取该业务变更消息。
63.本技术实施例中,在接收到业务变更消息时,先将业务变更消息写入持久化消息队列中,由于持久化消息队列位于服务器的非易失存储介质中,且通过持久化消息队列将业务变更消息备份保存在服务器的非易失存储介质中,故断电或者宕机等异常情况,持久化消息队列中的消息不会丢失,同时服务器中备份的消息也不会丢失,从而有效避免了业务变更消息丢失。其次,将业务变更消息的消息标识写入消息中间件,通过消息中间件将消息标识推送给消息订阅端。消息订阅端再基于消息标识从服务器的非易失存储介质中获取对应的业务变更消息,实现了对业务模块进行解耦,有效解决了消息滞后的问题,同时避免向消息订阅端推送重复的业务变更消息。
64.可选地,在上述步骤s201中,将至少一个业务变更消息写入持久化消息队列,具体包括:
65.针对至少一个业务变更消息中的每个业务变更消息,将业务变更消息写入持久化消息队列中结尾指针指向的位置,然后将结尾指针的位置向队尾方向移动一个位置。
66.具体地,持久化消息队列包括结尾指针end,接收到业务变更消息时,将业务变更消息写入持久化消息队列中结尾指针end指向的位置,然后将结尾指针end的位置向队尾方向移动一个位置。
67.可选地,在上述步骤s202中,根据先入先出的顺序,从持久化消息队列中获取业务变更消息,具体包括:
68.获取持久化消息队列中位于起始指针指向的位置的业务变更消息。然后从持久化消息队列中删除位于起始指针指向的位置的业务变更消息,将起始指针的位置向队尾方向
移动一个位置。
69.具体地,持久化消息队列包括起始指针start,首先在持久化消息队列中查询起始指针start指向的位置,然后获取起始指针start指向的位置的业务变更消息,再从持久化消息队列中删除起始指针start指向的位置的业务变更消息,并将起始指针start指向的位置向队尾方向移动一个位置。
70.示例性地,如图3所示,设定持久化消息队列中包括业务变更消息1、业务变更消息2、业务变更消息3、业务变更消息4、业务变更消息5和空格,其中,起始指针start指向业务变更消息1所在的位置,结尾指针end指向空格所在的位置。
71.当接收到业务变更消息6时,将业务变更消息6写入结尾指针end指向空格,然后将结尾指针end的位置向队尾方向移动一个位置,此时,持久化消息队列如图4所示。
72.从持久化消息队列中起始指针start指向的位置获取业务变更消息1,再从持久化消息队列中删除起始指针start指向的业务变更消息1,并将起始指针start指向的位置向队尾方向移动一个位置,指向业务变更消息2,此时,持久化消息队列如图5所示。采用持久化消息队列实现对业务变更消息的持久化存储和消费,从而避免了业务变更消息丢失。
73.可选地,将业务变更请求中的业务变更消息写入持久化消息队列后,将业务变更请求写入请求数据库,将业务变更请求的处理日志保存在大数据处理平台中,具体地,请求数据库可以是hbase数据库。
74.一种可能的实施方式,根据消息中间件以及大数据处理平台中保存的数据,校验接收的业务变更消息是否丢失。
75.具体实施中,可以周期性地从消息中间件中拉取业务变更消息的消息标识,从大数据处理平台中拉取处理日志,然后基于拉取的数据进行消息对账,判断接收的业务变更消息是否丢失。另外,可以对接收的每条业务变更消息进行消息对账,判断接收的每条业务变更消息是否丢失。也可以针对指定类型的业务变更消息进行消息对账,判断指定类型的业务变更消息是否丢失,对此,本技术不做具体限定。
76.另一种可能的实施方式,根据消息中间件、请求数据库以及大数据处理平台中保存的数据,校验接收的业务变更消息是否丢失。
77.具体实施中,可以周期性地从消息中间件中拉取业务变更消息的消息标识,从大数据处理平台中拉取处理日志,从请求数据库中拉取业务变更请求,然后基于拉取的数据进行消息对账,判断接收的业务变更消息是否丢失。另外,可以对接收的每条业务变更消息进行消息对账,判断接收的每条业务变更消息是否丢失。也可以针对指定类型的业务变更消息进行消息对账,判断指定类型的业务变更消息是否丢失。
78.通过消息对账,监控业务变更消息是否丢失,故在业务变更消息丢失时,相关人员能及时获知并处理,从而提高消息的可靠性。
79.在上述任意一个实施例中,持久化消息队列为leveldb中的持久化消息队列。leveldb具备预写日志功能,故在机器宕机导致内存数据丢失时,可以通过日志文件恢复,从而避免消息丢失。
80.为了更好地解释本技术实施例,下面以结合具体应用场景介绍本技术实施例中提供的一种业务变更消息的处理方法,如图6所示,包括以下步骤:
81.云服务器中的主线程(handler)接收携带至少一个业务变更消息的业务变更请求
时,将至少一个业务变更消息写入持久化消息队列,其中,持久化消息队列位于云服务器的磁盘中,持久化消息队列中的业务变更消息备份保存在云服务器的磁盘中,持久化消息队列为leveldb中的持久化消息队列。将业务变更消息写入持久化消息队列之后,将业务变更请求写入hbase集群。
82.采用channel(频道)信号通知协程池中的协程从持久化消息队列中获取业务变更消息,然后从业务变更消息中提取业务变更消息的消息标识,并将业务变更消息的消息标识同步写入消息中间件hippo。当持久化消息队列为多个时,采用协程池中的多个协程同时对多个持久化消息队列中的业务变更消息进行处理,获得消息标识并写入消息中间件。将业务变更请求的处理日志上报给大数据处理平台。
83.消息中间件先根据该业务变消息的消息标识,确定该业务变更消息的目标类型,然后从各个消息订阅端中确定订阅了该目标类型的业务变更消息的目标消息订阅端,之后再将该业务变消息的消息标识发送给目标消息订阅端。目标消息订阅端再基于该业务变更消息的消息标识,从云服务器的磁盘中拉取该业务变更消息。
84.从消息中间件中拉取业务变更消息的标识,从大数据处理平台中拉取处理日志,然后基于拉取的数据进行消息对账,判断接收的业务变更消息是否丢失,若丢失,则通知相关人员进行处理。另外,从hbase集群拉取业务变更请求,进行核心业务对账。
85.本技术实施例中,在接收到业务变更消息时,先将业务变更消息写入持久化消息队列中,由于持久化消息队列位于服务器的非易失存储介质中,且通过持久化消息队列将业务变更消息备份保存在服务器的非易失存储介质中,故断电或者宕机等异常情况,持久化消息队列中的消息不会丢失,同时服务器中备份的消息也不会丢失,从而有效避免了业务变更消息丢失。其次,将业务变更消息的消息标识写入消息中间件,通过消息中间件将消息标识推送给消息订阅端。消息订阅端再基于消息标识从服务器的非易失存储介质中获取对应的业务变更消息,实现了对业务模块进行解耦,有效解决了消息滞后的问题,同时避免向消息订阅端推送重复的业务变更消息。
86.为了验证本技术实施例中在防业务变更消息丢失时的性能,本技术监测了各个时刻写入持久化消息队列中的业务变更消息的数量以及各个时刻写入消息中间件中的消息标识的数量,获得的监测结果如图7和图8所示,其中,图7为持久化消息队列的写入消息数,图8为消息中间件的写入消息标识数。通过比较图7和图8可知,写入持久化消息队列中的业务变更消息的数量与写入消息中间件中的消息标识的数量基本上是相同的,可见,本技术中的业务变更消息的处理方法能有效避免消息丢失。由于云服务器基于消息至少发送一次的原则,将业务变更消息的消息标识写入消息中间件时,可能会发生重复的消息标识,故写入持久化消息队列中的业务变更消息的数量可能会略小于写入消息中间件中的消息标识的数量,但是这种小范围的不等是合理且可接受的。
87.基于相同的技术构思,本技术实施例提供了一种业务变更消息的处理装置,如图9所示,该装置900包括:
88.接收模块901,用于接收到携带至少一个业务变更消息的业务变更请求时,将所述至少一个业务变更消息写入持久化消息队列,所述持久化消息队列位于服务器的非易失存储介质中,且所述持久化消息队列中的业务变更消息备份保存在所述服务器的非易失存储介质中;
89.处理模块902,用于根据先入先出的顺序,从所述持久化消息队列中获取业务变更消息,并将获取的业务变更消息的消息标识写入消息中间件;
90.推送模块903,用于通过所述消息中间件将消息标识推送给对应的消息订阅端,所述消息订阅端为订阅了业务变更消息的订阅端,以使所述消息订阅端基于消息标识从所述服务器的非易失存储介质中获取对应的业务变更消息。
91.可选地,接收模块901具体用于:
92.针对所述至少一个业务变更消息中的每个业务变更消息,将业务变更消息写入持久化消息队列中结尾指针指向的位置;
93.将结尾指针的位置向队尾方向移动一个位置。
94.可选地,处理模块902具体用于:
95.获取持久化消息队列中位于起始指针指向的位置的业务变更消息;
96.从持久化消息队列中删除位于起始指针指向的位置的业务变更消息;
97.将起始指针的位置向队尾方向移动一个位置。
98.可选地,处理模块902还用于:
99.将业务变更请求写入请求数据库,将业务变更请求的处理日志保存在大数据处理平台中。
100.可选地,处理模块902还用于:
101.根据消息中间件以及大数据处理平台中保存的数据,校验接收的业务变更消息是否丢失。
102.可选地,持久化消息队列为leveldb中的持久化消息队列。
103.基于相同的技术构思,本技术实施例提供了一种计算机设备,如图10所示,包括至少一个处理器1001,以及与至少一个处理器连接的存储器1002,本技术实施例中不限定处理器1001与存储器1002之间的具体连接介质,图10中处理器1001和存储器1002之间通过总线连接为例。总线可以分为地址总线、数据总线、控制总线等。
104.在本技术实施例中,存储器1002存储有可被至少一个处理器1001执行的指令,至少一个处理器1001通过执行存储器1002存储的指令,可以执行上述业务变更消息的处理方法中所包括的步骤。
105.其中,处理器1001是计算机设备的控制中心,可以利用各种接口和线路连接计算机设备的各个部分,通过运行或执行存储在存储器1002内的指令以及调用存储在存储器1002内的数据,从而对业务变更消息进行处理。可选的,处理器1001可包括一个或多个处理单元,处理器1001可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器1001中。在一些实施例中,处理器1001和存储器1002可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。
106.处理器1001可以是通用处理器,例如中央处理器(cpu)、数字信号处理器、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本技术实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本技术实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者
用处理器中的硬件及软件模块组合执行完成。
107.存储器1002作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器1002可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(random access memory,ram)、静态随机访问存储器(static random access memory,sram)、可编程只读存储器(programmable read only memory,prom)、只读存储器(read only memory,rom)、带电可擦除可编程只读存储器(electrically erasable programmable read-only memory,eeprom)、磁性存储器、磁盘、光盘等等。存储器1002是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本技术实施例中的存储器1002还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
108.基于同一发明构思,本技术实施例提供了一种计算机可读存储介质,其存储有可由计算机设备执行的计算机程序,当程序在计算机设备上运行时,使得计算机设备执行上述业务变更消息的处理方法的步骤。
109.本领域内的技术人员应明白,本发明的实施例可提供为方法、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
110.本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
111.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
112.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
113.尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
114.显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献