CN114422577A - 一种业务变更消息的处理方法及装置 - Google Patents
一种业务变更消息的处理方法及装置 Download PDFInfo
- Publication number
- CN114422577A CN114422577A CN202011083983.1A CN202011083983A CN114422577A CN 114422577 A CN114422577 A CN 114422577A CN 202011083983 A CN202011083983 A CN 202011083983A CN 114422577 A CN114422577 A CN 114422577A
- Authority
- CN
- China
- Prior art keywords
- message
- service change
- persistent
- queue
- change message
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000008859 change Effects 0.000 title claims abstract description 228
- 238000012545 processing Methods 0.000 title claims abstract description 65
- 238000000034 method Methods 0.000 title claims abstract description 39
- 230000002085 persistent effect Effects 0.000 claims abstract description 114
- 238000012508 change request Methods 0.000 claims abstract description 24
- 238000004590 computer program Methods 0.000 claims description 12
- 238000010586 diagram Methods 0.000 description 17
- 238000005516 engineering process Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 8
- 230000008569 process Effects 0.000 description 7
- 238000012986 modification Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 230000002159 abnormal effect Effects 0.000 description 5
- 230000001419 dependent effect Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1469—Backup restoration techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/901—Buffering arrangements using storage descriptor, e.g. read or write pointers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请实施例提供了一种业务变更消息的处理方法及装置,涉及云技术领域,该方法包括:云服务器接收到携带业务变更消息的业务变更请求时,将业务变更消息写入持久化消息队列,持久化消息队列位于服务器的非易失存储介质中,且持久化消息队列中的业务变更消息备份保存在非易失存储介质中。从持久化消息队列中获取业务变更消息,并将业务变更消息的消息标识写入消息中间件。通过消息中间件将消息标识推送给消息订阅端,以使消息订阅端基于消息标识从非易失存储介质中获取对应的业务变更消息。由于持久化消息队列位于服务器的非易失存储介质中,且通过持久化消息队列将业务变更消息备份保存在服务器的非易失存储介质,从而避免了业务变更消息丢失。
Description
技术领域
本发明实施例涉及云技术领域,尤其涉及一种业务变更消息的处理方法及装置。
背景技术
业务应用中经常会有业务变更的情况,当一个业务模块中有业务发生变更时,需要通知其他依赖的业务模块进行相应的更新处理。若由每个发生业务变化的业务模块直接通知其他依赖的业务模块,那么每个业务模块需要维护一套协议,需要在接口里不断增加业务逻辑,从而影响业务模块的性能,同时容易造成业务变更消息丢失。
发明内容
本申请实施例提供了一种业务变更消息的处理方法及装置,用于对业务模块进行解耦,同时避免业务变更消息丢失。
一方面,本申请实施例提供了一种业务变更消息的处理方法,该方法包括:
接收到携带至少一个业务变更消息的业务变更请求时,将所述至少一个业务变更消息写入持久化消息队列,所述持久化消息队列位于服务器的非易失存储介质中,且所述持久化消息队列中的业务变更消息备份保存在所述服务器的非易失存储介质中;
根据先入先出的顺序,从所述持久化消息队列中获取业务变更消息,并将获取的业务变更消息的消息标识写入消息中间件;
通过所述消息中间件将消息标识推送给对应的消息订阅端,所述消息订阅端为订阅了业务变更消息的订阅端,以使所述消息订阅端基于消息标识从所述服务器的非易失存储介质中获取对应的业务变更消息。
一方面,本申请实施例提供了一种业务变更消息的处理装置,该装置包括:
接收模块,用于接收到携带至少一个业务变更消息的业务变更请求时,将所述至少一个业务变更消息写入持久化消息队列,所述持久化消息队列位于服务器的非易失存储介质中,且所述持久化消息队列中的业务变更消息备份保存在所述服务器的非易失存储介质中;
处理模块,用于根据先入先出的顺序,从所述持久化消息队列中获取业务变更消息,并将获取的业务变更消息的消息标识写入消息中间件;
推送模块,用于通过所述消息中间件将消息标识推送给对应的消息订阅端,所述消息订阅端为订阅了业务变更消息的订阅端,以使所述消息订阅端基于消息标识从所述服务器的非易失存储介质中获取对应的业务变更消息。
可选地,所述处理模块具体用于:
获取所述持久化消息队列中位于起始指针指向的位置的业务变更消息;
从所述持久化消息队列中删除位于所述起始指针指向的位置的业务变更消息;
将所述起始指针的位置向队尾方向移动一个位置。
可选地,所述处理模块还用于:
将所述业务变更请求写入请求数据库,将所述业务变更请求的处理日志保存在大数据处理平台中。
可选地,所述处理模块还用于:
根据所述消息中间件以及所述大数据处理平台中保存的数据,校验接收的业务变更消息是否丢失。
可选地,所述持久化消息队列为Leveldb中的持久化消息队列。
一方面,本申请实施例提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述业务变更消息的处理方法的步骤。
一方面,本申请实施例提供了一种计算机可读存储介质,其存储有可由计算机设备执行的计算机程序,当所述程序在计算机设备上运行时,使得所述计算机设备执行上述业务变更消息的处理方法的步骤。
本申请实施例中,在接收到业务变更消息时,先将业务变更消息写入持久化消息队列中,由于持久化消息队列位于服务器的非易失存储介质中,且通过持久化消息队列将业务变更消息备份保存在服务器的非易失存储介质中,故断电或者宕机等异常情况,持久化消息队列中的消息不会丢失,同时服务器中备份的消息也不会丢失,从而有效避免了业务变更消息丢失。其次,将业务变更消息的消息标识写入消息中间件,通过消息中间件将消息标识推送给消息订阅端。消息订阅端再基于消息标识从服务器的非易失存储介质中获取对应的业务变更消息,实现了对业务模块进行解耦,有效解决了消息滞后的问题,同时避免向消息订阅端推送重复的业务变更消息。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种系统架构图;
图2为本申请实施例提供的一种业务变更消息的处理方法的流程示意图;
图3为本申请实施例提供的一种持久化消息队列的示意图;
图4为本申请实施例提供的一种持久化消息队列的示意图;
图5为本申请实施例提供的一种持久化消息队列的示意图;
图6为本申请实施例提供的一种业务变更消息的处理方法的流程示意图;
图7为本申请实施例提供的一种写业务变更消息的监测结果示意图;
图8为本申请实施例提供的一种写消息标识的监测结果示意图;
图9为本申请实施例提供的一种业务变更消息的处理装置的结构示意图;
图10为本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
为了方便理解,下面对本发明实施例中涉及的名词进行解释。
云技术(Cloud technology)基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。本申请实施例中基于云技术构建了消息云系统,实现对业务变更消息的持久化存储和传输。
levelDB:一个google实现的非常高效的kv数据库,目前能够支持billion(十亿)级别的数据量。
同步:后一个任务等待前一个任务结束,然后再执行,程序的执行顺序与任务的排列顺序是一致的。
异步:每一个任务有一个或多个回调函数(callback),前一个任务结束后,不是执行后一个任务,而是执行回调函数,后一个任务则是不等前一个任务结束就执行,所以程序的执行顺序与任务的排列顺序是不一致的。
WAL:Write-Ahead Logging,预写日志系统,数据库中一种高效的日志算法。
At Least One:指消息至少发送一次,可能会出现重复的消息。
Hbase:一种分布式的、面向列的开源数据库,适合对非结构化数据进行存储。
持久化消息队列:位于系统的非易失存储介质(比如磁盘)中,当系统重启后,该队列会保持原来的状态,队列中的数据不会丢失。另外,进入该队列的数据可以以某种机制固化到系统的非易失存储介质中,以备断电或者宕机等异常情况造成数据丢失。
下面对本申请实施例的设计思想进行介绍。
当一个业务模块中有业务发生变更时,需要通知其他依赖的业务模块进行相应的更新处理。若由每个发生业务变化的业务模块直接通知其他依赖的业务模块,那么每个业务模块需要维护一套协议,需要在接口里不断增加业务逻辑,从而影响业务模块的性能,同时容易导致消息丢失。
通过分析发现,若设置统一的存储中心对业务模块的业务变更消息进行持久化存储,然后由存储中心通知其他依赖的业务模块从存储中心拉取业务变更消息,这样既能对各个业务模块解耦,提升业务模块的性能,同时避免消息丢失。
鉴于此,本申请实施例中提供了一种业务变更消息的处理方法,该方法包括:接收到携带至少一个业务变更消息的业务变更请求时,将至少一个业务变更消息写入持久化消息队列,其中,持久化消息队列位于服务器的非易失存储介质中,且持久化消息队列中的业务变更消息备份保存在服务器的非易失存储介质中。根据先入先出的顺序,从持久化消息队列中获取业务变更消息,并将获取的业务变更消息的消息标识写入消息中间件;然后通过消息中间件将消息标识推送给对应的消息订阅端,消息订阅端为订阅了业务变更消息的订阅端,以使消息订阅端基于消息标识从所述服务器的非易失存储介质中获取对应的业务变更消息。
本申请实施例中,在接收到业务变更消息时,先将业务变更消息写入持久化消息队列中,由于持久化消息队列位于服务器的非易失存储介质中,且通过持久化消息队列将业务变更消息备份保存在服务器的非易失存储介质中,故断电或者宕机等异常情况,持久化消息队列中的消息不会丢失,同时服务器中备份的消息也不会丢失,从而有效避免了业务变更消息丢失。其次,将业务变更消息的消息标识写入消息中间件,通过消息中间件将消息标识推送给消息订阅端。消息订阅端再基于消息标识从服务器的非易失存储介质中获取对应的业务变更消息,实现了对业务模块进行解耦,有效解决了消息滞后的问题,同时避免向消息订阅端推送重复的业务变更消息。
参考图1,其为本申请实施例适用的一种系统架构,该系统架构至少包括服务器101以及M个消息订阅端,M个消息订阅端分别为102~1至102~M,M为正整数。
服务器101基于接收的业务变更请求生产消息并存储,业务发生变更可以是内容下架、内容删除、封面图变更等。服务器101包括一个或多个处理器1011、存储器1012以及与消息订阅端102交互的I/O接口1013等。此外,服务器101还可以配置数据库1014。服务器101可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。服务器101与消息订阅端102可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
服务器101接收到携带至少一个业务变更消息的业务变更请求时,将至少一个业务变更消息写入持久化消息队列,持久化消息队列位于服务器101的非易失存储介质中,且持久化消息队列中的业务变更消息备份保存在服务器101的非易失存储介质中。然后根据先入先出的顺序,从持久化消息队列中获取业务变更消息,并将获取的业务变更消息的消息标识写入消息中间件中。通过消息中间件将消息标识推送给对应的消息订阅端102,其中,消息订阅端为订阅了业务变更消息的订阅端。
消息订阅端102可以是任意一个订阅业务变更消息的业务模块,不同的业务模块订阅的业务变更消息的类型可以是相同的,也可以是不同的。消息订阅端102基于消息标识从服务器101的非易失存储介质中获取对应的业务变更消息。需要说明的是,消息中间件可以是独立于服务器101,也可以位于服务器101内部,对此,本申请不做具体限定。
基于图1所示的系统架构图,本申请实施例提供了一种业务变更消息的处理方法的流程,如图2所示,该方法的流程由计算机设备执行,该计算机设备可以是图1所示的服务器101,包括以下步骤:
步骤S201,接收到携带至少一个业务变更消息的业务变更请求时,将至少一个业务变更消息写入持久化消息队列。
具体地,业务变更消息可以是业务增加消息、业务删除消息、业务修改消息等。比如下架某应用中的文章或视频、删除某文章中的内容、修改某应用的封面图、删除某文章中的低质内容(标题党、谣言)等。按照接收业务变更消息的顺序,将接收到的至少一个业务变更消息写入持久化消息队列,持久化消息队列可以为一个或多个。
持久化消息队列位于服务器的非易失存储介质中,非易失存储介质可以是磁盘、硬盘、相变存储器(Phase Change Memory,简称PCM)、阻变存储器(Resistive Random-Accessmemory,简称RRAM)、自旋矩存储器(Spin-Transfer Torque RAM,简称STT-RAM)等。持久化消息队列中的业务变更消息备份保存在服务器的非易失存储介质中。
步骤S202,根据先入先出的顺序,从持久化消息队列中获取业务变更消息,并将获取的业务变更消息的消息标识写入消息中间件。
具体地,将业务变更消息保存在服务器的非易失存储介质中之后,采用channel(频道)信号通知协程池中的协程从持久化消息队列中获取业务变更消息,然后从业务变更消息中提取业务变更消息的消息标识,并将业务变更消息的消息标识同步写入消息中间件。业务变更消息的消息标识包括业务变更消息的类型、唯一标识码等,消息中间件可以是分布式高可靠消息中间件Hippo。
可选地,当持久化消息队列为多个时,采用协程池中的多个协程同时对多个持久化消息队列中的业务变更消息进行处理,获得消息标识并写入消息中间件,从而提高效率。将消息标识写入消息中间件时,本申请实施例中采用At Least One的原则,消息标识至少发送一次,以防消息丢失。
步骤S203,通过消息中间件将消息标识推送给对应的消息订阅端,以使消息订阅端基于消息标识从服务器的非易失存储介质中获取对应的业务变更消息。
具体地,消息订阅端为订阅了业务变更消息的订阅端,针对任意一个业务变更消息,消息中间件先根据该业务变消息的消息标识,确定该业务变更消息的目标类型,然后从各个消息订阅端中确定订阅了该目标类型的业务变更消息的目标消息订阅端,之后再将该业务变消息的消息标识发送给目标消息订阅端。目标消息订阅端再基于该业务变更消息的消息标识,从服务器的非易失存储介质中拉取该业务变更消息。
本申请实施例中,在接收到业务变更消息时,先将业务变更消息写入持久化消息队列中,由于持久化消息队列位于服务器的非易失存储介质中,且通过持久化消息队列将业务变更消息备份保存在服务器的非易失存储介质中,故断电或者宕机等异常情况,持久化消息队列中的消息不会丢失,同时服务器中备份的消息也不会丢失,从而有效避免了业务变更消息丢失。其次,将业务变更消息的消息标识写入消息中间件,通过消息中间件将消息标识推送给消息订阅端。消息订阅端再基于消息标识从服务器的非易失存储介质中获取对应的业务变更消息,实现了对业务模块进行解耦,有效解决了消息滞后的问题,同时避免向消息订阅端推送重复的业务变更消息。
可选地,在上述步骤S201中,将至少一个业务变更消息写入持久化消息队列,具体包括:
针对至少一个业务变更消息中的每个业务变更消息,将业务变更消息写入持久化消息队列中结尾指针指向的位置,然后将结尾指针的位置向队尾方向移动一个位置。
具体地,持久化消息队列包括结尾指针END,接收到业务变更消息时,将业务变更消息写入持久化消息队列中结尾指针END指向的位置,然后将结尾指针END的位置向队尾方向移动一个位置。
可选地,在上述步骤S202中,根据先入先出的顺序,从持久化消息队列中获取业务变更消息,具体包括:
获取持久化消息队列中位于起始指针指向的位置的业务变更消息。然后从持久化消息队列中删除位于起始指针指向的位置的业务变更消息,将起始指针的位置向队尾方向移动一个位置。
具体地,持久化消息队列包括起始指针START,首先在持久化消息队列中查询起始指针START指向的位置,然后获取起始指针START指向的位置的业务变更消息,再从持久化消息队列中删除起始指针START指向的位置的业务变更消息,并将起始指针START指向的位置向队尾方向移动一个位置。
示例性地,如图3所示,设定持久化消息队列中包括业务变更消息1、业务变更消息2、业务变更消息3、业务变更消息4、业务变更消息5和空格,其中,起始指针START指向业务变更消息1所在的位置,结尾指针END指向空格所在的位置。
当接收到业务变更消息6时,将业务变更消息6写入结尾指针END指向空格,然后将结尾指针END的位置向队尾方向移动一个位置,此时,持久化消息队列如图4所示。
从持久化消息队列中起始指针START指向的位置获取业务变更消息1,再从持久化消息队列中删除起始指针START指向的业务变更消息1,并将起始指针START指向的位置向队尾方向移动一个位置,指向业务变更消息2,此时,持久化消息队列如图5所示。采用持久化消息队列实现对业务变更消息的持久化存储和消费,从而避免了业务变更消息丢失。
可选地,将业务变更请求中的业务变更消息写入持久化消息队列后,将业务变更请求写入请求数据库,将业务变更请求的处理日志保存在大数据处理平台中,具体地,请求数据库可以是Hbase数据库。
一种可能的实施方式,根据消息中间件以及大数据处理平台中保存的数据,校验接收的业务变更消息是否丢失。
具体实施中,可以周期性地从消息中间件中拉取业务变更消息的消息标识,从大数据处理平台中拉取处理日志,然后基于拉取的数据进行消息对账,判断接收的业务变更消息是否丢失。另外,可以对接收的每条业务变更消息进行消息对账,判断接收的每条业务变更消息是否丢失。也可以针对指定类型的业务变更消息进行消息对账,判断指定类型的业务变更消息是否丢失,对此,本申请不做具体限定。
另一种可能的实施方式,根据消息中间件、请求数据库以及大数据处理平台中保存的数据,校验接收的业务变更消息是否丢失。
具体实施中,可以周期性地从消息中间件中拉取业务变更消息的消息标识,从大数据处理平台中拉取处理日志,从请求数据库中拉取业务变更请求,然后基于拉取的数据进行消息对账,判断接收的业务变更消息是否丢失。另外,可以对接收的每条业务变更消息进行消息对账,判断接收的每条业务变更消息是否丢失。也可以针对指定类型的业务变更消息进行消息对账,判断指定类型的业务变更消息是否丢失。
通过消息对账,监控业务变更消息是否丢失,故在业务变更消息丢失时,相关人员能及时获知并处理,从而提高消息的可靠性。
在上述任意一个实施例中,持久化消息队列为Leveldb中的持久化消息队列。Leveldb具备预写日志功能,故在机器宕机导致内存数据丢失时,可以通过日志文件恢复,从而避免消息丢失。
为了更好地解释本申请实施例,下面以结合具体应用场景介绍本申请实施例中提供的一种业务变更消息的处理方法,如图6所示,包括以下步骤:
云服务器中的主线程(Handler)接收携带至少一个业务变更消息的业务变更请求时,将至少一个业务变更消息写入持久化消息队列,其中,持久化消息队列位于云服务器的磁盘中,持久化消息队列中的业务变更消息备份保存在云服务器的磁盘中,持久化消息队列为Leveldb中的持久化消息队列。将业务变更消息写入持久化消息队列之后,将业务变更请求写入Hbase集群。
采用channel(频道)信号通知协程池中的协程从持久化消息队列中获取业务变更消息,然后从业务变更消息中提取业务变更消息的消息标识,并将业务变更消息的消息标识同步写入消息中间件Hippo。当持久化消息队列为多个时,采用协程池中的多个协程同时对多个持久化消息队列中的业务变更消息进行处理,获得消息标识并写入消息中间件。将业务变更请求的处理日志上报给大数据处理平台。
消息中间件先根据该业务变消息的消息标识,确定该业务变更消息的目标类型,然后从各个消息订阅端中确定订阅了该目标类型的业务变更消息的目标消息订阅端,之后再将该业务变消息的消息标识发送给目标消息订阅端。目标消息订阅端再基于该业务变更消息的消息标识,从云服务器的磁盘中拉取该业务变更消息。
从消息中间件中拉取业务变更消息的标识,从大数据处理平台中拉取处理日志,然后基于拉取的数据进行消息对账,判断接收的业务变更消息是否丢失,若丢失,则通知相关人员进行处理。另外,从Hbase集群拉取业务变更请求,进行核心业务对账。
本申请实施例中,在接收到业务变更消息时,先将业务变更消息写入持久化消息队列中,由于持久化消息队列位于服务器的非易失存储介质中,且通过持久化消息队列将业务变更消息备份保存在服务器的非易失存储介质中,故断电或者宕机等异常情况,持久化消息队列中的消息不会丢失,同时服务器中备份的消息也不会丢失,从而有效避免了业务变更消息丢失。其次,将业务变更消息的消息标识写入消息中间件,通过消息中间件将消息标识推送给消息订阅端。消息订阅端再基于消息标识从服务器的非易失存储介质中获取对应的业务变更消息,实现了对业务模块进行解耦,有效解决了消息滞后的问题,同时避免向消息订阅端推送重复的业务变更消息。
为了验证本申请实施例中在防业务变更消息丢失时的性能,本申请监测了各个时刻写入持久化消息队列中的业务变更消息的数量以及各个时刻写入消息中间件中的消息标识的数量,获得的监测结果如图7和图8所示,其中,图7为持久化消息队列的写入消息数,图8为消息中间件的写入消息标识数。通过比较图7和图8可知,写入持久化消息队列中的业务变更消息的数量与写入消息中间件中的消息标识的数量基本上是相同的,可见,本申请中的业务变更消息的处理方法能有效避免消息丢失。由于云服务器基于消息至少发送一次的原则,将业务变更消息的消息标识写入消息中间件时,可能会发生重复的消息标识,故写入持久化消息队列中的业务变更消息的数量可能会略小于写入消息中间件中的消息标识的数量,但是这种小范围的不等是合理且可接受的。
基于相同的技术构思,本申请实施例提供了一种业务变更消息的处理装置,如图9所示,该装置900包括:
接收模块901,用于接收到携带至少一个业务变更消息的业务变更请求时,将所述至少一个业务变更消息写入持久化消息队列,所述持久化消息队列位于服务器的非易失存储介质中,且所述持久化消息队列中的业务变更消息备份保存在所述服务器的非易失存储介质中;
处理模块902,用于根据先入先出的顺序,从所述持久化消息队列中获取业务变更消息,并将获取的业务变更消息的消息标识写入消息中间件;
推送模块903,用于通过所述消息中间件将消息标识推送给对应的消息订阅端,所述消息订阅端为订阅了业务变更消息的订阅端,以使所述消息订阅端基于消息标识从所述服务器的非易失存储介质中获取对应的业务变更消息。
可选地,接收模块901具体用于:
针对所述至少一个业务变更消息中的每个业务变更消息,将业务变更消息写入持久化消息队列中结尾指针指向的位置;
将结尾指针的位置向队尾方向移动一个位置。
可选地,处理模块902具体用于:
获取持久化消息队列中位于起始指针指向的位置的业务变更消息;
从持久化消息队列中删除位于起始指针指向的位置的业务变更消息;
将起始指针的位置向队尾方向移动一个位置。
可选地,处理模块902还用于:
将业务变更请求写入请求数据库,将业务变更请求的处理日志保存在大数据处理平台中。
可选地,处理模块902还用于:
根据消息中间件以及大数据处理平台中保存的数据,校验接收的业务变更消息是否丢失。
可选地,持久化消息队列为Leveldb中的持久化消息队列。
基于相同的技术构思,本申请实施例提供了一种计算机设备,如图10所示,包括至少一个处理器1001,以及与至少一个处理器连接的存储器1002,本申请实施例中不限定处理器1001与存储器1002之间的具体连接介质,图10中处理器1001和存储器1002之间通过总线连接为例。总线可以分为地址总线、数据总线、控制总线等。
在本申请实施例中,存储器1002存储有可被至少一个处理器1001执行的指令,至少一个处理器1001通过执行存储器1002存储的指令,可以执行上述业务变更消息的处理方法中所包括的步骤。
其中,处理器1001是计算机设备的控制中心,可以利用各种接口和线路连接计算机设备的各个部分,通过运行或执行存储在存储器1002内的指令以及调用存储在存储器1002内的数据,从而对业务变更消息进行处理。可选的,处理器1001可包括一个或多个处理单元,处理器1001可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器1001中。在一些实施例中,处理器1001和存储器1002可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。
处理器1001可以是通用处理器,例如中央处理器(CPU)、数字信号处理器、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器1002作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器1002可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(Random AccessMemory,RAM)、静态随机访问存储器(Static Random Access Memory,SRAM)、可编程只读存储器(Programmable Read Only Memory,PROM)、只读存储器(Read Only Memory,ROM)、带电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁性存储器、磁盘、光盘等等。存储器1002是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本申请实施例中的存储器1002还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
基于同一发明构思,本申请实施例提供了一种计算机可读存储介质,其存储有可由计算机设备执行的计算机程序,当程序在计算机设备上运行时,使得计算机设备执行上述业务变更消息的处理方法的步骤。
本领域内的技术人员应明白,本发明的实施例可提供为方法、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种业务变更消息的处理方法,其特征在于,包括:
接收到携带至少一个业务变更消息的业务变更请求时,将所述至少一个业务变更消息写入持久化消息队列,所述持久化消息队列位于服务器的非易失存储介质中,且所述持久化消息队列中的业务变更消息备份保存在所述服务器的非易失存储介质中;
根据先入先出的顺序,从所述持久化消息队列中获取业务变更消息,并将获取的业务变更消息的消息标识写入消息中间件;
通过所述消息中间件将消息标识推送给对应的消息订阅端,所述消息订阅端为订阅了业务变更消息的订阅端,以使所述消息订阅端基于消息标识从所述服务器的非易失存储介质中获取对应的业务变更消息。
2.如权利要求1所述的方法,其特征在于,所述将所述至少一个业务变更消息写入持久化消息队列,包括:
针对所述至少一个业务变更消息中的每个业务变更消息,将业务变更消息写入所述持久化消息队列中结尾指针指向的位置;
将所述结尾指针的位置向队尾方向移动一个位置。
3.如权利要求2所述的方法,其特征在于,所述根据先入先出的顺序,从所述持久化消息队列中获取业务变更消息,包括:
获取所述持久化消息队列中位于起始指针指向的位置的业务变更消息;
从所述持久化消息队列中删除位于所述起始指针指向的位置的业务变更消息;
将所述起始指针的位置向队尾方向移动一个位置。
4.如权利要求1所述的方法,其特征在于,还包括:
将所述业务变更请求写入请求数据库,将所述业务变更请求的处理日志保存在大数据处理平台中。
5.如权利要求4所述的方法,其特征在于,还包括:
根据所述消息中间件以及所述大数据处理平台中保存的数据,校验接收的业务变更消息是否丢失。
6.如权利要求1至5任一所述的方法,其特征在于,所述持久化消息队列为Leveldb中的持久化消息队列。
7.一种业务变更消息的处理装置,其特征在于,包括:
接收模块,用于接收到携带至少一个业务变更消息的业务变更请求时,将所述至少一个业务变更消息写入持久化消息队列,所述持久化消息队列位于服务器的非易失存储介质中,且所述持久化消息队列中的业务变更消息备份保存在所述服务器的非易失存储介质中;
处理模块,用于根据先入先出的顺序,从所述持久化消息队列中获取业务变更消息,并将获取的业务变更消息的消息标识写入消息中间件;
推送模块,用于通过所述消息中间件将消息标识推送给对应的消息订阅端,所述消息订阅端为订阅了业务变更消息的订阅端,以使所述消息订阅端基于消息标识从所述服务器的非易失存储介质中获取对应的业务变更消息。
8.如权利要求7所述的装置,其特征在于,所述接收模块具体用于:
针对所述至少一个业务变更消息中的每个业务变更消息,将业务变更消息写入所述持久化消息队列中结尾指针指向的位置;
将所述结尾指针的位置向队尾方向移动一个位置。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1~6任一权利要求所述方法的步骤。
10.一种计算机可读存储介质,其特征在于,其存储有可由计算机设备执行的计算机程序,当所述程序在计算机设备上运行时,使得所述计算机设备执行权利要求1~6任一所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011083983.1A CN114422577A (zh) | 2020-10-12 | 2020-10-12 | 一种业务变更消息的处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011083983.1A CN114422577A (zh) | 2020-10-12 | 2020-10-12 | 一种业务变更消息的处理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114422577A true CN114422577A (zh) | 2022-04-29 |
Family
ID=81260551
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011083983.1A Pending CN114422577A (zh) | 2020-10-12 | 2020-10-12 | 一种业务变更消息的处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114422577A (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150301875A1 (en) * | 2014-04-22 | 2015-10-22 | Andreas Harnesk | Persisting and managing application messages |
CN105208060A (zh) * | 2014-06-19 | 2015-12-30 | 阿里巴巴集团控股有限公司 | 业务数据同步方法、装置及系统 |
US9436532B1 (en) * | 2011-12-20 | 2016-09-06 | Emc Corporation | Method and system for implementing independent message queues by specific applications |
CN109064345A (zh) * | 2018-08-14 | 2018-12-21 | 中国平安人寿保险股份有限公司 | 消息处理方法、系统以及计算机可读存储介质 |
CN110597914A (zh) * | 2019-09-18 | 2019-12-20 | 北京思维造物信息科技股份有限公司 | 数据传输系统、方法、装置及设备 |
CN111221663A (zh) * | 2019-11-21 | 2020-06-02 | 苏州浪潮智能科技有限公司 | 一种消息数据处理方法、装置、设备及可读存储介质 |
-
2020
- 2020-10-12 CN CN202011083983.1A patent/CN114422577A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9436532B1 (en) * | 2011-12-20 | 2016-09-06 | Emc Corporation | Method and system for implementing independent message queues by specific applications |
US20150301875A1 (en) * | 2014-04-22 | 2015-10-22 | Andreas Harnesk | Persisting and managing application messages |
CN105208060A (zh) * | 2014-06-19 | 2015-12-30 | 阿里巴巴集团控股有限公司 | 业务数据同步方法、装置及系统 |
CN109064345A (zh) * | 2018-08-14 | 2018-12-21 | 中国平安人寿保险股份有限公司 | 消息处理方法、系统以及计算机可读存储介质 |
CN110597914A (zh) * | 2019-09-18 | 2019-12-20 | 北京思维造物信息科技股份有限公司 | 数据传输系统、方法、装置及设备 |
CN111221663A (zh) * | 2019-11-21 | 2020-06-02 | 苏州浪潮智能科技有限公司 | 一种消息数据处理方法、装置、设备及可读存储介质 |
Non-Patent Citations (1)
Title |
---|
《数据库百科全书》编委会: "《数据库百科全书》", 上海:上海交通大学出版社, pages: 758 - 761 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11711420B2 (en) | Automated management of resource attributes across network-based services | |
US11836533B2 (en) | Automated reconfiguration of real time data stream processing | |
CN107395665B (zh) | 一种区块链业务受理及业务共识方法及装置 | |
CN107016480B (zh) | 任务调度方法、装置及系统 | |
US8108623B2 (en) | Poll based cache event notifications in a distributed cache | |
CN109873904B (zh) | 消息推送的用户消息状态上报处理方法、装置及存储介质 | |
US20180365254A1 (en) | Method and apparatus for processing information flow data | |
CN112753019A (zh) | 按需代码执行系统中执行环境的有效状态维持 | |
CN110222091A (zh) | 一种海量数据实时统计分析方法 | |
CN110247984B (zh) | 业务处理方法、装置及存储介质 | |
CN111143382B (zh) | 数据处理方法、系统和计算机可读存储介质 | |
CN110750592B (zh) | 数据同步的方法、装置和终端设备 | |
CN107016039B (zh) | 数据库写入的方法和数据库系统 | |
CN112463290A (zh) | 动态调整计算容器的数量的方法、系统、装置和存储介质 | |
CN109981715B (zh) | 一种会话管理的方法及装置 | |
CN111125013B (zh) | 一种数据入库方法、装置、设备及介质 | |
CN111680017A (zh) | 一种数据同步的方法及装置 | |
CN115587118A (zh) | 任务数据的维表关联处理方法及装置、电子设备 | |
CN112860720B (zh) | 一种存储容量的更新方法以及装置 | |
CN111694801A (zh) | 一种应用于故障恢复的数据去重方法和装置 | |
US11775864B2 (en) | Feature management platform | |
CN109597697A (zh) | 一种资源撮合处理方法及装置 | |
CN113342806A (zh) | 大数据处理方法、装置、存储介质及处理器 | |
CN109005465B (zh) | 弹幕消息分发方法、装置、设备及存储介质 | |
CN116366634A (zh) | 一种文件下载方法、装置、终端、源服务器及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |