CN116489179A - 业务处理系统及业务处理方法 - Google Patents
业务处理系统及业务处理方法 Download PDFInfo
- Publication number
- CN116489179A CN116489179A CN202310463341.1A CN202310463341A CN116489179A CN 116489179 A CN116489179 A CN 116489179A CN 202310463341 A CN202310463341 A CN 202310463341A CN 116489179 A CN116489179 A CN 116489179A
- Authority
- CN
- China
- Prior art keywords
- target
- data storage
- consumption
- thread
- storage partition
- 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
- 238000012545 processing Methods 0.000 title claims abstract description 127
- 238000003672 processing method Methods 0.000 title abstract description 34
- 238000005192 partition Methods 0.000 claims abstract description 226
- 238000013500 data storage Methods 0.000 claims abstract description 218
- 238000000034 method Methods 0.000 claims abstract description 49
- 238000012790 confirmation Methods 0.000 claims description 27
- 230000007246 mechanism Effects 0.000 claims description 15
- 238000004590 computer program Methods 0.000 claims description 11
- 238000005516 engineering process Methods 0.000 abstract description 3
- 239000003795 chemical substances by application Substances 0.000 description 124
- 238000010586 diagram Methods 0.000 description 12
- 238000013461 design Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 230000002159 abnormal effect Effects 0.000 description 4
- 238000005538 encapsulation Methods 0.000 description 4
- 230000002688 persistence Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 239000002253 acid Substances 0.000 description 2
- 230000008602 contraction Effects 0.000 description 2
- 238000002955 isolation Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013075 data extraction Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- 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
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- 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/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/562—Brokering proxy services
-
- 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/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种业务处理系统及业务处理方法,该方法应用于金融科技技术领域,该系统包括:至少一个客户端、与客户端连接的多个访问代理、与访问代理连接的kafka的数据存储分区和分布式缓存组件,目标客户端接收用户发来的业务处理请求,第一目标访问代理接收业务处理请求,基于数据存储分区的消费状态和访问代理中各个消费线程的消费状态,确定目标消费线程,之后启用目标消费线程从数据存储分区中确定出目标数据存储分区及相应的偏移量信息,第一目标访问代理基于目标数据存储分区及偏移量信息,确定出相应的目标数据,并将目标数据、目标消费线程的标识、以及目标数据存储分区的标识返回目标客户端。该技术方案通提高了消息处理可用性。
Description
技术领域
本申请涉及互联网技术领域,尤其涉及一种业务处理系统及业务处理方法。
背景技术
Kafka作为一种分布式流式数据库,近年来获得越来越多的应用,但是结构比较复杂,存在topic(英文:主题消息)、producer(英文:生产者)、consumer(英文:消费者)、broker(kafka节点名称)等概念,在使用上存在一定的技术难度,另外,直接连接kafka没办法对客户端进行访问权限的管控,因此衍生了很多kafka服务器访问代理用于解决kafka数据消费。
现有技术中,比较常见的访问代理方案通过参数封装和持久化客户端与kafka长连接的方式,解决了客户端到kafka的访问联通性和简便性问题,即通过参数封装和持久化客户端与kafka建立长连接,kafka消息的消费分区在建立起消费组的时候就已经确定,因为访问代理记录了kafka的分区信息和消息偏移量(英文:offset),客户端只能连接固定的访问代理进行数据消费和信息确认。
在上述方法中,访问代理存储了消费的存储分区信息和该分区中数据偏移量信息,客户端的消费和提交必须依赖于访问代理的上下文信息,没办法保证高可用的需求。
发明内容
本申请提供一种业务处理系统及业务处理方法,以解决现有技术中消息处理可用性较低的问题。
第一方面,本申请实施例提供了一种业务处理系统,包括:至少一个客户端、与所述至少一个客户端连接的多个访问代理、与所述多个访问代理连接的kafka的多个数据存储分区和分布式缓存组件;
目标客户端接收用户发来的业务处理请求,所述目标客户端为所述至少一个客户端中的一个;
第一目标访问代理接收所述业务处理请求,基于所述kafka中所述多个数据存储分区的消费状态和所述多个访问代理中各个消费线程的消费状态,确定目标消费线程,之后启用所述目标消费线程从所述多个数据存储分区中确定出目标数据存储分区及相应的偏移量信息,所述第一目标访问代理是基于负载均衡机制从所述多个访问代理中确定出的任一个,所述分布式缓存组件用于记录所述kafka中所述多个数据存储分区的消费状态和所述多个访问代理中各个消费线程的消费状态;
所述第一目标访问代理基于所述目标数据存储分区及偏移量信息,确定出相应的目标数据,并将所述目标数据、所述目标消费线程的标识、以及所述目标数据存储分区的标识返回所述目标客户端。
在第一方面一种可能的设计中,所述系统还包括:第二目标访问代理,所述第二目标访问代理是基于负载均衡机制从所述多个访问代理中确定出的任一个;
所述目标客户端向第二目标访问代理发送数据确认信息,所述数据确认信息包括:所述目标消费线程的标识、所述目标数据存储分区的标识;
所述第二目标访问代理在所述分布式缓存组件中检测所述目标消费线程是否存在加锁;
若所述目标消费线程存在加锁,则释放所述目标消费线程的锁和所述目标数据存储分区的锁。
第二方面,本申请实施例提供了一种业务处理方法,所述方法应用于第一方面及各种可能的设计中任一项所述的系统中的第一目标访问代理,所述方法包括:
接收目标客户端发来的业务处理请求,启用目标消费线程从所述多个数据存储分区中确定出目标数据存储分区及相应的偏移量信息;
基于所述目标数据存储分区及偏移量信息,确定出相应的目标数据,并将所述目标数据返回所述目标客户端。
在第二方面一种可能的设计中,在所述启用目标消费线程从所述多个数据存储分区中确定出目标数据存储分区及相应的偏移量信息之前,所述方法还包括:
在分布式缓存组件中确定各个消费线程是否存在消费状态为空闲状态的消费线程;
若存在消费状态为空闲状态的消费线程,在各个处于空闲状态的消费线程中确定未加锁的任一个消费线程,并将所述未加锁的任一个消费线程作为所述目标消费线程,所述未加锁的消费线程表示所述消费线程未供数。
可选的,所述方法还包括:
若不存在消费状态为空闲状态的消费线程,确定所有的消费线程的数量与所有的数据存储分区的数量;
若所有的消费线程的数量小于所有的数据存储分区的数量时,创建与所述kafka连接的新的消费线程,并将所述新的消费线程作为所述目标消费线程。
可选的,所述启用目标消费线程从所述多个数据存储分区中确定出目标数据存储分区及相应的偏移量信息,包括:
对所述目标消费线程进行加锁,并同步至所述分布式缓存组件中;
在分布式缓存组件中确定出与所述业务处理请求中业务的标识一致的第一数据存储分区;
若所述第一数据存储分区的消费状态不处于加锁,则将所述第一数据存储分区确定为所述目标数据存储分区;
对所述目标数据存储分区进行加锁,并同步至所述分布式缓存组件中,并确定相应的偏移量信息。
可选的,所述在所述分布式缓存组件中确定出与所述业务处理请求中业务的标识一致的第一数据存储分区,包括:
根据所述分布式缓存组件中各个数据存储分区的标识,检测与所述业务处理请求中业务的标识一致的数据存储分区;
将与所述业务处理请求中业务的标识一致的数据存储分区作为所述第一数据存储分区。
可选的,在所述确定出相应的目标数据之后,所述方法还包括:
将所述目标消费线程的标识和所述目标数据存储分区的标识发送至所述目标客户端。
第三方面,本申请实施例提供了一种业务处理方法,所述方法应用于第一方面及各种可能的设计中任一项所述的系统中的第二目标访问代理,所述方法包括:
接收目标客户端发送的数据确认信息,所述数据确认信息包括:目标消费线程的标识、目标数据存储分区的标识;
在分布式缓存组件中检测目标消费线程是否存在加锁;
若所述目标消费线程存在加锁,则释放所述目标消费线程的锁和所述目标数据存储分区的锁。
第四方面,本申请实施例提供了一种业务处理装置,应用于第一目标访问代理,所述装置包括:
处理模块,用于接收目标客户端发来的业务处理请求,启用目标消费线程从所述多个数据存储分区中确定出目标数据存储分区及相应的偏移量信息;
确定模块,用于基于所述目标数据存储分区及偏移量信息,确定出相应的目标数据,并将所述目标数据返回所述目标客户端。
在第四方面一种可能的设计中,在所述启用目标消费线程从所述多个数据存储分区中确定出目标数据存储分区及相应的偏移量信息之前,所述确定模块,还用于:
在分布式缓存组件中确定各个消费线程是否存在消费状态为空闲状态的消费线程;
若存在消费状态为空闲状态的消费线程,在各个处于空闲状态的消费线程中确定未加锁的任一个消费线程,并将所述未加锁的任一个消费线程作为所述目标消费线程,所述未加锁的消费线程表示所述消费线程未供数。
可选的,所述确定模块,还用于:
若不存在消费状态为空闲状态的消费线程,确定所有的消费线程的数量与所有的数据存储分区的数量;
若所有的消费线程的数量小于所有的数据存储分区的数量时,创建与所述kafka连接的新的消费线程,并将所述新的消费线程作为所述目标消费线程。
可选的,所述处理模块启用目标消费线程从所述多个数据存储分区中确定出目标数据存储分区及相应的偏移量信息,具体用于:
对所述目标消费线程进行加锁,并同步至所述分布式缓存组件中;
在分布式缓存组件中确定出与所述业务处理请求中业务的标识一致的第一数据存储分区;
若所述第一数据存储分区的消费状态不处于加锁,则将所述第一数据存储分区确定为所述目标数据存储分区;
对所述目标数据存储分区进行加锁,并同步至所述分布式缓存组件中,并确定相应的偏移量信息。
可选的,所述确定模块在所述分布式缓存组件中确定出与所述业务处理请求中业务的标识一致的第一数据存储分区,具体用于:
根据所述分布式缓存组件中各个数据存储分区的标识,检测与所述业务处理请求中业务的标识一致的数据存储分区;
将与所述业务处理请求中业务的标识一致的数据存储分区作为所述第一数据存储分区。
可选的,在所述确定出相应的目标数据之后,发送模块,用于:
将所述目标消费线程的标识和所述目标数据存储分区的标识发送至所述目标客户端。
第五方面,本申请实施例提供了一种业务处理装置,应用于第二目标访问代理,所述装置包括:
接收模块,用于接收目标客户端发送的数据确认信息,所述数据确认信息包括:目标消费线程的标识、目标数据存储分区的标识;
处理模块,用于在分布式缓存组件中检测目标消费线程是否存在加锁,并在所述目标消费线程存在加锁时,释放所述目标消费线程的锁和所述目标数据存储分区的锁。
第六方面,本申请提供一种电子设备,包括:处理器,以及与所述处理器通信连接的存储器和收发器;
所述存储器存储计算机执行指令;所述收发器,用于收发数据;
所述处理器执行所述存储器存储的计算机执行指令,以实现如上述第二、三方面或任一种方式所述的业务处理方法。
第七方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现上述第二、三方面或任一种方式所述的业务处理方法。
第八方面,本申请提供一种计算机程序产品,所述计算机程序被处理器执行时用于实现上述第二、三方面或任一种方式所述的业务处理方法。
本申请实施例提供的业务处理系统及业务处理方法,该系统包括:至少一个客户端、与至少一个客户端连接的多个访问代理、与多个访问代理连接的kafka的多个数据存储分区和分布式缓存组件,目标客户端接收用户发来的业务处理请求,目标客户端为至少一个客户端中的一个,第一目标访问代理接收业务处理请求,基于kafka中多个数据存储分区的消费状态和多个访问代理中各个消费线程的消费状态,确定目标消费线程,之后启用目标消费线程从多个数据存储分区中确定出目标数据存储分区及相应的偏移量信息,第一目标访问代理是基于负载均衡机制从多个访问代理中确定出的任一个,分布式缓存组件用于记录kafka中多个数据存储分区的消费状态和多个访问代理中各个消费线程的消费状态,第一目标访问代理基于目标数据存储分区及偏移量信息,确定出相应的目标数据,并将目标数据、目标消费线程的标识、以及目标数据存储分区的标识返回目标客户端。该技术方案通过访问代理服务信息的无状态化,保证了代理层与客户端的解耦,使得客户端的数据消费不会受到kafka数据库和访问代理本身稳定性的影响,以提高消息处理可用性、以及访问代理的资源利用率和并发消费能力。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1为本申请实施例提供的现有技术业务处理系统示意图;
图2A为本申请实施例提供的业务处理系统的架构示意图一;
图2B为本申请实施例提供的业务处理系统的架构示意图二;
图3为本申请实施例提供的业务处理方法实施例一的流程示意图;
图4为本申请实施例提供的业务处理方法实施例二的流程示意图;
图5为本申请实施例提供的业务处理方法实施例三的流程示意图;
图6为本申请实施例提供的业务处理方法实施例四的流程示意图;
图7为本申请实施例提供的业务处理方法实施例五的流程示意图;
图8为本申请实施例提供的业务处理方法实施例六的流程示意图;
图9为本申请实施例提供的业务处理装置的结构示意图一;
图10为本申请实施例提供的业务处理装置的结构示意图二;
图11为本申请实施例提供的电子设备的结构示意图。
通过上述附图,已示出本公开明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本公开的概念。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在介绍本申请的实施例之前,首先对本申请实施例的专业名词和应用背景进行解释:
Kafka:一个分布式的流式处理平台,以高吞吐、可持久化、可水平扩展、支持流数据处理等多种特性而被广泛使用。
流数据:是一组顺序、大量、快速、连续到达的数据系列,一般情况下,流数据可被视为一个随时间延续而无限增长的动态数据集合。
最终一致性(英文:Eventually Consistent):系统中的所有数据副本经过一定的时间后,最终能够达到一致的状态,不需要实时保证系统数据的强一致性。最终一致性是弱一致性的一种特殊情况。BASE理论面向的是大型高可用可扩展的分布式系统,通过牺牲强一致性来获得高可用性。
无状态服务(英文:stateless service):对单次请求的处理,不依赖其他的请求。也就是说,处理一次请求所需的全部信息,要么都包含在这个请求里面,要么可以从外部获取到,服务器本身不存储任何信息。
有状态服务(英文:stateful service):会在自身保存一些数据,先后的请求是有关联的。
ACID:数据库管理系统在写入或者更新资料过程中,为保证事务的正确可靠,所必须具备的四个特性,原子性(英文:automaticly),一致性(英文:consistency),隔离性(英文:isolation),持久性(英文:durability)。
Kafka作为一种分布式流式数据库,近年来获得越来越多的应用,但是结构比较复杂,存在topic(英文:主题消息)、producer(英文:生产者)、consumer(英文:消费者)、broker(kafka节点名称)等概念,在使用上存在一定的技术难度,另外,直接连接kafka没办法对客户端进行访问权限的管控,因此衍生了很多kafka服务器访问代理用于解决kafka数据消费。
目前比较常见的访问代理方案通过参数封装和持久化客户端与kafka长连接的方式,解决了客户端到kafka的访问联通性和简便性问题,但是由于kafka是一种分布式流式数据库,并没有提供ACID的强一致性概念,而且由于分布式数据库本身的高可用特性,当系统或者消费者发生异常时,会引发Kafka的消费者的再平衡操作,因此目前的访问代理方案没办法保证消费者消费一致性,会引起数据消费的不一致或者重复消费。另外,由于访问代理通过长连接的方式消费数据,在访问代理上保存了kafka的消费消息的partition(数据存储分区)和offset(偏移量信息)。
具体的,图1为本申请实施例提供的现有技术业务处理系统示意图,如图1所示,该业务处理系统包括:客户端11、客户端12、以及客户端13;访问代理14、访问代理15、以及访问代理16;kafka服务器17。
其中,kafka服务器17包括:数据存储分区01、数据存储分区02、数据存储分区03、数据存储分区04、数据存储分区05、数据存储分区06、数据存储分区07、数据存储分区08、以及数据存储分区09。
如上图1所示,目前比较常见的访问代理方案通过一个或者多个访问代理组成一个消费者组消费kafka数据,通过参数封装和持久化客户端数据请求组件与kafka建立长连接,kafka消息的消费partition在建立起消费组的时候就已经确定,因为访问代理记录了kafka的partition信息和消息偏移量(offset),客户端只能连接固定的访问代理进行数据消费和信息确认。这种相对固定的访问模式降低了kafka使用难度,并且可以在访问代理上对客户端进行鉴权,防止信息的泄露。但是目前的方案存在几个问题:
1、访问代理存储了消费的partition和offset,客户端的消费和提交必须依赖于访问代理的上下文信息,没办法保证高可用的需求。
2、当kafka或者访问代理发生系统异常时,会引起kafka的再平衡机制,导致访问代理消费的partition发生改变,此时客户端消费的数据没办法及时提交,引起数据的重复消费。
3、当业务数据量上升的时候,没办法根据实际业务数据量进行动态扩展的问题,需要停机进行消费组的再分配,数据消费能力比较低。
针对现有技术中存在的技术问题,本申请发明人的构思如下,如果将kafka的多个数据存储分区的消费状态和多个访问代理中各个消费线程的消费状态存在分布式缓存组件,在客户端每次接收到业务处理请求时,基于分布式缓存组件中记录的信息,分配到处理该业务处理请求的访问代理确定出使用的消费线程以及相应的数据存储分区,这样可以解耦客户端和访问代理,从而实现在大业务访问场景下的访问代理的无状态扩缩容能力,提高系统的整体稳定性和高可用性。
本申请的技术方案中,所涉及的金融数据或用户数据等信息的收集、存储、使用、加工、传输、提供和公开等处理,均符合相关法律法规的规定,且不违背公序良俗。
下面,通过具体实施例对本申请的技术方案进行详细说明。需要说明的是,下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。
值得说明的是:本公开业务处理系统及业务处理方法的应用领域不作限定,可以是金融科技、互联网等等。
图2A为本申请实施例提供的业务处理系统的架构示意图一,如图2A所示,该业务处理系统可以包括:至少一个客户端21、与至少一个客户端21连接的多个访问代理22、与多个访问代理22连接的kafka的多个数据存储分区23和分布式缓存组件25。
分布式缓存组件25用于记录kafka中多个数据存储分区23的消费状态和多个访问代理22中各个消费线程的消费状态;该分布式缓存组件25可以是redis集群。
在一种可能的实现中,以2个客户端21(211、212)、4个访问代理22(221、222、223、224)和10个数据存储分区23(231、232…239、230)为例进行说明。
应理解:针对每个访问代理22,其中均存在至少一个消费线程。
可选的,目标客户端211接收用户发来的业务处理请求,目标客户端211为至少一个客户端21中的一个。
第一目标访问代理221接收业务处理请求,基于kafka中多个数据存储分区23的消费状态和多个访问代理22中各个消费线程的消费状态,确定目标消费线程24,之后启用目标消费线程24从多个数据存储分区23中确定出目标数据存储分区及相应的偏移量信息,第一目标访问代理221是基于负载均衡机制从多个访问代理21中确定出的任一个。
第一目标访问代理221基于目标数据存储分区231及偏移量信息,确定出相应的目标数据,并将目标数据、目标消费线程24的标识、以及目标数据存储分区231的标识返回目标客户端211。
进一步地,图2B为本申请实施例提供的业务处理系统的架构示意图二,如图2B所示,该业务处理系统还包括:第二目标访问代理224。
目标客户端211向第二目标访问代理224发送数据确认信息,该数据确认信息包括:目标消费线程24的标识、目标数据存储分区231的标识,第二目标访问代理224是基于负载均衡机制从多个访问代理22中确定出的任一个。
可选的,第二目标访问代理224与第一目标访问代理221可以是同一个访问代理,均为负载均衡机制确定的。
在一种可能的实现中,目标客户端211在接收到用户发来的业务处理请求之后,业务处理系统中的负载均衡机制触发,选中第一目标访问代理221作为处理该业务处理请求的组件,第一目标访问代理221基于分布式缓存组件25中的信息,确定出可用于处理该业务处理请求的消费线程,即目标消费线程24,目标消费线程24基于分布式缓存组件25中的信息,确定出目标数据存储分区231,并从该目标数据存储分区231中确定出业务处理请求对应的目标数据,之后将该目标数据、目标数据存储分区231的标识、以及目标消费线程24的标识返回至目标客户端211,以发送给用户。
进一步地,在目标客户端211在收到上述信息之后,将数据确认信息发送给基于负载均衡机制触发选中的第二目标访问代理224,以通知业务处理系统对该业务处理请求的响应结束。
应理解:本申请不对客户端、访问代理、数据存储分区的数量做限定,以及上述未详述和未公开的内容参见下述方法实施例。
本申请实施例提供的业务处理系统,该系统包括:至少一个客户端、与至少一个客户端连接的多个访问代理、与多个访问代理连接的kafka的多个数据存储分区和分布式缓存组件,目标客户端接收用户发来的业务处理请求,目标客户端为至少一个客户端中的一个,第一目标访问代理接收业务处理请求,基于kafka中多个数据存储分区的消费状态和多个访问代理中各个消费线程的消费状态,确定目标消费线程,之后启用目标消费线程从多个数据存储分区中确定出目标数据存储分区及相应的偏移量信息,第一目标访问代理是基于负载均衡机制从多个访问代理中确定出的任一个,分布式缓存组件用于记录kafka中多个数据存储分区的消费状态和多个访问代理中各个消费线程的消费状态,第一目标访问代理基于目标数据存储分区及偏移量信息,确定出相应的目标数据,并将目标数据、目标消费线程的标识、以及目标数据存储分区的标识返回目标客户端。该技术方案通过访问代理服务信息的无状态化,保证了代理层与客户端的解耦,使得客户端的数据消费不会受到kafka数据库和访问代理本身稳定性的影响,以提高消息处理可用性、以及访问代理的资源利用率和并发消费能力。
在上述业务处理系统实施例的基础上,图3为本申请实施例提供的业务处理方法实施例一的流程示意图,该图3以第一目标访问代理为执行主体进行说明,如图3所示,该业务处理方法包括如下步骤:
步骤31、接收目标客户端发来的业务处理请求,启用目标消费线程从多个数据存储分区中确定出目标数据存储分区及相应的偏移量信息。
其中,目标客户端为业务处理系统中的多个客户端的一个,针对用户发来的一个业务处理请求的响应,目标客户端接收到该业务处理请求后转发至第一目标访问代理。
其中,第一目标访问代理为基于负载均衡机制从业务处理系统的多个访问代理中确定出的任一个,利用负载均衡机制从而达到高可用的目的,常见的负载均衡软件有:Nginx、LVS、硬件F5等。
在本步骤中,第一目标访问代理接收到业务处理请求之后,启动自身消费线程中的目标消费线程(目标消费线程的确定由下述实施例给出),目标消费线程对该业务处理请求进行消费,即从多个数据存储分区中确定出目标数据存储分区及相应的偏移量信息(目标数据存储分区及相应的偏移量信息的确定由下述实施例给出)。
目标数据存储分区及相应的偏移量信息记载了业务处理请求对应的目标数据所存储的位置。
应理解:partition为kafka服务器中存储数据的任一个物理分区,offset记载了该partition中各个数据的地址,即缓存的起始位置;第一目标访问代理的实现可以是一种poll逻辑,目标客户端根据访问代理服务的认证信息,连接到访问代理服务消费数据。
步骤32、基于目标数据存储分区及偏移量信息,确定出相应的目标数据,并将目标数据返回目标客户端。
在本步骤中,在上述确定出目标数据存储分区及偏移量信息,便可以基于该目标数据存储分区中,依据相应的偏移量来确定出业务处理请求对应的目标数据,之后将该数据提取出来,返回给目标客户端。
此外,在拉取目标数据之前,可以先对kafka对应的partition列表提交上次消费的偏移量,然后再开始拉取和消费目标数据,返回给客户端。
应理解,在返回目标客户端目标数据时,还可以携带目标消费线程的标识、以及目标数据存储分区的标识,用于后续确认业务处理请求已经被处理完成。
本申请实施例提供的业务处理方法,接收目标客户端发来的业务处理请求,启用目标消费线程从多个数据存储分区中确定出目标数据存储分区及相应的偏移量信息,基于目标数据存储分区及偏移量信息,确定出相应的目标数据,并将目标数据返回目标客户端。该技术方案中通过目标消费线程从多个数据存储分区中确定出目标数据存储分区及相应的偏移量信息,进而实现对数据的获取。
在上述实施例的基础上,图4为本申请实施例提供的业务处理方法实施例二的流程示意图,如图4所示,在步骤31之前,该业务处理方法还包括如下步骤:
步骤41、在分布式缓存组件中确定各个消费线程是否存在消费状态为空闲状态的消费线程;
在本方案中,在起启用目标消费线程之前,首先需要对目标消费线程进行确定,在将业务处理请求分配给第一目标访问代理处理之后,第一目标访问代理在自身的多个消费线程中确定出处理该业务处理请求的消费线程,即目标消费线程。
在本步骤中,分布式缓存组件中存储有各个访问代理中各个消费线程的消费状态,此时,第一目标访问代理在分布式缓存组件中确定自身的多个消费线程中是否存在消费状态为空闲状态的消费线程。
步骤42、若存在消费状态为空闲状态的消费线程,在各个处于空闲状态的消费线程中确定未加锁的任一个消费线程,并将未加锁的任一个消费线程作为目标消费线程,未加锁的消费线程表示消费线程未供数。
在本步骤中,如果存在消费状态为空闲状态的消费线程,先确定出处于空闲状态的至少一个消费线程,之后在处于空闲状态的至少一个消费线程中确定出未加锁的消费线程,将未加锁的任一个消费线程作为目标消费线程,用于对业务处理请求进行处理的消费线程。
其中,对消费线程进行加锁表示该消费线程正在供数,以防止重复消费,一个消费线程对应一个消费线程锁(即,consumer-key对应一个consumer)。
步骤43、若不存在消费状态为空闲状态的消费线程,确定所有的消费线程的数量与所有的数据存储分区的数量;
在本步骤中,如果不存在消费状态为空闲状态的消费线程,说明当前所有的消费线程均被占用,此时在分布式缓存组件中查询所有的消费线程的数量、以及所有的数据存储分区的数量。
步骤44、若所有的消费线程的数量小于所有的数据存储分区的数量时,创建与kafka连接的新的消费线程,并将新的消费线程作为目标消费线程。
在本步骤中,如果所有的消费线程的数量小于所有的数据存储分区的数量,则可以创建与kafka连接的新的消费线程,即新建consumer,并加入连接池,之后将该新的消费线程作为目标消费线程。
此外,可以自增分布式缓存组件中的consumer-number,也即在分布式缓存组件中增加新的消费线程的信息。
本申请实施例提供的业务处理方法,在分布式缓存组件中确定各个消费线程是否存在消费状态为空闲状态的消费线程,若存在消费状态为空闲状态的消费线程,在各个处于空闲状态的消费线程中确定未加锁的任一个消费线程,并将未加锁的任一个消费线程作为目标消费线程,未加锁的消费线程表示消费线程未供数,若不存在消费状态为空闲状态的消费线程,确定所有的消费线程的数量与所有的数据存储分区的数量,若所有的消费线程的数量小于所有的数据存储分区的数量时,创建与kafka连接的新的消费线程,并将新的消费线程作为目标消费线程。该技术方案实现了对目标消费线程的确定,以为后续数据的获取提供基础。
在上述实施例的基础上,图5为本申请实施例提供的业务处理方法实施例三的流程示意图,如图5所示,步骤31可以包括如下步骤:
步骤51、对目标消费线程进行加锁,并同步至分布式缓存组件中;
在本步骤中,在确定目标消费线程之后,对该目标消费线程进行加锁,并将该加锁的信息同步至分布式缓存组件中。
该步骤的实现,用于在后续访问代理在执行处理时,可以基于该信息,继续支持客户端的数据消费,而不会引起客户端数据重复消费。
步骤52、在分布式缓存组件中确定出与业务处理请求中业务的标识一致的第一数据存储分区。
可选的,该步骤52的具体实现可以是:根据分布式缓存组件中各个数据存储分区的标识,检测与业务处理请求中业务的标识一致的数据存储分区;将与业务处理请求中业务的标识一致的数据存储分区作为第一数据存储分区。
步骤53、若第一数据存储分区的消费状态不处于加锁,则将第一数据存储分区确定为目标数据存储分区;
在本步骤中,在第一数据存储分区的消费状态不处于加锁,即说明第一数据存储分区当前不处于供数阶段,此时将第一数据存储分区确定为目标数据存储分区。
此外,若第一数据存储分区的消费状态处于加锁,表示该第一数据存储分区消费的偏移量还没有更新,不可以消费。
步骤54、对目标数据存储分区进行加锁,并同步至分布式缓存组件中,并确定相应的偏移量信息。
在本步骤中,第一目标访问代理对目标数据存储分区进行加锁,并加该加锁的信息同步至分布式缓存组件中,该实现的理由与步骤51同理。
相应的偏移量信息的确定参考步骤52的实现。
本申请实施例提供的业务处理方法,对目标消费线程进行加锁,并同步至分布式缓存组件中,在分布式缓存组件中确定出与业务处理请求中业务的标识一致的第一数据存储分区,若第一数据存储分区的消费状态不处于加锁,则将第一数据存储分区确定为目标数据存储分区,对目标数据存储分区进行加锁,并同步至分布式缓存组件中,并确定相应的偏移量信息。该技术方案对处理业务处理请求的数据存储分区、以及目标消费线程进行加锁,以避免数据重复消费的情况发生。
在上述实施例的基础上,图6为本申请实施例提供的业务处理方法实施例四的流程示意图,该图6以第二目标访问代理为执行主体进行说明,如图6所示,该业务处理方法包括如下步骤:
步骤61、接收目标客户端发送的数据确认信息,数据确认信息包括:目标消费线程的标识、目标数据存储分区的标识;
在本方案中,在上述第一目标访问代理将目标数据返回给目标客户端之后,还需要通知业务处理系统,业务处理请求结束,此时,第二目标访问代理接收目标客户端发来的数据确认信息。
应理解:第二目标访问代理也是基于负载均衡机制从业务处理系统的多个访问代理中确定出的任一个,该第二目标访问代理存在与第一目标访问代理为同一个访问代理的情况。
其中,数据确认信息可以是commitSync请求。
步骤62、在分布式缓存组件中检测目标消费线程是否存在加锁;
在本步骤中,在上述步骤中第一目标访问代理将目标消费线程进行加锁的信息同步至了分布式缓存组件,此时第二目标访问代理根据目标消费线程的标识,在分布式缓存组件中确定目标消费线程是否加锁(即是否存在consumer-key)。
步骤63、若目标消费线程存在加锁,则释放目标消费线程的锁和目标数据存储分区的锁。
在本步骤中,如果目标消费线程存在加锁,则释放目标消费线程的锁和目标数据存储分区的锁,即释放对应的partition-key、最后释放consumer-key,完成一次完整的数据消费。
此外,更新分布式缓存中的偏移量信息。
如果目标消费线程不存在加锁,不进行处理,防止误提交,造成数据的丢失。
本申请实施例提供的业务处理方法,接收目标客户端发送的数据确认信息,数据确认信息包括:目标消费线程的标识、目标数据存储分区的标识,在分布式缓存组件中检测目标消费线程是否存在加锁,若目标消费线程存在加锁,则释放目标消费线程的锁和目标数据存储分区的锁。该技术方案在数据提取之后,向目标客户端发送数据确认信息,以解锁目标消费线程的锁和目标数据存储分区。
此外,图7为本申请实施例提供的业务处理方法实施例五的流程示意图,对数据获取(即,访问代理数据poll(即,拉数据)逻辑)进行说明,具体执行顺序见图7。
第1步、获取各个消费线程的消费状态;
第2步、判断是否有存在消费状态为空闲的消费线程;
第3步、若不存在,创建新的消费线程(所有的消费线程的数量小于所有的数据存储分区的数量),作为目标消费线程,执行第5步;
第4步、若存在,确定出一个未加锁的消费线程作为目标消费线程;
第5步、对目标消费线程进行加锁;
第6步、获取各个数据存储分区的消费状态;
第7步、判断是否有存在消费状态为不加锁的数据存储分区;
第8步、基于业务处理请求,在不加锁的数据存储分区中确定出目标数据存储分区;
第9步、对目标数据存储分区进行加锁;
第10步、从目标数据存储分区中获取目标数据,并将目标数据存储分区的标识、目标消费线程的标识返回至目标客户端。
进一步地,图8为本申请实施例提供的业务处理方法实施例六的流程示意图,对数据获取之后确认拉取(即,访问代理数据commitSync逻辑)进行说明,具体执行顺序见图8。
第1步、接收目标客户端发来的数据确认信息;
第2步、基于数据确认信息中的目标消费线程的标识,判断目标消费线程是否加锁;
第3步、若存在加锁,则释放目标消费线程的锁和目标数据存储分区的锁。
也即,本申请实施例基于上述技术方案,可以实现:
其1、通过引入分布式锁和分布式缓存,将访问代理的partition信息和偏移量信息存储到分布式缓存组件(如redis)中,实现了访问代理的无状态化,以及客户端与访问代理的解耦,因此客户端的每次消费和提交,不需要跟同一个访问代理完成,而是可以通过负载均衡随机发往任意的一个访问代理,从而任何一个访问代理的宕机,不会影响客户端的数据消费。
其2、当kafka或者访问代理异常引发再平衡的时候,由于分布式缓存组件中存储了kafka集群的消费状态,访问代理可以根据缓存信息继续支持客户端的数据消费,而不会引起客户端数据重复消费。
其3、由于访问代理层的无状态化,当业务数据量激增或者缩减时,可以简单的通过增加或者减少访问代理动态的进行访问代理的扩缩容,提高了资源利用率以及大数据业务数据的处理能力。
其4、当Kafka发生异常、代理发生异常或者代理动态扩展的时候,随着consumer数的变化,会引起kafka的再平衡,此时服务代理里面的consumer里面的partition数发生了变化。但是由于kafka消费状态信息存储在分布式缓存当中,因此不论是客户端的pull请求,还是commitSync请求,都不会受到再平衡的影响。
下述为本申请业务处理装置实施例,可以用于执行本申请业务处理方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
图9为本申请实施例提供的业务处理装置的结构示意图一。如图9所示,该业务处理装置应用于第一目标访问代理,该业务处理装置包括:
处理模块91,用于接收目标客户端发来的业务处理请求,启用目标消费线程从多个数据存储分区中确定出目标数据存储分区及相应的偏移量信息;
确定模块92,用于基于目标数据存储分区及偏移量信息,确定出相应的目标数据,并将目标数据返回目标客户端。
在本申请实施例一种可能的设计中,在启用目标消费线程从多个数据存储分区中确定出目标数据存储分区及相应的偏移量信息之前,确定模块92,还用于:
在分布式缓存组件中确定各个消费线程是否存在消费状态为空闲状态的消费线程;
若存在消费状态为空闲状态的消费线程,在各个处于空闲状态的消费线程中确定未加锁的任一个消费线程,并将未加锁的任一个消费线程作为目标消费线程,未加锁的消费线程表示消费线程未供数。
可选的,确定模块92,还用于:
若不存在消费状态为空闲状态的消费线程,确定所有的消费线程的数量与所有的数据存储分区的数量;
若所有的消费线程的数量小于所有的数据存储分区的数量时,创建与kafka连接的新的消费线程,并将新的消费线程作为目标消费线程。
可选的,处理模块91启用目标消费线程从多个数据存储分区中确定出目标数据存储分区及相应的偏移量信息,具体用于:
对目标消费线程进行加锁,并同步至分布式缓存组件中;
在分布式缓存组件中确定出与业务处理请求中业务的标识一致的第一数据存储分区;
若第一数据存储分区的消费状态不处于加锁,则将第一数据存储分区确定为目标数据存储分区;
对目标数据存储分区进行加锁,并同步至分布式缓存组件中,并确定相应的偏移量信息。
可选的,确定模块92在分布式缓存组件中确定出与业务处理请求中业务的标识一致的第一数据存储分区,具体用于:
根据分布式缓存组件中各个数据存储分区的标识,检测与业务处理请求中业务的标识一致的数据存储分区;
将与业务处理请求中业务的标识一致的数据存储分区作为第一数据存储分区。
可选的,在所述确定出相应的目标数据之后,发送模块,用于:
将目标消费线程的标识和目标数据存储分区的标识发送至目标客户端。
本申请实施例提供的业务处理装置,可用于执行上述应用于第一目标访问代理中任一实施例中的业务处理确定方法,其实现原理和技术效果类似,在此不再赘述。
图10为本申请实施例提供的业务处理装置的结构示意图二。如图10所示,该业务处理装置应用于第二目标访问代理,该业务处理装置包括:
接收模块101,用于接收目标客户端发送的数据确认信息,数据确认信息包括:目标消费线程的标识、目标数据存储分区的标识;
处理模块102,用于在分布式缓存组件中检测目标消费线程是否存在加锁,并在目标消费线程存在加锁时,释放目标消费线程的锁和目标数据存储分区的锁。
本申请实施例提供的业务处理装置,可用于执行上述应用于第二目标访问代理中任一实施例中的业务处理确定方法,其实现原理和技术效果类似,在此不再赘述。
需要说明的是,应理解以上装置的各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些模块可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分模块通过处理元件调用软件的形式实现,部分模块通过硬件的形式实现。此外,这些模块全部或部分可以集成在一起,也可以独立实现。这里所述的处理元件可以是一种集成电路,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。
图11为本申请实施例提供的电子设备的结构示意图,如图11所示,该电子设备可以包括:处理器111、存储器112及存储在所述存储器112上并可在处理器111上运行的计算机程序指令,所述处理器111执行所述计算机程序指令时实现前述任一实施例提供的方法。
可选的,该电子设备的上述各个器件之间可以通过系统总线连接。
存储器112可以是单独的存储单元,也可以是集成在处理器111中的存储单元。处理器111的数量为一个或者多个。
应理解,处理器111可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器111、数字信号处理器111(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)等。通用处理器111可以是微处理器111或者该处理器111也可以是任何常规的处理器111等。结合本申请所公开的方法的步骤可以直接体现为硬件处理器111执行完成,或者用处理器111中的硬件及软件模块组合执行完成。
系统总线可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。系统总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。存储器112可能包括随机存取存储器112(random access memory,RAM),也可能还包括非易失性存储器112(non-volatile memory,NVM),例如至少一个磁盘存储器112。
实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一可读取存储器112中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储器112(存储介质)包括:只读存储器112(read-only memory,ROM)、RAM、快闪存储器112、硬盘、固态硬盘、磁带(英文:magnetic tape)、软盘(英文:floppydisk)、光盘(英文:optical disc)及其任意组合。
本申请实施例提供的电子设备,可用于执行上述任一方法实施例提供的业务处理方法,其实现原理和技术效果类似,在此不再赘述。
本申请实施例提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机指令,当该计算机指令在计算机上运行时,使得计算机执行上述方法。
上述的计算机可读存储介质,上述可读存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器,电可擦除可编程只读存储器,可擦除可编程只读存储器,可编程只读存储器,只读存储器,磁存储器,快闪存储器,磁盘或光盘。可读存储介质可以是通用或专用计算机能够存取的任何可用介质。
可选的,将可读存储介质耦合至处理器,从而使处理器能够从该可读存储介质读取信息,且可向该可读存储介质写入信息。当然,可读存储介质也可以是处理器的组成部分。处理器和可读存储介质可以位于专用集成电路(Application Specific IntegratedCircuits,ASIC)中。当然,处理器和可读存储介质也可以作为分立组件存在于设备中。
本申请实施例还提供一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序存储在计算机可读存储介质中,至少一个处理器可以从该计算机可读存储介质中读取该计算机程序,至少一个处理器执行计算机程序时可实现上述业务处理方法。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求书来限制。
Claims (14)
1.一种业务处理系统,其特征在于,包括:至少一个客户端、与所述至少一个客户端连接的多个访问代理、与所述多个访问代理连接的kafka的多个数据存储分区和分布式缓存组件;
目标客户端接收用户发来的业务处理请求,所述目标客户端为所述至少一个客户端中的一个;
第一目标访问代理接收所述业务处理请求,基于所述kafka中所述多个数据存储分区的消费状态和所述多个访问代理中各个消费线程的消费状态,确定目标消费线程,之后启用所述目标消费线程从所述多个数据存储分区中确定出目标数据存储分区及相应的偏移量信息,所述第一目标访问代理是基于负载均衡机制从所述多个访问代理中确定出的任一个,所述分布式缓存组件用于记录所述kafka中所述多个数据存储分区的消费状态和所述多个访问代理中各个消费线程的消费状态;
所述第一目标访问代理基于所述目标数据存储分区及偏移量信息,确定出相应的目标数据,并将所述目标数据、所述目标消费线程的标识、以及所述目标数据存储分区的标识返回所述目标客户端。
2.根据权利要求1所述的系统,其特征在于,所述系统还包括:第二目标访问代理,所述第二目标访问代理是基于负载均衡机制从所述多个访问代理中确定出的任一个;
所述目标客户端向第二目标访问代理发送数据确认信息,所述数据确认信息包括:所述目标消费线程的标识、所述目标数据存储分区的标识;
所述第二目标访问代理在所述分布式缓存组件中检测所述目标消费线程是否存在加锁;
若所述目标消费线程存在加锁,则释放所述目标消费线程的锁和所述目标数据存储分区的锁。
3.一种业务处理方法,其特征在于,所述方法应用于权利要求1或2任一项所述的系统中的第一目标访问代理,所述方法包括:
接收目标客户端发来的业务处理请求,启用目标消费线程从多个数据存储分区中确定出目标数据存储分区及相应的偏移量信息;
基于所述目标数据存储分区及偏移量信息,确定出相应的目标数据,并将所述目标数据返回所述目标客户端。
4.根据权利要求3所述的方法,其特征在于,在所述启用目标消费线程从所述多个数据存储分区中确定出目标数据存储分区及相应的偏移量信息之前,所述方法还包括:
在分布式缓存组件中确定各个消费线程是否存在消费状态为空闲状态的消费线程;
若存在消费状态为空闲状态的消费线程,在各个处于空闲状态的消费线程中确定未加锁的任一个消费线程,并将所述未加锁的任一个消费线程作为所述目标消费线程,所述未加锁的消费线程表示所述消费线程未供数。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
若不存在消费状态为空闲状态的消费线程,确定所有的消费线程的数量与所有的数据存储分区的数量;
若所有的消费线程的数量小于所有的数据存储分区的数量时,创建与kafka连接的新的消费线程,并将所述新的消费线程作为所述目标消费线程。
6.根据权利要求5所述的方法,其特征在于,所述启用目标消费线程从所述多个数据存储分区中确定出目标数据存储分区及相应的偏移量信息,包括:
对所述目标消费线程进行加锁,并同步至所述分布式缓存组件中;
在分布式缓存组件中确定出与所述业务处理请求中业务的标识一致的第一数据存储分区;
若所述第一数据存储分区的消费状态不处于加锁,则将所述第一数据存储分区确定为所述目标数据存储分区;
对所述目标数据存储分区进行加锁,并同步至所述分布式缓存组件中,并确定相应的偏移量信息。
7.根据权利要求6所述的方法,其特征在于,所述在分布式缓存组件中确定出与所述业务处理请求中业务的标识一致的第一数据存储分区,包括:
根据所述分布式缓存组件中各个数据存储分区的标识,检测与所述业务处理请求中业务的标识一致的数据存储分区;
将与所述业务处理请求中业务的标识一致的数据存储分区作为所述第一数据存储分区。
8.根据权利要求6所述的方法,其特征在于,在所述确定出相应的目标数据之后,所述方法还包括:
将所述目标消费线程的标识和所述目标数据存储分区的标识发送至所述目标客户端。
9.一种业务处理方法,其特征在于,所述方法应用于权利要求1或2任一项所述的系统中的第二目标访问代理,所述方法包括:
接收目标客户端发送的数据确认信息,所述数据确认信息包括:目标消费线程的标识、目标数据存储分区的标识;
在分布式缓存组件中检测目标消费线程是否存在加锁;
若所述目标消费线程存在加锁,则释放所述目标消费线程的锁和所述目标数据存储分区的锁。
10.一种业务处理装置,其特征在于,应用于第一目标访问代理,所述装置包括:
处理模块,用于接收目标客户端发来的业务处理请求,启用目标消费线程从多个数据存储分区中确定出目标数据存储分区及相应的偏移量信息;
确定模块,用于基于所述目标数据存储分区及偏移量信息,确定出相应的目标数据,并将所述目标数据返回所述目标客户端。
11.一种业务处理装置,其特征在于,应用于第二目标访问代理,所述装置包括:
接收模块,用于接收目标客户端发送的数据确认信息,所述数据确认信息包括:目标消费线程的标识、目标数据存储分区的标识;
处理模块,用于在分布式缓存组件中检测目标消费线程是否存在加锁,并在所述目标消费线程存在加锁时,释放所述目标消费线程的锁和所述目标数据存储分区的锁。
12.一种电子设备,其特征在于,包括:处理器,以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如上述权利要求3至9任一项所述的方法。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如上述权利要求3至9任一项所述的方法。
14.一种计算机程序产品,其特征在于,包括计算机程序,所述计算机程序被处理器执行时用于实现如权利要求3至9任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310463341.1A CN116489179A (zh) | 2023-04-26 | 2023-04-26 | 业务处理系统及业务处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310463341.1A CN116489179A (zh) | 2023-04-26 | 2023-04-26 | 业务处理系统及业务处理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116489179A true CN116489179A (zh) | 2023-07-25 |
Family
ID=87222829
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310463341.1A Pending CN116489179A (zh) | 2023-04-26 | 2023-04-26 | 业务处理系统及业务处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116489179A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116760640A (zh) * | 2023-08-18 | 2023-09-15 | 建信金融科技有限责任公司 | 访问控制方法、装置、设备及存储介质 |
CN116841835A (zh) * | 2023-08-31 | 2023-10-03 | 安擎计算机信息股份有限公司 | 一种运行状态监测方法、装置和服务器 |
CN117093387A (zh) * | 2023-10-20 | 2023-11-21 | 腾讯科技(深圳)有限公司 | 消息处理方法、装置、电子设备和存储介质 |
-
2023
- 2023-04-26 CN CN202310463341.1A patent/CN116489179A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116760640A (zh) * | 2023-08-18 | 2023-09-15 | 建信金融科技有限责任公司 | 访问控制方法、装置、设备及存储介质 |
CN116760640B (zh) * | 2023-08-18 | 2023-11-03 | 建信金融科技有限责任公司 | 访问控制方法、装置、设备及存储介质 |
CN116841835A (zh) * | 2023-08-31 | 2023-10-03 | 安擎计算机信息股份有限公司 | 一种运行状态监测方法、装置和服务器 |
CN116841835B (zh) * | 2023-08-31 | 2023-11-07 | 安擎计算机信息股份有限公司 | 一种运行状态监测方法、装置和服务器 |
CN117093387A (zh) * | 2023-10-20 | 2023-11-21 | 腾讯科技(深圳)有限公司 | 消息处理方法、装置、电子设备和存储介质 |
CN117093387B (zh) * | 2023-10-20 | 2024-02-13 | 腾讯科技(深圳)有限公司 | 消息处理方法、装置、电子设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116489179A (zh) | 业务处理系统及业务处理方法 | |
US6665814B2 (en) | Method and apparatus for providing serialization support for a computer system | |
US7536582B1 (en) | Fault-tolerant match-and-set locking mechanism for multiprocessor systems | |
CN104065636B (zh) | 数据处理方法和系统 | |
US9749445B2 (en) | System and method for updating service information for across-domain messaging in a transactional middleware machine environment | |
US8073962B2 (en) | Queued transaction processing | |
CN106844014B (zh) | 分布式事务防悬挂的实现方法和装置 | |
CN110188110B (zh) | 一种构建分布式锁的方法及装置 | |
CN110968603B (zh) | 一种数据访问方法及装置 | |
KR20160147909A (ko) | 트랜잭셔널 환경에서 리소스 관리자(rm) 인스턴스 인지에 기초하여 공통 트랜잭션 식별자(xid) 최적화 및 트랜잭션 친화성을 지원하기 위한 시스템 및 방법 | |
CN111258976A (zh) | 分布式锁实现方法、系统、设备及存储介质 | |
CN113452774B (zh) | 消息推送方法、装置、设备及存储介质 | |
CN114238518A (zh) | 数据处理方法、装置、设备及存储介质 | |
CN113342554B (zh) | Io多路复用方法、介质、设备和操作系统 | |
CN113342507B (zh) | 一种分布式锁服务实现方法、装置及计算机设备 | |
CN113946427A (zh) | 用于多操作系统的任务处理方法、处理器及存储介质 | |
CN111930503A (zh) | 一种基于etcd的资源锁获取方法 | |
CN111143040A (zh) | 事务处理方法、装置、系统及存储介质 | |
CN114218317B (zh) | 进度信息管控方法、微服务装置、电子设备及存储介质 | |
US20040117372A1 (en) | System and method for controlling access to system resources | |
CN116547660A (zh) | 使用全局时间戳的分布式数据库事务的方法和装置 | |
CN111399753B (zh) | 写入图片的方法和装置 | |
CN112463748A (zh) | 一种存储系统文件锁标识方法、系统、终端及存储介质 | |
CN117555874B (zh) | 一种分布式数据库的日志存储方法、装置、设备及介质 | |
CN116414579B (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 |