CN108595282A - 一种高并发消息队列的实现方法 - Google Patents
一种高并发消息队列的实现方法 Download PDFInfo
- 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
Links
Classifications
-
- 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
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
-
- 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/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5017—Task decomposition
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/508—Monitor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Telephonic Communication Services (AREA)
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函数会立刻返回。
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)
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)
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 | 平安科技(深圳)有限公司 | 订单异步处理的方法、装置、存储介质及终端 |
-
2018
- 2018-05-02 CN CN201810410581.4A patent/CN108595282A/zh not_active Withdrawn
Patent Citations (10)
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)
Title |
---|
詹盼盼: "一种面向服务的消息中间件的研究与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
郭海川: "分布式流式计算***中消息传递中间件的设计与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (24)
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 | |
CN107729139B (zh) | 一种并发获取资源的方法和装置 | |
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 | |
Burns et al. | A review of Ada tasking | |
US20070130574A1 (en) | Method and system for event-based remote procedure call implementation in a distributed computing system | |
CN110795254A (zh) | 一种基于php处理高并发io的方法 | |
KR101357975B1 (ko) | 코루틴을 이용하여 원격 프로시저 호출 서비스를 제공하는 방법 및 장치 | |
US7765548B2 (en) | System, method and medium for using and/or providing operating system information to acquire a hybrid user/operating system lock | |
CN113051049B (zh) | 任务调度***、方法、电子设备及可读存储介质 | |
US20090187614A1 (en) | Managing Dynamically Allocated Memory in a Computer System | |
JP2022079764A (ja) | 同期制御システムおよび同期制御方法 | |
US8359602B2 (en) | Method and system for task switching with inline execution | |
WO2017099863A1 (en) | Method and apparatus for time-based scheduling of tasks | |
CN112749020A (zh) | 一种物联网操作***的微内核优化方法 | |
US20180357095A1 (en) | Asynchronous sequential processing execution | |
US7788529B2 (en) | Method for safely interrupting blocked work in a server | |
CN111858002B (zh) | 一种基于异步io的并发处理方法、***及装置 | |
CN117850995A (zh) | 一种协程调度方法、装置及存储介质 | |
CN112817771A (zh) | 一种共享多线程服务管理方法及装置 | |
WO2000039677A1 (en) | Method and apparatus for providing operating system scheduling operations | |
CN115885262A (zh) | 用于与微服务或其它计算环境一起使用的反应性展平映射的***和方法 | |
CN117874113A (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 |