CN107122239A - 一种多线程事件分发方法和系统 - Google Patents
一种多线程事件分发方法和系统 Download PDFInfo
- Publication number
- CN107122239A CN107122239A CN201710295744.4A CN201710295744A CN107122239A CN 107122239 A CN107122239 A CN 107122239A CN 201710295744 A CN201710295744 A CN 201710295744A CN 107122239 A CN107122239 A CN 107122239A
- Authority
- CN
- China
- Prior art keywords
- event
- server
- client
- successively
- queue
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority 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/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明涉及一种多线程事件分发方法和系统,包括:客户端向连接服务器发送客户端事件;连接服务器获取客户端事件,当客户端事件为远程调用类事件,且连接服务器中没有客户端事件对应的远程调用类处理器时,将客户端事件发送给消息服务器;当应用服务器从消息服务器中获取客户端事件,处理客户端事件并得到对应的服务器事件时,连接服务器获取服务器事件,并按照服务器事件的优先级顺序对服务器事件进行处理,并向客户端返回处理结果。本发明对服务器事件进行优先级分类,并按照优先级从高到低的顺序,依次处理,且每次处理均采用独立的线程,极大地提高了事件处理的速度。
Description
技术领域
本发明涉及数据处理领域,特别涉及一种多线程事件分发方法和系统。
背景技术
事件分发机制是基于Java的开发的系统中比较重要的一块。事件类型有很多种,但现有技术的事件分发机制没有对事件进行分类,也不能采用独立的线程对事件进行处理,因此处理速度慢、处理效率也不高。
发明内容
本发明提供了一种多线程事件分发方法和系统,解决了现有技术的事件分发机制处理速度慢、效率低的技术问题。
本发明解决上述技术问题的技术方案如下:一种多线程事件分发方法,包括以下步骤:
步骤1、客户端向连接服务器发送客户端事件;
步骤2、所述连接服务器获取所述客户端事件,当所述客户端事件为远程调用类事件,且所述连接服务器中没有所述客户端事件对应的远程调用类处理器时,将所述客户端事件发送给消息服务器;
步骤3、当应用服务器从所述消息服务器中获取所述客户端事件,处理所述客户端事件并得到对应的服务器事件时,所述连接服务器获取所述服务器事件,并按照所述服务器事件的优先级顺序对所述服务器事件进行处理,并向客户端返回处理结果。
本发明的有益效果是:本发明对服务器事件进行优先级分类,并按照优先级从高到低的顺序,依次处理,且每次处理均采用独立的线程,极大地提高了事件处理的速度。
在上述技术方案的基础上,本发明还可以做如下改进。
进一步,所述步骤3包括:
步骤3.1、当应用服务器从所述消息服务器中获取所述客户端事件,处理所述客户端事件并得到对应的服务器事件时,所述连接服务器中的缓存引擎从所述消息服务器中监听并获取所述服务器事件;
步骤3.2、根据预注册的服务器事件优先处理消息主题,所述缓存引擎将所述服务器事件存储到不同的优先级消息队列中,所述优先级消息队列包括低优先级消息队列、普通级消息队列和高优先级消息队列;
步骤3.3、缓存引擎依次对所述高优先级消息队列、所述普通级消息队列和所述低优先级消息队列中的所述服务器事件进行处理,并向所述连接服务器中的每个会话控制模型返回缓存引擎处理结果,其中,所述会话控制模型有多个,且与客户端一一对应;
步骤3.4、所述会话控制模型处理所述缓存引擎处理结果,并向客户端返回最终处理结果。
本发明的进一步有益效果是:按照高优先级、普通级和低优先级的顺序,缓存引擎依次对所述高优先级消息队列、所述普通级消息队列和所述低优先级消息队列中的所述服务器事件进行处理,提高了服务器事件的处理效率。
进一步,所述步骤3.3包括:
步骤3.3.1、缓存引擎中的高优先级事件线程从所述高优先级消息队列中依次取出高优先级服务器事件,并将所述高优先级服务器事件依次放入每个所述会话控制模型中的优先事件队列中,所述高优先级服务器事件为直接消息事件;
则所述步骤3.4包括:
步骤3.4.1、每个所述会话控制模型中的优先更新线程从所述优先事件队列中依次取出所述高优先级服务器事件,并将所有的所述高优先级服务器事件封装为直接事件处理器,并发送所述直接事件处理器至所述会话控制模型对应的客户端。
本发明的进一步有益效果是:对于高优先级的服务器事件,缓存引擎通过使用高优先级事件线程获取高优先级服务器事件,并依次将高优先级服务器事件发送至会话控制模型,会话控制模型通过优先更新线程将所有高优先级服务器事件封装为直接事件处理器,并直接发送给客户端,由每个客户端自行去处理直接事件处理器,极大地提高了服务器事件高优先级服务器事件的处理效率,相应的,也提高了缓存引擎和会话控制模型其他服务器事件的处理效率。
进一步,所述步骤3.3还包括:
步骤3.3.2、缓存引擎中的事件线程从所述普通级消息队列中依次取出普通级服务器事件,依次将所述普通级服务器事件存储到会话控制模型事件队列中;
步骤3.3.3、所述缓存引擎中的第一会话控制模型发送线程依次将所述普通级服务器事件从所述会话控制模型事件队列中取出,并依次将所述普通级服务器事件发送至每个会话控制模型;
则步骤3.4还包括:
步骤3.4.2、每个所述会话控制模型调用其内的事件处理方法依次将所述普通级服务器事件放入到所述会话控制模型中的事件队列中;
步骤3.4.3、所述会话控制模型中的第二会话控制模型发送线程依次将所述普通级服务器事件从所述事件队列中取出,并通知所述会话控制模型中所有的视图数据模型和直接事件处理器依次处理所述普通级服务器事件;
步骤3.4.4、所述直接事件处理器还将处理得到的第一处理结果依次放入到直接返回队列中,所述会话控制模型中的更新线程依次将所述第一处理结果从所述直接返回队列中取出并封装为直接类消息返回给客户端,所述视图数据模型还将处理得到的第二处理结果发送至客户端,所述第二处理结果为视图变更内容。
进一步,所述步骤3.3中,缓存引擎中的事件线程从所述普通级消息队列中依次取出普通级服务器事件后,还包括:
步骤3.3.4、调用所述缓存引擎中的缓存类事件处理器依次处理所述普通级服务器事件;
步骤3.3.5、所述缓存类事件处理器依次得到每个所述普通级服务器事件对应的普通级服务器事件处理结果列表,并依次发送所述普通级服务器事件处理结果列表至每个所述会话控制模型;
则步骤3.4还包括:
步骤3.4.5、每个所述会话控制模型调用其内的事件处理方法依次将所述普通级服务器事件处理结果列表放入到所述会话控制模型中的所述事件队列中;
步骤3.4.6、所述会话控制模型中的所述第二会话控制模型发送线程依次将所述普通级服务器事件处理结果列表从所述事件队列中取出,并通知所述会话控制模型中所有的视图数据模型和直接事件处理器依次处理所述普通级服务器事件处理结果列表;
步骤3.4.7、所述直接事件处理器还将处理得到的第三处理结果依次放入到所述直接返回队列中,所述会话控制模型中的所述更新线程依次将所述第三处理结果从所述直接返回队列中取出并封装为直接类消息返回给客户端,所述视图数据模型依次处理得到第四处理结果,并将所述第四处理结果发送至客户端,所述第四处理结果为视图变更内容。
本发明的进一步有益效果是:处理过程中采用多种独立线程,互补干扰,进一步提高了服务器事件的处理效率。
为解决本发明的技术问题,还提供了一种多线程事件分发系统,包括:连接服务器、消息服务器、应用服务器和至少一个客户端;
所述客户端,用于向连接服务器发送客户端事件;
所述连接服务器,用于获取所述客户端事件,当所述客户端事件为远程调用类事件,且所述连接服务器中没有所述客户端事件对应的远程调用类处理器时,将所述客户端事件发送给所述消息服务器;
所述应用服务器,用于从所述消息服务器中获取所述客户端事件,处理所述客户端事件并得到对应的服务器事件;
所述连接服务器,还用于获取所述服务器事件,并按照所述服务器事件的优先级顺序对所述服务器事件进行处理,并向客户端返回处理结果。
本发明的有益效果是:本发明对服务器事件进行优先级分类,并按照优先级从高到低的顺序,依次处理,且每次处理均采用独立的线程,极大地提高了事件处理的速度。
进一步,所述连接服务器包括缓存引擎和会话控制模型,其中,所述会话控制模型有多个,且与客户端一一对应;
当应用服务器从所述消息服务器中获取所述客户端事件,处理所述客户端事件并得到对应的服务器事件时,
所述缓存引擎用于:从所述消息服务器中监听并获取所述服务器事件;根据预注册的服务器事件优先处理消息主题,将所述服务器事件存储到不同的优先级消息队列中,所述优先级消息队列包括低优先级消息队列、普通级消息队列和高优先级消息队列;依次对高优先级消息队列、普通级消息队列和低优先级消息队列中的所述服务器事件进行处理,并向每个所述会话控制模型返回缓存引擎处理结果;
所述会话控制模型用于:处理所述缓存引擎处理结果,并向客户端返回最终处理结果。
进一步,所述缓存引擎包括:高优先级事件线程;所述会话控制模型包括:优先事件队列和优先更新线程;
所述高优先级事件线程,用于从所述高优先级消息队列中依次取出高优先级服务器事件,并将所述高优先级服务器事件依次放入每个所述会话控制模型中的所述优先事件队列中,所述高优先级服务器事件为直接消息事件;
所述优先更新线程,用于从所述优先事件队列中依次取出所述高优先级服务器事件,并将所有的所述高优先级服务器事件封装为直接事件处理器,并发送所述直接事件处理器至所述会话控制模型对应的客户端。
本发明的进一步有益效果是:对于高优先级的服务器事件,缓存引擎通过使用高优先级事件线程获取高优先级服务器事件,并依次将高优先级服务器事件发送至会话控制模型,会话控制模型通过优先更新线程将所有高优先级服务器事件封装为直接事件处理器,并直接发送给客户端,由每个客户端自行去处理直接事件处理器,极大地提高了服务器事件高优先级服务器事件的处理效率,相应的,也提高了缓存引擎和会话控制模型其他服务器事件的处理效率。
进一步,所述缓存引擎还包括:事件线程,会话控制模型事件队列,第一会话控制模型发送线程和缓存类事件处理器;所述会话控制模型还包括:事件处理方法,事件队列,第二会话控制模型发送线程,视图处理模型,直接事件处理器,直接返回队列和更新线程,其中所述直接事件处理器有多个;
所述事件线程,用于从所述普通级消息队列中依次取出普通级服务器事件,依次将所述普通级服务器事件存储到所述会话控制模型事件队列中;
所述第一会话控制模型发送线程,用于依次将所述普通级服务器事件从所述会话控制模型事件队列中取出,并依次将所述普通级服务器事件发送至每个所述会话控制模型;
所述事件处理方法,用于依次将所述普通级服务器事件放入到所述事件队列中;
所述第二会话控制模型发送线程,用于依次将所述服务器事件从所述事件队列中取出,并通知所有的所述视图数据模型和所述直接事件处理器依次处理所述普通级服务器事件;所述直接事件处理器,还用于将处理得到的第一处理结果依次放入到所述直接返回队列中;所述更新线程,用于依次将所述第一处理结果从所述直接返回队列中取出并封装为直接类消息返回给客户端;所述视图数据模型,还用于将处理得到的第二处理结果发送至客户端,所述第二处理结果为视图变更内容。
进一步,所述事件线程,还用于调用所述缓存类事件处理器依次处理所述普通级服务器事件;
所述事件处理方法,还用于依次将所述普通级服务器事件处理结果列表放入到所述事件队列中;
所述第二会话控制模型发送线程,还用于依次将所述普通级服务器事件处理结果列表从所述事件队列中取出,并通知所述会话控制模型中所有的视图数据模型和直接事件处理器依次处理所述普通级服务器事件处理结果列表;所述直接事件处理器,还用于将处理得到的第三处理结果依次放入到所述直接返回队列中,所述更新线程,还用于依次将所述第三处理结果从所述直接返回队列中取出并封装为直接类消息返回给客户端,所述视图数据模型,还用于依次处理得到第四处理结果,并将所述第四处理结果发送至客户端,所述第四处理结果为视图变更内容;
所述缓存类事件处理器,用于依次处理所述普通级服务器事件,得到每个所述普通级服务器事件对应的普通级服务器事件处理结果列表,依次发送所述普通级服务器事件处理结果列表至每个所述会话控制模型。
附图说明
图1为本发明实施例一提供的一种多线程事件分发方法的流程示意图;
图2为图1中步骤130的流程示意图;
图3为本发明实施例二提供的一种多线程事件分发方法的流程示意图;
图4为本发明实施例三提供的一种多线程事件分发系统的示意性结构图;
图5为本发明实施例四提供的一种多线程事件分发系统的示意图结构图。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
实施例一
一种多线程事件分发方法1000,如图1所示,包括:
步骤1100、客户端向连接服务器发送客户端事件。
步骤1200、连接服务器获取客户端事件,当客户端事件为远程调用类事件,且连接服务器中没有客户端事件对应的远程调用类处理器时,将客户端事件发送给消息服务器。
步骤1300、当应用服务器从消息服务器中获取客户端事件,处理客户端事件并得到对应的服务器事件时,连接服务器获取服务器事件,并按照服务器事件的优先级顺序对服务器事件进行处理,并向客户端返回处理结果。
其中,如图2所示,步骤1300包括:
步骤1310、当应用服务器从消息服务器中获取客户端事件,处理客户端事件并得到对应的服务器事件时,连接服务器中的缓存引擎从消息服务器中监听并获取服务器事件。
步骤1320、根据预注册的服务器事件优先处理消息主题,缓存引擎将服务器事件存储到不同的优先级消息队列中,其中,优先级消息队列包括低优先级消息队列、普通级消息队列和高优先级消息队列。
步骤1330、缓存引擎依次对高优先级消息队列、普通级消息队列和低优先级消息队列中的所述服务器事件进行处理,并向连接服务器中的每个会话控制模型返回缓存引擎处理结果,其中,会话控制模型有多个,且与客户端一一对应。
步骤1340、会话控制模型处理缓存引擎处理结果,并向客户端返回最终处理结果。
实施例二
一种多线程事件分发方法1000,如图3所示,包括:
步骤1100、客户端向连接服务器发送客户端事件。
步骤1200、连接服务器获取客户端事件,当客户端事件为远程调用类事件,且连接服务器中没有客户端事件对应的远程调用类处理器时,将客户端事件发送给消息服务器。
步骤1310、当应用服务器从消息服务器中获取客户端事件,处理客户端事件并得到对应的服务器事件时,连接服务器中的缓存引擎从消息服务器中监听并获取服务器事件。
步骤1320、根据预注册的服务器事件优先处理消息主题,缓存引擎将服务器事件存储到不同的优先级消息队列中,其中,优先级消息队列包括低优先级消息队列、普通级消息队列和高优先级消息队列。
步骤1331、缓存引擎中的高优先级事件线程从高优先级消息队列中依次取出高优先级服务器事件,高优先级服务器事件为直接消息事件,并将高优先级服务器事件依次放入每个会话控制模型中的优先事件队列中。
步骤1341、每个会话控制模型中的优先更新线程从优先事件队列中依次取出高优先级服务器事件,并将所有的高优先级服务器事件封装为直接事件处理器,并发送直接事件处理器至会话控制模型对应的客户端。
步骤1332、缓存引擎中的事件线程从普通级消息队列中依次取出普通级服务器事件,依次将普通级服务器事件存储到会话控制模型事件队列中。
步骤1333、缓存引擎中的第一会话控制模型发送线程依次将普通级服务器事件从会话控制模型事件队列中取出,并依次将普通级服务器事件发送至每个会话控制模型。
步骤1342、每个会话控制模型调用其内的事件处理方法依次将普通级服务器事件放入到会话控制模型中的事件队列中。
步骤1343、会话控制模型中的第二会话控制模型发送线程依次将服务器事件从事件队列中取出,并通知会话控制模型中所有的视图数据模型和直接事件处理器依次处理普通级服务器事件。
步骤1344、直接事件处理器还将处理得到的第一处理结果依次放入到直接返回队列中,会话控制模型中的更新线程依次将第一处理结果从直接返回队列中取出并封装为直接类消息返回给客户端,视图数据模型还将处理得到的第二处理结果发送至客户端,第二处理结果为视图变更内容。
步骤1334、缓存引擎调用其内的缓存类事件处理器依次处理普通级服务器事件。
步骤1335、缓存类事件处理器依次得到每个普通级服务器事件对应的普通级服务器事件处理结果列表,并依次发送普通级服务器事件处理结果列表至每个会话控制模型。
步骤1345、每个会话控制模型调用其内的事件处理方法依次将普通级服务器事件处理结果列表放入到会话控制模型中的事件队列中。
步骤1346、会话控制模型中的第二会话控制模型发送线程依次将普通级服务器事件处理结果列表从事件队列中取出,并通知会话控制模型中所有的视图数据模型和直接事件处理器依次处理普通级服务器事件处理结果列表。
步骤1347、直接事件处理器还将处理得到的第三处理结果依次放入到直接返回队列中,会话控制模型中的更新线程依次将第三处理结果从直接返回队列中取出并封装为直接类消息返回给客户端,视图数据模型依次处理得到第四处理结果,并将第四处理结果发送至客户端,第四处理结果为视图变更内容。
其中,客户端事件包括注册类事件、远程调用类事件和缓存处理类事件。
需要说明的是,连接服务器对低优先级消息队列中的服务器事件处理过程同普通级消息队列,在此不再赘述。
需要说明的是,直接类消息简称为D类消息。直接消息事件简称为D消息事件。直接事件处理器简称为D事件处理器,直接事件处理器用于处理非缓存相关的服务器事件,例如,处理客户端直接发送过来的简单操作性事件,如点击进入页面按钮、滑屏等。缓存类事件处理器简称为MR事件处理器,用于处理缓存相关的服务器事件,例如,处理从消息服务器中监听到的服务器事件,如视图更改请求事件。
实施例三
本发明还提供一种多线程事件分发系统2000,如图4所示,包括:连接服务器、消息服务器、应用服务器和至少一个客户端。其中,客户端,用于向连接服务器发送客户端事件;连接服务器,用于获取客户端事件,当客户端事件为远程调用类事件,且连接服务器中没有客户端事件对应的远程调用类处理器时,将客户端事件发送给消息服务器;应用服务器,用于从消息服务器中获取客户端事件,处理客户端事件并得到对应的服务器事件;连接服务器,还用于获取服务器事件,并按照服务器事件的优先级顺序对服务器事件进行处理,并向客户端返回处理结果。
实施例四
一种多线程事件分发系统2000,如图5所示,包括:连接服务器、消息服务器、应用服务器和至少一个客户端,连接服务器包括缓存引擎和会话控制模型,其中,会话控制模型有多个,且与客户端一一对应。
客户端用于向连接服务器发送客户端事件;连接服务器,用于获取客户端事件,当客户端事件为远程调用类事件,且连接服务器中没有客户端事件对应的远程调用类处理器时,将客户端事件发送给消息服务器;应用服务器,用于从消息服务器中获取客户端事件,处理客户端事件并得到对应的服务器事件;连接服务器,还用于获取服务器事件,并按照服务器事件的优先级顺序对服务器事件进行处理,并向客户端返回处理结果。
当应用服务器从消息服务器中获取客户端事件,处理客户端事件并得到对应的服务器事件时,缓存引擎用于:从消息服务器中监听并获取服务器事件;根据预注册的服务器事件优先处理消息主题,将服务器事件存储到不同的优先级消息队列中,优先级消息队列包括低优先级消息队列、普通级消息队列和高优先级消息队列;依次对高优先级消息队列、普通级消息队列和低优先级消息队列中的服务器事件进行处理,并向每个会话控制模型返回缓存引擎处理结果。会话控制模型用于:处理缓存引擎处理结果,并向客户端返回最终处理结果。
其中,缓存引擎包括高优先级事件线程,会话控制模型包括优先事件队列和优先更新线程。高优先级事件线程,用于从高优先级消息队列中依次取出高优先级服务器事件,并将高优先级服务器事件依次放入每个会话控制模型中的优先事件队列中,高优先级服务器事件为直接消息事件;优先更新线程,用于从优先事件队列中依次取出高优先级服务器事件,并将所有的高优先级服务器事件封装为直接事件处理器,并发送直接事件处理器至会话控制模型对应的客户端。
缓存引擎还包括事件线程、会话控制模型事件队列、第一会话控制模型发送线程和缓存类事件处理器,会话控制模型还包括事件处理方法、事件队列、第二会话控制模型发送线程、视图处理模型、直接事件处理器、直接返回队列和更新线程,其中所述直接事件处理器有多个。
事件线程,用于从普通级消息队列中依次取出普通级服务器事件,依次将普通级服务器事件存储到所述会话控制模型事件队列中;第一会话控制模型发送线程,用于依次将普通级服务器事件从会话控制模型事件队列中取出,并依次将普通级服务器事件发送至每个会话控制模型;事件处理方法,用于依次将普通级服务器事件放入到事件队列中;第二会话控制模型发送线程,用于依次将普通级服务器事件从事件队列中取出,并通知所有的视图数据模型和直接事件处理器依次处理普通级服务器事件;直接事件处理器,还用于将处理得到的第一处理结果依次放入到直接返回队列中;更新线程,用于依次将第一处理结果从直接返回队列中取出并封装为直接类消息返回给客户端;视图数据模型,还用于将处理得到的第二处理结果发送至客户端,第二处理结果为视图变更内容。
事件线程,还用于调用缓存类事件处理器依次处理普通级服务器事件;事件处理方法,还用于依次将普通级服务器事件处理结果列表放入到事件队列中;第二会话控制模型发送线程,还用于依次将普通级服务器事件处理结果列表从事件队列中取出,并通知会话控制模型中所有的视图数据模型和直接事件处理器依次处理普通级服务器事件处理结果列表;直接事件处理器,还用于将处理得到的第三处理结果依次放入到直接返回队列中,更新线程,还用于依次将第三处理结果从直接返回队列中取出并封装为直接类消息返回给客户端,视图数据模型,还用于依次处理得到第四处理结果,并将第四处理结果发送至客户端,第四处理结果为视图变更内容;缓存类事件处理器,用于依次处理普通级服务器事件,得到每个普通级服务器事件对应的普通级服务器事件处理结果列表,依次发送普通级服务器事件处理结果列表至每个会话控制模型。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种多线程事件分发方法,其特征在于,包括以下步骤:
步骤1、客户端向连接服务器发送客户端事件;
步骤2、所述连接服务器获取所述客户端事件,当所述客户端事件为远程调用类事件,且所述连接服务器中没有所述客户端事件对应的远程调用类处理器时,将所述客户端事件发送给消息服务器;
步骤3、当应用服务器从所述消息服务器中获取所述客户端事件,处理所述客户端事件并得到对应的服务器事件时,所述连接服务器获取所述服务器事件,并按照所述服务器事件的优先级顺序对所述服务器事件进行处理,并向客户端返回处理结果。
2.根据权利要求1所述的一种多线程事件分发方法,其特征在于,所述步骤3包括:
步骤3.1、当应用服务器从所述消息服务器中获取所述客户端事件,处理所述客户端事件并得到对应的服务器事件时,所述连接服务器中的缓存引擎从所述消息服务器中监听并获取所述服务器事件;
步骤3.2、根据预注册的服务器事件优先处理消息主题,所述缓存引擎将所述服务器事件存储到不同的优先级消息队列中,所述优先级消息队列包括低优先级消息队列、普通级消息队列和高优先级消息队列;
步骤3.3、缓存引擎依次对所述高优先级消息队列、所述普通级消息队列和所述低优先级消息队列中的所述服务器事件进行处理,并向所述连接服务器中的每个会话控制模型返回缓存引擎处理结果,其中,所述会话控制模型有多个,且与客户端一一对应;
步骤3.4、所述会话控制模型处理所述缓存引擎处理结果,并向客户端返回最终处理结果。
3.根据权利要求2所述的一种多线程事件分发方法,其特征在于,所述步骤3.3包括:
步骤3.3.1、缓存引擎中的高优先级事件线程从所述高优先级消息队列中依次取出高优先级服务器事件,并将所述高优先级服务器事件依次放入每个所述会话控制模型中的优先事件队列中,所述高优先级服务器事件为直接消息事件;
则所述步骤3.4包括:
步骤3.4.1、每个所述会话控制模型中的优先更新线程从所述优先事件队列中依次取出所述高优先级服务器事件,并将所有的所述高优先级服务器事件封装为直接事件处理器,并发送所述直接事件处理器至所述会话控制模型对应的客户端。
4.根据权利要求2所述的一种多线程事件分发方法,其特征在于,所述步骤3.3还包括:
步骤3.3.2、缓存引擎中的事件线程从所述普通级消息队列中依次取出普通级服务器事件,依次将所述普通级服务器事件存储到会话控制模型事件队列中;
步骤3.3.3、所述缓存引擎中的第一会话控制模型发送线程依次将所述普通级服务器事件从所述会话控制模型事件队列中取出,并依次将所述普通级服务器事件发送至每个会话控制模型;
则步骤3.4还包括:
步骤3.4.2、每个所述会话控制模型调用其内的事件处理方法依次将所述普通级服务器事件放入到所述会话控制模型中的事件队列中;
步骤3.4.3、所述会话控制模型中的第二会话控制模型发送线程依次将所述普通级服务器事件从所述事件队列中取出,并通知所述会话控制模型中所有的视图数据模型和直接事件处理器依次处理所述普通级服务器事件;
步骤3.4.4、所述直接事件处理器还将处理得到的第一处理结果依次放入到直接返回队列中,所述会话控制模型中的更新线程依次将所述第一处理结果从所述直接返回队列中取出并封装为直接类消息返回给客户端,所述视图数据模型还将处理得到的第二处理结果发送至客户端,所述第二处理结果为视图变更内容。
5.根据权利要求2所述的一种多线程事件分发方法,其特征在于,所述步骤3.3中,缓存引擎中的事件线程从所述普通级消息队列中依次取出普通级服务器事件后,还包括:
步骤3.3.4、调用所述缓存引擎中的缓存类事件处理器依次处理所述普通级服务器事件;
步骤3.3.5、所述缓存类事件处理器依次得到每个所述普通级服务器事件对应的普通级服务器事件处理结果列表,并依次发送所述普通级服务器事件处理结果列表至每个所述会话控制模型;
则步骤3.4还包括:
步骤3.4.5、每个所述会话控制模型调用其内的事件处理方法依次将所述普通级服务器事件处理结果列表放入到所述会话控制模型中的所述事件队列中;
步骤3.4.6、所述会话控制模型中的所述第二会话控制模型发送线程依次将所述普通级服务器事件处理结果列表从所述事件队列中取出,并通知所述会话控制模型中所有的视图数据模型和直接事件处理器依次处理所述普通级服务器事件处理结果列表;
步骤3.4.7、所述直接事件处理器还将处理得到的第三处理结果依次放入到所述直接返回队列中,所述会话控制模型中的所述更新线程依次将所述第三处理结果从所述直接返回队列中取出并封装为直接类消息返回给客户端,所述视图数据模型依次处理得到第四处理结果,并将所述第四处理结果发送至客户端,所述第四处理结果为视图变更内容。
6.一种多线程事件分发系统,其特征在于,包括:连接服务器、消息服务器、应用服务器和至少一个客户端;
所述客户端,用于向连接服务器发送客户端事件;
所述连接服务器,用于获取所述客户端事件,当所述客户端事件为远程调用类事件,且所述连接服务器中没有所述客户端事件对应的远程调用类处理器时,将所述客户端事件发送给所述消息服务器;
所述应用服务器,用于从所述消息服务器中获取所述客户端事件,处理所述客户端事件并得到对应的服务器事件;
所述连接服务器,还用于获取所述服务器事件,并按照所述服务器事件的优先级顺序对所述服务器事件进行处理,并向客户端返回处理结果。
7.根据权利要求6所述的一种多线程事件分发系统,其特征在于,所述连接服务器包括缓存引擎和会话控制模型,其中,所述会话控制模型有多个,且与客户端一一对应;
当应用服务器从所述消息服务器中获取所述客户端事件,处理所述客户端事件并得到对应的服务器事件时,
所述缓存引擎用于:从所述消息服务器中监听并获取所述服务器事件;根据预注册的服务器事件优先处理消息主题,将所述服务器事件存储到不同的优先级消息队列中,所述优先级消息队列包括低优先级消息队列、普通级消息队列和高优先级消息队列;依次对所述高优先级消息队列、所述普通级消息队列和所述低优先级消息队列中的所述服务器事件进行处理,并向每个所述会话控制模型返回缓存引擎处理结果;
所述会话控制模型用于:处理所述缓存引擎处理结果,并向客户端返回最终处理结果。
8.根据权利要求7所述的一种多线程事件分发系统,其特征在于,所述缓存引擎包括:高优先级事件线程;所述会话控制模型包括:优先事件队列和优先更新线程;
所述高优先级事件线程,用于从所述高优先级消息队列中依次取出高优先级服务器事件,并将所述高优先级服务器事件依次放入每个所述会话控制模型中的所述优先事件队列中,所述高优先级服务器事件为直接消息事件;
所述优先更新线程,用于从所述优先事件队列中依次取出所述高优先级服务器事件,并将所有的所述高优先级服务器事件封装为直接事件处理器,并发送所述直接事件处理器至所述会话控制模型对应的客户端。
9.根据权利要求7所述的一种多线程事件分发系统,其特征在于,所述缓存引擎还包括:事件线程,会话控制模型事件队列,第一会话控制模型发送线程和缓存类事件处理器;所述会话控制模型还包括:事件处理方法,事件队列,第二会话控制模型发送线程,视图处理模型,直接事件处理器,直接返回队列和更新线程,其中所述直接事件处理器有多个;
所述事件线程,用于从所述普通级消息队列中依次取出普通级服务器事件,依次将所述普通级服务器事件存储到所述会话控制模型事件队列中;
所述第一会话控制模型发送线程,用于依次将所述普通级服务器事件从所述会话控制模型事件队列中取出,并依次将所述普通级服务器事件发送至每个所述会话控制模型;
所述事件处理方法,用于依次将所述普通级服务器事件放入到所述事件队列中;
所述第二会话控制模型发送线程,用于依次将所述普通级服务器事件从所述事件队列中取出,并通知所有的所述视图数据模型和所述直接事件处理器依次处理所述普通级服务器事件;所述直接事件处理器,还用于将处理得到的第一处理结果依次放入到所述直接返回队列中;所述更新线程,用于依次将所述第一处理结果从所述直接返回队列中取出并封装为直接类消息返回给客户端;所述视图数据模型,还用于将处理得到的第二处理结果发送至客户端,所述第二处理结果为视图变更内容。
10.根据权利要求7所述的一种多线程事件分发系统,其特征在于,
所述事件线程,还用于调用所述缓存类事件处理器依次处理所述普通级服务器事件;
所述事件处理方法,还用于依次将所述普通级服务器事件处理结果列表放入到所述事件队列中;
所述第二会话控制模型发送线程,还用于依次将所述普通级服务器事件处理结果列表从所述事件队列中取出,并通知所述会话控制模型中所有的视图数据模型和直接事件处理器依次处理所述普通级服务器事件处理结果列表;所述直接事件处理器,还用于将处理得到的第三处理结果依次放入到所述直接返回队列中,所述更新线程,还用于依次将所述第三处理结果从所述直接返回队列中取出并封装为直接类消息返回给客户端,所述视图数据模型,还用于依次处理得到第四处理结果,并将所述第四处理结果发送至客户端,所述第四处理结果为视图变更内容;
所述缓存类事件处理器,用于依次处理所述普通级服务器事件,得到每个所述普通级服务器事件对应的普通级服务器事件处理结果列表,依次发送所述普通级服务器事件处理结果列表至每个所述会话控制模型。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710295744.4A CN107122239A (zh) | 2017-04-28 | 2017-04-28 | 一种多线程事件分发方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710295744.4A CN107122239A (zh) | 2017-04-28 | 2017-04-28 | 一种多线程事件分发方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107122239A true CN107122239A (zh) | 2017-09-01 |
Family
ID=59725994
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710295744.4A Withdrawn CN107122239A (zh) | 2017-04-28 | 2017-04-28 | 一种多线程事件分发方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107122239A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109660612A (zh) * | 2018-12-11 | 2019-04-19 | 北京潘达互娱科技有限公司 | 一种请求处理方法和服务器 |
CN109960571A (zh) * | 2017-12-14 | 2019-07-02 | 北京图森未来科技有限公司 | 一种多模块调度方法、装置及系统 |
CN111897496A (zh) * | 2020-07-28 | 2020-11-06 | 上海德拓信息技术股份有限公司 | 分布式系统中提升网络io读写性能的方法 |
CN112817814A (zh) * | 2021-01-21 | 2021-05-18 | 网思科技股份有限公司 | 异常监控方法、系统、存储介质及电子装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106326016A (zh) * | 2016-07-28 | 2017-01-11 | 武汉票据交易中心有限公司 | 一种多线程事件分发方法和系统 |
CN107656808A (zh) * | 2016-07-25 | 2018-02-02 | 武汉票据交易中心有限公司 | 一种票据交易的流程实现方法及相关系统 |
-
2017
- 2017-04-28 CN CN201710295744.4A patent/CN107122239A/zh not_active Withdrawn
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107656808A (zh) * | 2016-07-25 | 2018-02-02 | 武汉票据交易中心有限公司 | 一种票据交易的流程实现方法及相关系统 |
CN106326016A (zh) * | 2016-07-28 | 2017-01-11 | 武汉票据交易中心有限公司 | 一种多线程事件分发方法和系统 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109960571A (zh) * | 2017-12-14 | 2019-07-02 | 北京图森未来科技有限公司 | 一种多模块调度方法、装置及系统 |
CN109660612A (zh) * | 2018-12-11 | 2019-04-19 | 北京潘达互娱科技有限公司 | 一种请求处理方法和服务器 |
CN111897496A (zh) * | 2020-07-28 | 2020-11-06 | 上海德拓信息技术股份有限公司 | 分布式系统中提升网络io读写性能的方法 |
CN111897496B (zh) * | 2020-07-28 | 2023-12-19 | 上海德拓信息技术股份有限公司 | 分布式系统中提升网络io读写性能的方法 |
CN112817814A (zh) * | 2021-01-21 | 2021-05-18 | 网思科技股份有限公司 | 异常监控方法、系统、存储介质及电子装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107122239A (zh) | 一种多线程事件分发方法和系统 | |
CN106850565B (zh) | 一种高速的网络数据传输方法 | |
CN109451072A (zh) | 一种基于Kafka的消息缓存系统和方法 | |
CN105208133B (zh) | 一种服务器、负载均衡器以及服务器负载均衡方法和系统 | |
CN106294472B (zh) | 一种Hadoop数据库HBase的查询方法及装置 | |
CN108667851B (zh) | 一种调控系统轻量化人机交互系统 | |
US20160162330A1 (en) | Epoll optimisations | |
US9495411B2 (en) | Increased parallelism performance of batch requests | |
CN106713226A (zh) | 一种用于分布式系统的远程过程调用处理方法和系统 | |
CN107657518A (zh) | 一种基于事件的流程处理方法及相关装置和服务器 | |
CN106326016A (zh) | 一种多线程事件分发方法和系统 | |
CN101917350A (zh) | 一种Linux下基于网卡驱动的零拷贝以太网报文捕获及发送的实现方法 | |
CN105022627B (zh) | 一种Android系统中View间的通信方法 | |
CN102981973B (zh) | 在存储系统中执行请求的方法 | |
US20240095082A1 (en) | Method and system for multiple services to share same gpu, and device and medium | |
CN106612236A (zh) | 众核网络处理器及其微引擎的报文调度方法、系统 | |
US20220417362A1 (en) | Object oriented call management | |
CN105160570A (zh) | 一种可水平扩展的并发在线交易处理方法 | |
CN106131141B (zh) | 一种分布式集群负载均衡并行调度系统及方法 | |
CN106484805A (zh) | 一种数据导出方法及数据处理系统 | |
CN108512782A (zh) | 访问控制列表分组调整方法、网络设备和系统 | |
CN105893160A (zh) | 一种多接口数据的调度方法 | |
CN107294911A (zh) | 一种数据包监听方法及装置、远程过程调用系统、设备 | |
CN112486655A (zh) | 高并发数据处理系统及方法 | |
CN106973065A (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: 20170901 |