CN104917833A - 一种基于nio请求的异步信息处理方法 - Google Patents
一种基于nio请求的异步信息处理方法 Download PDFInfo
- Publication number
- CN104917833A CN104917833A CN201510306927.2A CN201510306927A CN104917833A CN 104917833 A CN104917833 A CN 104917833A CN 201510306927 A CN201510306927 A CN 201510306927A CN 104917833 A CN104917833 A CN 104917833A
- Authority
- CN
- China
- Prior art keywords
- request
- task
- queue
- response
- asynchronous
- 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
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/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- 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
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 Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明提供了一种基于NIO请求的异步信息处理方法,包括以下步骤:接收请求客户端发送设定格式的请求消息,所述请求消息中包括:请求体、请求参数、回调服务信息;将所述请求消息处理为请求任务,放入请求任务队列;监听请求任务队列的变化,当监听到有新的请求任务,取出所述新的请求任务并启动线程处理,获得与所述请求任务相对应的响应;将获得的响应放置到响应队列;监听设定时间段内响应队列的变化,定时取出设定时间段内发生变化的响应并执行回调,并向请求客户端发送任务状态通知。本发明采用经典的生产者与消费者模式多线程异步处理请求,节约了集群计算资源、避开任务高峰期、降低了网络和本地的IO开销。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种基于NIO(新的输入输出,New Input Output)请求的异步信息处理方法。
背景技术
随着网络通信技术的发展,各种用户的各类http服务要求越来越多,这对服务器提出了更高的要求。
而如何提高服务器的处理速度,尤其是在有高并发需求的场景,如何提高服务器的处理速度,成为技术人员需要考虑的问题。
发明内容
本发明所要解决技术问题是提供一种基于NIO请求的异步信息处理方法,减轻网络负担,提高服务器的处理速度。
为了解决上述技术问题,本发明提供了一种基于NIO请求的异步信息处理方法,包括以下步骤:
接收请求客户端发送设定格式的请求消息,所述请求消息中包括:请求体、请求参数、回调服务信息;
将所述请求消息处理为请求任务,放入请求任务队列;
监听请求任务队列的变化,当监听到有新的请求任务,取出所述新的请求任务并启动线程处理,获得与所述请求任务相对应的响应;
将获得的响应放置到响应队列;
监听设定时间段内响应队列的变化,定时取出设定时间段内发生变化的响应并执行回调,并向请求客户端发送任务状态通知。
优选的,所述监听请求任务队列的变化,为:
根据设置的时间间隔,由异步模块异步轮询所述请求任务队列。
优选的,还包括以下设置步骤:定义收发双方的通信协议,包括访问地址,请求参数,回调服务信息。
优选的,所述向请求客户端发送任务状态通知,包括:回调成功的任务状态或者回调失败的任务状态。
本发明采用经典的生产者与消费者模式多线程异步处理请求,节约了集群计算资源、避开任务高峰期、降低了网络和本地的IO开销。本发明通过采用logback异步写日志到kafka,从而避免了日志写本地IO对性能的损耗;采用Netty对直接内存的操作,用户可以像操作一个Buffer那样方便的对组合Buffer进行操作,避免了传统通过内存拷贝的方式将几个小Buffer合并成一个大的Buffer,从而减轻JVM开销,避开了内存溢出和降低了GC的频率;采用生产者消费者的模式处理队列,从而避开了因任务并发导致的集群压力,节约了集群资源;任务模块设计支持可插拔,从而解决了模块之间高度耦合的情况;采用请求回调策略,进而实现任务状态的返馈;
本发明可做轻量级的http服务,由于其异步双工的特性,从而可应用于绝大多数有高并发需求的场景,因为本程序不对静态/动态html页面做解析,所以其处理速度与响应速度都比现在主流的web服务器(tomcat)要快,可用于后台异步批处理。
附图说明
图1为本发明提供的一种基于NIO请求的异步信息处理方法流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参照图1所示,为本发明提供的一种基于NIO请求的异步信息处理方法流程图。所述方法包括:
步骤101,接收客户端发送设定格式的请求消息,所述请求消息中包括:请求体、请求参数、回调服务信息;
举例如下:因涉及安全方面,部分参数省略,对于回调服务信息,其中“verify_error”为校验失败回调的URL,“verify_ok”为校验成功回调的URL,“apply_error”为处理失败回调的URL,“apply_ok”为处理成功回调的URL,其余属性为请求参数。
步骤102,将所述请求消息处理为请求任务,放入请求任务队列;
步骤103,异步模块监听请求任务队列的变化;
步骤104,当监听到有新的请求任务,取出请求任务并启动线程处理,获得与所述请求任务相对应的响应;
监听是根据设置的时间间隔,由一个Timer Task(定时任务)异步去轮询这个队列;
这里的Executor是可插拔的,不同的任务由不同的Executor去执行。
步骤105,将获得的响应放置到响应队列;
步骤106,监听任务模块监听响应队列(request queue)的变化,(TimerTask轮询)取出并执行回调,并向请求客户端发送任务状态通知。
由我方服务通过协议取出回调服务并向请求者发送任务状态通知。任务状态可以为成功、失败等状态。
需要说明的是,本发明需要定义收发双方的通信协议,包含访问地址,请求参数,回调服务信息等内容。
本发明是基于NIO开发的一个http服务,可处理固定的http请求,客户端(浏览器等)发送的http请求须有固定的请求格式,格式包含:请求体、请求参数、回调服务,request部分,会对请求做简单安全认证和格式处理。因为数据是涉密的所以需要安全认证,请求协议的请求体部分的token属性为安全认证。处理后的请求会统一放入request queue,异步模块AsynTask会监听request queue的变化,取出请求任务并启动线程executor处理,处理完成的请求会被放置到Response Queue。Response Queue被监听任务Callback Task取出并执行回调,通知被回调服务任务完成。
本发明框架模型简单,复用netty http Handler(netty为本程序设计的开源的第三方工具,其中的http Handler是其提供的一个处理http请求解析的类,负责我方服务对http请求的解析部分)实现基于NIO异步双向通讯处理http服务,可在较短时间内开发出具有高并发、低延迟的http服务。
基于灵活可扩展的json格式做报文通讯协议,采用统一的异步处理接口API实现任务处理可插拔,使用线程池模式管理Executor保证处理的高效性。采用经典的生产者与消费者模式多线程异步处理请求,节约了集群计算资源、避开任务高峰期、降低了网络和本地的IO开销。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (4)
1.一种基于NIO请求的异步信息处理方法,其特征在于,包括以下步骤:
接收请求客户端发送设定格式的请求消息,所述请求消息中包括:请求体、请求参数、回调服务信息;
将所述请求消息处理为请求任务,放入请求任务队列;
监听请求任务队列的变化,当监听到有新的请求任务,取出所述新的请求任务并启动线程处理,获得与所述请求任务相对应的响应;
将获得的响应放置到响应队列;
监听设定时间段内响应队列的变化,定时取出设定时间段内发生变化的响应并执行回调,并向请求客户端发送任务状态通知。
2.如权利要求1所述的方法,其特征在于,所述监听请求任务队列的变化,为:
根据设置的时间间隔,由异步模块异步轮询所述请求任务队列。
3.如权利要求1所述的方法,其特征在于,还包括以下设置步骤:定义收发双方的通信协议,包括访问地址,请求参数,回调服务信息。
4.如权利要求1所述的方法,其特征在于,所述向请求客户端发送任务状态通知,包括:回调成功的任务状态或者回调失败的任务状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510306927.2A CN104917833A (zh) | 2015-06-08 | 2015-06-08 | 一种基于nio请求的异步信息处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510306927.2A CN104917833A (zh) | 2015-06-08 | 2015-06-08 | 一种基于nio请求的异步信息处理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104917833A true CN104917833A (zh) | 2015-09-16 |
Family
ID=54086529
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510306927.2A Pending CN104917833A (zh) | 2015-06-08 | 2015-06-08 | 一种基于nio请求的异步信息处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104917833A (zh) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105704224A (zh) * | 2016-03-03 | 2016-06-22 | 北京东方车云信息技术有限公司 | 一种基于网络的市场活动管理系统和方法 |
CN106293970A (zh) * | 2016-08-09 | 2017-01-04 | 浪潮(北京)电子信息产业有限公司 | 一种基于ipc的进程间异步处理方法及系统 |
CN106484548A (zh) * | 2016-10-20 | 2017-03-08 | 济南浪潮高新科技投资发展有限公司 | 一种基于异步回调机制的动作编排请求响应处理方法 |
CN107133112A (zh) * | 2017-04-28 | 2017-09-05 | 维沃移动通信有限公司 | 一种异步处理fsync的方法及移动终端 |
CN108055311A (zh) * | 2017-12-07 | 2018-05-18 | 畅捷通信息技术股份有限公司 | Http异步请求方法、装置、服务器、终端和存储介质 |
CN109213579A (zh) * | 2017-07-06 | 2019-01-15 | 贵阳朗玛信息技术股份有限公司 | 一种异步串行处理消息的方法及装置 |
CN109450711A (zh) * | 2018-12-21 | 2019-03-08 | 广州华多网络科技有限公司 | 分布式系统中主节点的选取方法、装置、系统及存储介质 |
CN109558255A (zh) * | 2018-12-13 | 2019-04-02 | 广东浪潮大数据研究有限公司 | 一种任务处理的方法及任务处理装置 |
CN110083463A (zh) * | 2019-04-22 | 2019-08-02 | 中国地质大学(北京) | 一种3d图像引擎与数值处理软件间实时数据通信方法 |
CN110719311A (zh) * | 2018-07-13 | 2020-01-21 | 深圳兆日科技股份有限公司 | 分布式协调服务方法、系统及计算机可读存储介质 |
CN110868449A (zh) * | 2019-10-14 | 2020-03-06 | 深圳市非零无限科技有限公司 | 一种基于异步消息实现定时任务的方法及系统 |
CN112887446A (zh) * | 2021-01-22 | 2021-06-01 | 北京金山云网络技术有限公司 | 域名处理方法、装置和域名服务器 |
CN113626208A (zh) * | 2020-05-08 | 2021-11-09 | 许继集团有限公司 | 一种基于nio异步线程模型的服务器通信方法 |
CN115914330A (zh) * | 2022-10-11 | 2023-04-04 | 中国电子科技集团公司第二十八研究所 | 一种基于nio异步线程模型的异构应用间通信方法 |
CN116737395A (zh) * | 2023-08-14 | 2023-09-12 | 北京海科融通支付服务有限公司 | 一种异步信息处理系统及方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102323894A (zh) * | 2011-09-08 | 2012-01-18 | 上海普元信息技术股份有限公司 | 企业分布式应用间实现非阻塞方式相互调用的系统及方法 |
CN102567111A (zh) * | 2011-12-23 | 2012-07-11 | 深圳市融创天下科技股份有限公司 | 一种异步过程调用的方法、系统和终端设备 |
CN103685309A (zh) * | 2013-12-26 | 2014-03-26 | 中国科学院遥感与数字地球研究所 | 面向地图可视化瓦片服务接入的异步请求队列模型 |
US20140123835A1 (en) * | 2012-11-05 | 2014-05-08 | Yamaha Corporation | Sound generation apparatus |
-
2015
- 2015-06-08 CN CN201510306927.2A patent/CN104917833A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102323894A (zh) * | 2011-09-08 | 2012-01-18 | 上海普元信息技术股份有限公司 | 企业分布式应用间实现非阻塞方式相互调用的系统及方法 |
CN102567111A (zh) * | 2011-12-23 | 2012-07-11 | 深圳市融创天下科技股份有限公司 | 一种异步过程调用的方法、系统和终端设备 |
US20140123835A1 (en) * | 2012-11-05 | 2014-05-08 | Yamaha Corporation | Sound generation apparatus |
CN103685309A (zh) * | 2013-12-26 | 2014-03-26 | 中国科学院遥感与数字地球研究所 | 面向地图可视化瓦片服务接入的异步请求队列模型 |
Cited By (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105704224A (zh) * | 2016-03-03 | 2016-06-22 | 北京东方车云信息技术有限公司 | 一种基于网络的市场活动管理系统和方法 |
CN106293970A (zh) * | 2016-08-09 | 2017-01-04 | 浪潮(北京)电子信息产业有限公司 | 一种基于ipc的进程间异步处理方法及系统 |
CN106293970B (zh) * | 2016-08-09 | 2019-02-15 | 浪潮(北京)电子信息产业有限公司 | 一种基于ipc的进程间异步处理方法及系统 |
CN106484548A (zh) * | 2016-10-20 | 2017-03-08 | 济南浪潮高新科技投资发展有限公司 | 一种基于异步回调机制的动作编排请求响应处理方法 |
CN107133112B (zh) * | 2017-04-28 | 2019-12-03 | 维沃移动通信有限公司 | 一种异步处理fsync的方法及移动终端 |
CN107133112A (zh) * | 2017-04-28 | 2017-09-05 | 维沃移动通信有限公司 | 一种异步处理fsync的方法及移动终端 |
CN109213579A (zh) * | 2017-07-06 | 2019-01-15 | 贵阳朗玛信息技术股份有限公司 | 一种异步串行处理消息的方法及装置 |
CN108055311A (zh) * | 2017-12-07 | 2018-05-18 | 畅捷通信息技术股份有限公司 | Http异步请求方法、装置、服务器、终端和存储介质 |
CN108055311B (zh) * | 2017-12-07 | 2021-03-16 | 畅捷通信息技术股份有限公司 | Http异步请求方法、装置、服务器、终端和存储介质 |
CN110719311A (zh) * | 2018-07-13 | 2020-01-21 | 深圳兆日科技股份有限公司 | 分布式协调服务方法、系统及计算机可读存储介质 |
CN110719311B (zh) * | 2018-07-13 | 2022-03-18 | 深圳兆日科技股份有限公司 | 分布式协调服务方法、系统及计算机可读存储介质 |
CN109558255A (zh) * | 2018-12-13 | 2019-04-02 | 广东浪潮大数据研究有限公司 | 一种任务处理的方法及任务处理装置 |
CN109450711A (zh) * | 2018-12-21 | 2019-03-08 | 广州华多网络科技有限公司 | 分布式系统中主节点的选取方法、装置、系统及存储介质 |
CN109450711B (zh) * | 2018-12-21 | 2022-05-20 | 广州方硅信息技术有限公司 | 分布式系统中主节点的选取方法、装置、系统及存储介质 |
CN110083463A (zh) * | 2019-04-22 | 2019-08-02 | 中国地质大学(北京) | 一种3d图像引擎与数值处理软件间实时数据通信方法 |
CN110083463B (zh) * | 2019-04-22 | 2021-07-20 | 中国地质大学(北京) | 一种3d图像引擎与数值处理软件间实时数据通信方法 |
CN110868449A (zh) * | 2019-10-14 | 2020-03-06 | 深圳市非零无限科技有限公司 | 一种基于异步消息实现定时任务的方法及系统 |
CN110868449B (zh) * | 2019-10-14 | 2022-03-22 | 深圳市非零无限科技有限公司 | 一种基于异步消息实现定时任务的方法及系统 |
CN113626208A (zh) * | 2020-05-08 | 2021-11-09 | 许继集团有限公司 | 一种基于nio异步线程模型的服务器通信方法 |
CN113626208B (zh) * | 2020-05-08 | 2024-05-14 | 许继集团有限公司 | 一种基于nio异步线程模型的服务器通信方法 |
CN112887446A (zh) * | 2021-01-22 | 2021-06-01 | 北京金山云网络技术有限公司 | 域名处理方法、装置和域名服务器 |
CN112887446B (zh) * | 2021-01-22 | 2023-07-18 | 北京金山云网络技术有限公司 | 域名处理方法、装置和域名服务器 |
CN115914330A (zh) * | 2022-10-11 | 2023-04-04 | 中国电子科技集团公司第二十八研究所 | 一种基于nio异步线程模型的异构应用间通信方法 |
CN115914330B (zh) * | 2022-10-11 | 2024-04-12 | 中国电子科技集团公司第二十八研究所 | 一种基于nio异步线程模型的异构应用间通信方法 |
CN116737395A (zh) * | 2023-08-14 | 2023-09-12 | 北京海科融通支付服务有限公司 | 一种异步信息处理系统及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104917833A (zh) | 一种基于nio请求的异步信息处理方法 | |
US9800691B2 (en) | Stream processing using a client-server architecture | |
CN111258627B (zh) | 一种接口文档生成方法和装置 | |
CN109547511B (zh) | 一种web消息实时推送方法、服务器、客户端及系统 | |
CN106384290B (zh) | 保单处理系统、方法及装置 | |
US20050278384A1 (en) | External authentication against a third-party directory | |
CN105763619B (zh) | 客户端与服务端进行通讯的方法及装置 | |
CN108712457A (zh) | 基于Nginx反向代理的后端服务器动态负载调整方法及装置 | |
CN105786592A (zh) | 一种分布式事务的处理方法及装置 | |
CN107682460B (zh) | 一种分布式存储集群数据通信方法及系统 | |
CN105391536A (zh) | 一种客户端和服务端进行通信的方法及装置 | |
CN101741896A (zh) | Web系统中的数据处理方法、装置及系统 | |
WO2021135279A1 (zh) | 一种非对称配置的管理方法、装置、设备及可读存储介质 | |
CN103475904A (zh) | 一种电子节目单数据的发布方法、系统及Websocket服务器 | |
CN104468594A (zh) | 一种数据请求的方法、装置及系统 | |
PH12015500675B1 (en) | Method and system for transmission management of full configuration synchronization between eml-nml. | |
Zhao et al. | A real-time web application solution based on Node. js and WebSocket | |
CN102955801A (zh) | 基于分布式数据库系统的数据控制方法及系统 | |
CN109088918A (zh) | 一种交互方法、客户端设备及服务端设备 | |
US9021109B1 (en) | Controlling requests through message headers | |
US9384466B2 (en) | Systems and methods for extending any service to existing systems by using an adaptive common interface | |
US9264506B2 (en) | Pull data transfer method in request-response models | |
CN104168274A (zh) | 数据获取请求的处理方法、客户端及服务器 | |
CN110753043B (zh) | 一种通信方法、装置、服务器及介质 | |
CN110266705B (zh) | 一种控制方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20150916 |