CN108595282A - 一种高并发消息队列的实现方法 - Google Patents

一种高并发消息队列的实现方法 Download PDF

Info

Publication number
CN108595282A
CN108595282A CN201810410581.4A CN201810410581A CN108595282A CN 108595282 A CN108595282 A CN 108595282A CN 201810410581 A CN201810410581 A CN 201810410581A CN 108595282 A CN108595282 A CN 108595282A
Authority
CN
China
Prior art keywords
thread
global
message queue
message
worker
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.)
Withdrawn
Application number
CN201810410581.4A
Other languages
English (en)
Inventor
王毅群
赵娅利
蔡文
方金石
魏建平
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangzhou Giant Silicon Information Technology Co Ltd
Original Assignee
Guangzhou Giant Silicon Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Guangzhou Giant Silicon Information Technology Co Ltd filed Critical Guangzhou Giant Silicon Information Technology Co Ltd
Priority to CN201810410581.4A priority Critical patent/CN108595282A/zh
Publication of CN108595282A publication Critical patent/CN108595282A/zh
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5017Task decomposition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/508Monitor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

Abstract

本发明公开了一种高并发消息队列的实现方法,包括:创建一个FIFO的双向链表作为全局消息队列以及与其对应的消息队列线程;创建一个全局线程池,全局线程池设有一定数量的工作线程和数据源作业链表;消息队列线程检测到全局消息队列存在消息,从全局消息队列出口依次取出每个消息,生成作业,插入到全局线程池的数据源作业链表中,然后对工作线程进行广播;全局线程池的不同工作线程分别从数据源作业链表中取出一个作业,根据作业的类型执行对应消息回调函数,进行相应的业务处理,在执行完分别将处理结果返回给对应客户端。本发明能承载较大的数据请求并发量,且消费者将消息推送到消息队列后无需等待返回结果,提高响应速度,降低系统资源消耗。

Description

一种高并发消息队列的实现方法
技术领域
本发明涉及计算机通信技术,具体涉及一种高并发消息队列的实现方法。
背景技术
消息队列(Message Queue,MQ)是一种应用程序间的通信方式,消息发送后可以立即返回,由消息系统来确保消息的可靠传递,消息发布者只管把消息发布到MQ中而不用管谁来取,消息使用者只管从MQ中取消息而不管是谁发布的。
MQ常被用于业务解耦、最终一致性、广播、错峰流控等场景中,例如随着业务的发展订单量增长,需要提升系统服务的性能,这时可以将一些不需要立即生效的操作拆分出来异步执行,比如发放红包、发短信通知等,这种场景就是业务解耦,此时可以用MQ,在下单的主流程(比如扣减库存、生成相应单据)完成之后发送一条消息到MQ让主流程快速完结,而由另外的单独线程拉取MQ内的消息(或者由MQ推送消息),当发现MQ中有发红包或发短信之类的消息时,执行相应的业务逻辑。
目前,消息队列有ActiveMQ、RabbitMQ、ZeroMQ等,主要存在以下缺点:
(1)由于使用内核级别的同步对象,影响速度,且对数据未进行解耦,效率不高,无法承载较大的并发量;
(2)消费者将消息推送到消息队列后需要等待返回结果,影响处理速度;
(3)从消息队列取消息时需要创建工作线程执行消息内容,尤其在高并发的数据请求环境下,需要同时创建、启动众多工作线程,负载巨大。
发明内容
本发明所要解决的技术问题是现有的消息队列无法承载较大的并发量、消费者将消息推送到消息队列后需要等待返回结果、从消息队列取消息时需要创建工作线程执行消息内容的问题。
为了解决上述技术问题,本发明所采用的技术方案是提供一种高并发消息队列的实现方法,包括以下步骤:
步骤S10、创建一个FIFO的双向链表作为全局消息队列,以及与其对应的消息队列线程;
步骤S20、创建一个全局线程池,全局线程池设有一定数量的工作线程和数据源作业链表;
步骤S30、消息队列线程检测到全局消息队列中存在消息,从全局消息队列出口依次取出每个消息,生成作业Job,并插入到全局线程池的数据源作业链表中,然后对工作线程进行广播;
步骤S40、全局线程池的不同工作线程分别从数据源作业链表中取出一个作业,根据作业的类型,执行对应消息回调函数,进行相应的业务处理,并在执行完回调函数后,分别将处理结果返回给对应客户端。
在上述方法中,所述全局消息队列存储在内存中。
在上述方法中,所述全局线程池设有工作线程的数量是由内核数量决定的,工作线程数量为内核数目的5倍至15倍
在上述方法中,当并发大量消息请求时,全局线程池中已经没有空闲工作线程,此时消息队列线程不在从全局消息队列中取出消息,而是将无法处理的消息缓存在全局消息队列中,当有工作线程空闲时再进行处理。
在上述方法中,所述全局线程池中的工作线程采用一触即发的运行策略,具体为:
只要将作业Job插入到全局线程池的源数据作业链中,全局线程池中就有、且仅有一个工作线程立刻把该作业job取出并调用与该作业对应的回调函数对其进行处理,并将处理结果返回对应客户端;并通过内核定义的条件同步对象jobs_cond和互斥同步对象jobs_mutex实现通信和同步。
在上述方法中,全局线程池初始化时等待运行的工作线程数目为20个。
在上述方法中,利用一个消息队列管理组件MQ Manager记录全局消息队列的长度,全局线程池中工作线程的数量、工作线程运行的数量、工作线程空闲数量;
所述消息队列管理组件MQ Manager根据全局线程池的工作线程运行数量判断是否需要创建新的工作线程,满足当前高并发的数据请求环境下数据处理需求;并在数据请求进入平缓期,自动关闭无任务的工作线程。
在上述方法中,服务器各个业务线程调用推入函数MQ_PUSH将消息推送到全局消息队列;
消息队列线程不断轮询全局消息队列,当有消息存在时,消息队列线程调用取出函数MQ_PULL将消息从全局消息队列中取出。
在上述方法中,在高并发数据请求环境下,利用x86cmpxchg指令实现了一种无锁机制,解决了高并发下资源互斥时的原子操作,具体为:
一个工作线程调用cmpxchg函数获得锁,如果没有获得锁,工作线程不会阻塞,cmpxchg函数会立刻返回。
与现有技术相比,本发明消息队列的性能取决于CPU或内存的瓶颈(CPU或内存的处理速度远远高于磁盘等外设备的处理速度),消息队列能承载较大的数据请求并发量,通过将任务分解成一个一个小任务,并对各个小任务进行异步并发处理,使消费者将消息推送到消息队列后无需等待返回结果,在执行完回调函数MQ_CALLBACK后会根据消息返回给确定的客户端,从而实现数据解耦,并引入全局线程池对工作线程统一管理,从消息队列取消息时不需要再创建工作线程,可以立即执行消息内容,不仅提高响应速度,而且降低系统资源消耗,避免操作系统鲁棒性的降低。
附图说明
图1为本发明提供的一种高并发消息队列的实现方法的结构框架图;
图2为本发明提供的一种高并发消息队列的实现方法的流程图。
具体实施方式
在服务器模式下,及时数据请求,如果同步返回数据,服务器的吞吐量TPS,应当满足如下等式:
QPS=min{CPU,内存,外部接口,IO操作};
为了满足上述等式,本发明设计了一套解决思路,通过服务器内部组件把一个大任务分解成一个一个的小任务,实现数据的解耦,并将各个小任务进行异步并发处理,从而提高服务器吞吐量TPS,该设计的服务器的吞吐量TPS满足如下等式:
QPS=max{min{CPU,内存},min{外部接口,IO操作}};
因为,min{CPU,内存}>min{外部接口,IO操作};
所以,QPS=min{CPU,内存};
可见,本发明的性能取决于CPU或内存的瓶颈,由于CPU或内存的处理速度远远高于磁盘等外设备的处理速度,与现有技术取决于CPU、内存、外部接口或IO操作相比,性能高效,高效的性能就决定了消息队列能承载更大的并发量。下面结合说明书附图和具体实施方式对本发明做出详细说明。
如图1、图2所示,本发明提供的一种高并发消息队列的实现方法,包括以下步骤:
步骤S10、创建一个FIFO(First Input First Output,先入先出队列)的双向链表作为全局消息队列,以及与其对应的消息队列线程;
步骤S20、创建一个全局线程池,全局线程池设有一定数量的工作线程和数据源作业链表,即全局线程池是一个工作线程容器,其中,全局线程池设有工作线程的数量是由内核数量决定的,工作线程数量为内核数目的5倍至15倍;
步骤S30、消息队列线程检测到全局消息队列中存在消息(通过不断轮询全局消息队列检测其中是否有消息),从全局消息队列出口依次取出每个消息,生成作业Job,并插入到全局线程池的数据源作业链表中,然后对工作线程进行广播;
步骤S40、全局线程池的每个工作线程分别从数据源作业链表中取出一个作业,并根据作业的消息类型,执行对应消息回调函数MQ_CALLBACK,进行相应的业务处理,在执行完回调函数MQ_CALLBACK后将处理结果返回给对应客户端。
当系统进入高峰请求时期,本发明的全局消息队列的全局线程池中的工作线程对消息进行并发处理,提高单位时间内消息的处理量,从而可以抗住IO操作,外部接口等关键组件的访问压力,提高系统的抗压性高;而且由于全局消息队列为FIFO,每个业务线程只需将消息请求依次放入全局消息队列即可,消息队列线程会根据先进先出原则依次将消息取出,送入全局线程池的元数据链表进行处理,这样不管多少客户端进行消息请求,多少线程工作取消息,整个工作流程的各个环节都是具有单一性的,确保消息只被送达一次,从而提高消息传递安全性高。
在本发明中,当并发大量消息请求时,全局线程池中已经没有空闲工作线程,由于本发明的全局消息队列对存入消息的数量没有设置上限,此时消息队列线程不在从全局消息队列中取出消息,而是将无法处理的消息缓存在全局消息队列中,当有工作线程空闲时再进行处理,这种冗余机制不仅保证所有消息都能被处理,而且保证系统数据安全稳定运行。
全局消息队列存储在内存中,用于线程间的通信,CPU可以直接处理,不要从磁盘等其他外设备加载,更加轻捷、方便,进队Enqueue与出队Dequeue的运行性能远高于各种开源MQ组件,全局消息队列的数据结构为:
其中,workers是指向工作线程链表的指针,Waiting_jobs是指向数据源作业Job链表的指针。
在本发明中,消息队列线程具体执行代码如下:
Job*job=(Job*)malloc(sizeof(Job));//分配Job内存空间
job->job_function=ntyDaveMqHandleCallback;//设置回调函数指针
job->user_data=tag;//设置数据源
ntyThreadPoolPush(worker,job);//把job插入线程池的作业链
本发明的全局线程池初始化时等待运行的工作线程数目为20个,全局线程池中的工作线程采用一触即发的运行策略,避免在高并发的数据请求环境下,同时启动众多线程,出现操作系统负载过大,致使系统出现处理异常。所述一触即发的运行策略为:只要将作业Job插入到全局线程池的源数据作业链中,全局线程池中就有、且仅有一个工作线程立刻把该作业job取出并调用与该作业对应的回调函数对其进行处理,并将处理结果返回对应客户端;并通过内核定义的条件同步对象jobs_cond和互斥同步对象jobs_mutex实现通信和同步。
在本发明中通过一个消息队列管理组件MQ Manager,记录全局消息队列的长度,全局线程池中工作线程的数量、工作线程运行的数量、工作线程空闲数量,并根据全局线程池的工作线程运行数量判断是否需要创建新的工作线程,满足当前高并发的数据请求环境下数据处理需求,并在数据请求进入平缓期,自动关闭无任务工作线程,释放操作系统资源。
本发明引入上述消息队列管理组件进行工作线程统一管理,带来如下
有益效果:
(1)不再不断重复地创建与销毁线程,降低系统资源消耗,避免降低操作系统的鲁棒性;
(2)从全局消息队列里面取消息进行处理时,不需要创建工作线程,能立即执行,提高响应速度。
在本发明中,因为全局线程池的工作线程都是已经创建好的,在运行时,只需非常方便地进行MQ_PUSH与MQ_PULL原语操作即可,不需要做其它工作,即服务器各个业务线程调用推入函数MQ_PUSH将消息推送到全局消息队列,再由消息队列线程调用取出函数MQ_PULL将其从全局消息队列中取出,函数MQ_PUSH实现代码如下:
VALUE_TYPE*tag=malloc(sizeof(VALUE_TYPE));//分配tag内存空间
memset(tag,0,sizeof(VALUE_TYPE));//内存空间初始化置0
tag->Tag=malloc(sLen+1);//分配Tag的内存空间
memset(tag->Tag,0,sLen+1);//初始化
memcpy(tag->Tag,filename,sLen);//把filename保存到Tag
tag->length=sLen;//设置length
tag->fromId=senderId;//设置源设备ID
tag->toId=gId;//设置目标设备ID
tag->Type=MSG_TYPE_VOICE_DATA_REQ_HANDLE;//设置消息类型
tag->cb=ntyVoiceDataReqHandle;//设置回调函数
ntyDaveMqPushMessage(tag);//把tag放入消息队列
在本发明中,消息队列线程不断轮询全局消息队列,判断是否有消息存在,有消息存在,调用函数MQ_PULL将其取出,函数MQ_PULL实现代码如下:
在高并发数据请求环境下,通常采用线程锁pthread_mutex_lock或者采用二阶锁实现线程间的同步,从而使得服务器性能非常低下,本发明利用x86cmpxchg指令实现了一种无锁机制,解决了高并发下资源互斥时的原子操作,并没有用到操作系统的内核对象,所以实现了一种无锁的同步机制,具体为:一个工作线程调用cmpxchg函数获得锁,如果没有获得锁,工作线程不会阻塞,cmpxchg函数会立刻返回,从而提高了实时性和并发性。
cmpxchg函数实现代码如下:
本发明并不局限于上述最佳实施方式,任何人应该得知在本发明的启示下做出的结构变化,凡是与本发明具有相同或相近的技术方案,均落入本发明的保护范围之内。

Claims (9)

1.一种高并发消息队列的实现方法,其特征在于,包括以下步骤:
步骤S10、创建一个FIFO的双向链表作为全局消息队列,以及与其对应的消息队列线程;
步骤S20、创建一个全局线程池,全局线程池设有一定数量的工作线程和数据源作业链表;
步骤S30、消息队列线程检测到全局消息队列中存在消息,从全局消息队列出口依次取出每个消息,生成作业Job,并插入到全局线程池的数据源作业链表中,然后对工作线程进行广播;
步骤S40、全局线程池的不同工作线程分别从数据源作业链表中取出一个作业,根据作业的类型,执行对应消息回调函数,进行相应的业务处理,并在执行完回调函数后,分别将处理结果返回给对应客户端。
2.根据权利要求1所述的方法,其特征在于,所述全局消息队列存储在内存中。
3.根据权利要求1所述的方法,其特征在于,所述全局线程池设有工作线程的数量是由内核数量决定的,工作线程数量为内核数目的5倍至15倍。
4.根据权利要求1所述的方法,其特征在于,当并发大量消息请求时,全局线程池中已经没有空闲工作线程,此时消息队列线程不在从全局消息队列中取出消息,而是将无法处理的消息缓存在全局消息队列中,当有工作线程空闲时再进行处理。
5.根据权利要求1所述的方法,其特征在于,所述全局线程池中的工作线程采用一触即发的运行策略,具体为:
只要将作业Job插入到全局线程池的源数据作业链中,全局线程池中就有、且仅有一个工作线程立刻把该作业job取出并调用与该作业对应的回调函数对其进行处理,并将处理结果返回对应客户端;并通过内核定义的条件同步对象jobs_cond和互斥同步对象jobs_mutex实现通信和同步。
6.根据权利要求1所述的方法,其特征在于,全局线程池初始化时等待运行的工作线程数目为20个。
7.根据权利要求1所述的方法,其特征在于,利用一个消息队列管理组件MQ Manager记录全局消息队列的长度,全局线程池中工作线程的数量、工作线程运行的数量、工作线程空闲数量;
所述消息队列管理组件MQ Manager根据全局线程池的工作线程运行数量判断是否需要创建新的工作线程,满足当前高并发的数据请求环境下数据处理需求;并在数据请求进入平缓期,自动关闭无任务的工作线程。
8.根据权利要求1所述的方法,其特征在于,服务器各个业务线程调用推入函数MQ_PUSH将消息推送到全局消息队列;
消息队列线程不断轮询全局消息队列,当有消息存在时,消息队列线程调用取出函数MQ_PULL将消息从全局消息队列中取出。
9.根据权利要求1所述的方法,其特征在于,在高并发数据请求环境下,利用x86cmpxchg指令实现了一种无锁机制,解决了高并发下资源互斥时的原子操作,具体为:
一个工作线程调用cmpxchg函数获得锁,如果没有获得锁,工作线程不会阻塞,cmpxchg函数会立刻返回。
CN201810410581.4A 2018-05-02 2018-05-02 一种高并发消息队列的实现方法 Withdrawn CN108595282A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810410581.4A CN108595282A (zh) 2018-05-02 2018-05-02 一种高并发消息队列的实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810410581.4A CN108595282A (zh) 2018-05-02 2018-05-02 一种高并发消息队列的实现方法

Publications (1)

Publication Number Publication Date
CN108595282A true CN108595282A (zh) 2018-09-28

Family

ID=63619531

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810410581.4A Withdrawn CN108595282A (zh) 2018-05-02 2018-05-02 一种高并发消息队列的实现方法

Country Status (1)

Country Link
CN (1) CN108595282A (zh)

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108989387A (zh) * 2018-06-07 2018-12-11 阿里巴巴集团控股有限公司 控制异步请求的方法、装置及设备
CN110096378A (zh) * 2019-04-29 2019-08-06 杭州涂鸦信息技术有限公司 一种线程间通信方法及相关装置
CN110166730A (zh) * 2019-06-06 2019-08-23 苏州科达科技股份有限公司 一种请求处理方法、装置、设备及可读存储介质
CN110515713A (zh) * 2019-08-13 2019-11-29 北京安盟信息技术股份有限公司 一种任务调度方法、设备和计算机存储介质
CN110704110A (zh) * 2019-09-30 2020-01-17 浪潮软件股份有限公司 一种提高系统高并发情况下的响应速度的方法和装置
CN111143065A (zh) * 2019-12-25 2020-05-12 杭州安恒信息技术股份有限公司 一种数据处理方法、装置、设备及介质
CN112463064A (zh) * 2020-12-07 2021-03-09 无锡众星微系统技术有限公司 基于双链表结构的i/o指令管理方法及装置
CN112486702A (zh) * 2020-11-27 2021-03-12 中船重工(武汉)凌久电子有限责任公司 基于多核多处理器并行系统的全局消息队列实现方法
CN112799822A (zh) * 2021-02-09 2021-05-14 北京字节跳动网络技术有限公司 一种程序启动方法、装置、设备及介质
US11018965B1 (en) 2020-01-24 2021-05-25 Red Hat, Inc. Serverless function scaling
CN113268204A (zh) * 2021-05-26 2021-08-17 绿芯半导体(厦门)有限公司 一种提高ssd多通道并发数据读写效率的方法
CN113312187A (zh) * 2021-06-02 2021-08-27 福建天晴数码有限公司 基于双向链表的消息多线程消费顺序确认的方法及装置
US11269686B2 (en) 2019-11-25 2022-03-08 Red Hat, Inc. Adaptive consumer thread pool
CN114490112A (zh) * 2021-12-20 2022-05-13 阿里巴巴(中国)有限公司 消息处理方法、设备及系统
CN115099476A (zh) * 2022-06-15 2022-09-23 国网湖北省电力有限公司电力科学研究院 一种基于循环差集理论的电力物联网异步调度方法
CN115658349A (zh) * 2022-11-17 2023-01-31 南京天创电子技术有限公司 一种基于信号的线程间通信方法

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1859325A (zh) * 2006-02-14 2006-11-08 华为技术有限公司 基于链表的进程间消息传递方法
CN101373474A (zh) * 2008-09-02 2009-02-25 北京开拓天际信息技术有限公司 海量数据实时处理架构及用于该架构的实时随需处理平台
CN102360310A (zh) * 2011-09-28 2012-02-22 中国电子科技集团公司第二十八研究所 一种分布式系统环境下的多任务进程监视方法和监视系统
CN102880507A (zh) * 2012-09-12 2013-01-16 科立讯通信股份有限公司 一种链式结构消息申请及分发的方法
CN103814557A (zh) * 2011-09-23 2014-05-21 国际商业机器公司 排队消息的并发处理
CN104156261A (zh) * 2014-08-11 2014-11-19 浪潮(北京)电子信息产业有限公司 多控制器之间任务处理的方法和装置
CN105119752A (zh) * 2015-09-08 2015-12-02 北京京东尚科信息技术有限公司 一种分布式日志采集方法、装置及系统
CN105468784A (zh) * 2015-12-24 2016-04-06 北京京东尚科信息技术有限公司 处理高并发流量的方法及其装置
US9436532B1 (en) * 2011-12-20 2016-09-06 Emc Corporation Method and system for implementing independent message queues by specific applications
CN107679931A (zh) * 2017-08-17 2018-02-09 平安科技(深圳)有限公司 订单异步处理的方法、装置、存储介质及终端

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1859325A (zh) * 2006-02-14 2006-11-08 华为技术有限公司 基于链表的进程间消息传递方法
CN101373474A (zh) * 2008-09-02 2009-02-25 北京开拓天际信息技术有限公司 海量数据实时处理架构及用于该架构的实时随需处理平台
CN103814557A (zh) * 2011-09-23 2014-05-21 国际商业机器公司 排队消息的并发处理
CN102360310A (zh) * 2011-09-28 2012-02-22 中国电子科技集团公司第二十八研究所 一种分布式系统环境下的多任务进程监视方法和监视系统
US9436532B1 (en) * 2011-12-20 2016-09-06 Emc Corporation Method and system for implementing independent message queues by specific applications
CN102880507A (zh) * 2012-09-12 2013-01-16 科立讯通信股份有限公司 一种链式结构消息申请及分发的方法
CN104156261A (zh) * 2014-08-11 2014-11-19 浪潮(北京)电子信息产业有限公司 多控制器之间任务处理的方法和装置
CN105119752A (zh) * 2015-09-08 2015-12-02 北京京东尚科信息技术有限公司 一种分布式日志采集方法、装置及系统
CN105468784A (zh) * 2015-12-24 2016-04-06 北京京东尚科信息技术有限公司 处理高并发流量的方法及其装置
CN107679931A (zh) * 2017-08-17 2018-02-09 平安科技(深圳)有限公司 订单异步处理的方法、装置、存储介质及终端

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
詹盼盼: "一种面向服务的消息中间件的研究与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *
郭海川: "分布式流式计算系统中消息传递中间件的设计与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Cited By (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108989387A (zh) * 2018-06-07 2018-12-11 阿里巴巴集团控股有限公司 控制异步请求的方法、装置及设备
CN110096378B (zh) * 2019-04-29 2021-01-08 杭州涂鸦信息技术有限公司 一种线程间通信方法及相关装置
CN110096378A (zh) * 2019-04-29 2019-08-06 杭州涂鸦信息技术有限公司 一种线程间通信方法及相关装置
CN110166730B (zh) * 2019-06-06 2021-08-27 苏州科达科技股份有限公司 一种请求处理方法、装置、设备及可读存储介质
CN110166730A (zh) * 2019-06-06 2019-08-23 苏州科达科技股份有限公司 一种请求处理方法、装置、设备及可读存储介质
CN110515713A (zh) * 2019-08-13 2019-11-29 北京安盟信息技术股份有限公司 一种任务调度方法、设备和计算机存储介质
CN110704110A (zh) * 2019-09-30 2020-01-17 浪潮软件股份有限公司 一种提高系统高并发情况下的响应速度的方法和装置
US11269686B2 (en) 2019-11-25 2022-03-08 Red Hat, Inc. Adaptive consumer thread pool
CN111143065A (zh) * 2019-12-25 2020-05-12 杭州安恒信息技术股份有限公司 一种数据处理方法、装置、设备及介质
CN111143065B (zh) * 2019-12-25 2023-08-22 杭州安恒信息技术股份有限公司 一种数据处理方法、装置、设备及介质
US11018965B1 (en) 2020-01-24 2021-05-25 Red Hat, Inc. Serverless function scaling
CN112486702A (zh) * 2020-11-27 2021-03-12 中船重工(武汉)凌久电子有限责任公司 基于多核多处理器并行系统的全局消息队列实现方法
CN112486702B (zh) * 2020-11-27 2024-02-13 中船重工(武汉)凌久电子有限责任公司 基于多核多处理器并行系统的全局消息队列实现方法
CN112463064A (zh) * 2020-12-07 2021-03-09 无锡众星微系统技术有限公司 基于双链表结构的i/o指令管理方法及装置
CN112463064B (zh) * 2020-12-07 2022-02-08 无锡众星微系统技术有限公司 基于双链表结构的i/o指令管理方法及装置
CN112799822A (zh) * 2021-02-09 2021-05-14 北京字节跳动网络技术有限公司 一种程序启动方法、装置、设备及介质
CN113268204B (zh) * 2021-05-26 2022-10-18 绿芯半导体(厦门)有限公司 一种提高ssd多通道并发数据读写效率的方法
CN113268204A (zh) * 2021-05-26 2021-08-17 绿芯半导体(厦门)有限公司 一种提高ssd多通道并发数据读写效率的方法
CN113312187B (zh) * 2021-06-02 2023-06-16 福建天晴数码有限公司 基于双向链表的消息多线程消费顺序确认的方法及装置
CN113312187A (zh) * 2021-06-02 2021-08-27 福建天晴数码有限公司 基于双向链表的消息多线程消费顺序确认的方法及装置
CN114490112A (zh) * 2021-12-20 2022-05-13 阿里巴巴(中国)有限公司 消息处理方法、设备及系统
CN115099476A (zh) * 2022-06-15 2022-09-23 国网湖北省电力有限公司电力科学研究院 一种基于循环差集理论的电力物联网异步调度方法
CN115099476B (zh) * 2022-06-15 2023-04-28 国网湖北省电力有限公司电力科学研究院 一种基于循环差集理论的电力物联网异步调度方法
CN115658349A (zh) * 2022-11-17 2023-01-31 南京天创电子技术有限公司 一种基于信号的线程间通信方法

Similar Documents

Publication Publication Date Title
CN108595282A (zh) 一种高并发消息队列的实现方法
US8359595B2 (en) Generic application server and method of operation therefor
US7406699B2 (en) Enhanced runtime hosting
US7246167B2 (en) Communication multiplexor using listener process to detect newly active client connections and passes to dispatcher processes for handling the connections
US7900210B2 (en) Application connector parallelism in enterprise application integration systems
JP5516398B2 (ja) マルチプロセッサシステム、マルチプロセッサシステムのos間デバイス共有方法
Burns et al. A review of Ada tasking
US8065690B2 (en) Method and system for event-based remote procedure call implementation in a distributed computing system
CN110795254A (zh) 一种基于php处理高并发io的方法
CN101464810A (zh) 服务程序处理方法及服务器
CN111427751A (zh) 基于异步处理机制对业务进行处理的方法及系统
US7765548B2 (en) System, method and medium for using and/or providing operating system information to acquire a hybrid user/operating system lock
KR20130041540A (ko) 코루틴을 이용하여 원격 프로시저 호출 서비스를 제공하는 방법 및 장치
Sai et al. Producer-Consumer problem using Thread pool
JP7346649B2 (ja) 同期制御システムおよび同期制御方法
US8359602B2 (en) Method and system for task switching with inline execution
US10713085B2 (en) Asynchronous sequential processing execution
EP3387529A1 (en) Method and apparatus for time-based scheduling of tasks
CN112749020A (zh) 一种物联网操作系统的微内核优化方法
US7788529B2 (en) Method for safely interrupting blocked work in a server
CN111858002B (zh) 一种基于异步io的并发处理方法、系统及装置
WO2022174442A1 (zh) 多核处理器、多核处理器的处理方法及相关设备
CN117850995A (zh) 一种协程调度方法、装置及存储介质
Fischer Elevating System Requests to First-Class Citizens of Work-Stealing Concurrency Platforms
CN112817771A (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
WW01 Invention patent application withdrawn after publication
WW01 Invention patent application withdrawn after publication

Application publication date: 20180928