[發(fā)明專利]一種異步非阻塞響應(yīng)式消息處理方法在審
| 申請(qǐng)?zhí)枺?/td> | 202011152975.8 | 申請(qǐng)日: | 2020-10-26 |
| 公開(公告)號(hào): | CN112380028A | 公開(公告)日: | 2021-02-19 |
| 發(fā)明(設(shè)計(jì))人: | 程登;張亮;黎飛;龍民波;蘇國(guó)傳 | 申請(qǐng)(專利權(quán))人: | 上汽通用五菱汽車股份有限公司 |
| 主分類號(hào): | G06F9/54 | 分類號(hào): | G06F9/54;G06F9/52;G06F9/50 |
| 代理公司: | 北京中北知識(shí)產(chǎn)權(quán)代理有限公司 11253 | 代理人: | 盧業(yè)強(qiáng) |
| 地址: | 545007 廣西壯族自治區(qū)柳*** | 國(guó)省代碼: | 廣西;45 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 異步 阻塞 響應(yīng) 消息 處理 方法 | ||
本發(fā)明公開一種異步非阻塞響應(yīng)式消息處理方法。所述方法包括:通信線程監(jiān)聽客戶端的連接,并建立連接,接收客戶端的請(qǐng)求消息,然后將請(qǐng)求消息發(fā)送到處理線程的第一消息隊(duì)列;處理線程從第一消息隊(duì)列中取出所述請(qǐng)求消息,如果不需要其他系統(tǒng),建立會(huì)話,然后處理所述請(qǐng)求消息,將處理結(jié)果或處理失敗原因通過通信線程發(fā)送給客戶端;如果需要其他系統(tǒng),處理線程掛起會(huì)話,等待其他系統(tǒng)應(yīng)答的同時(shí)處理新的消息。本發(fā)明采用異步非阻塞響應(yīng)方式處理消息,及時(shí)響應(yīng)客戶端請(qǐng)求,使日連接數(shù)量達(dá)到幾十萬甚至上百萬,在等待其他系統(tǒng)的應(yīng)答時(shí),不阻塞線程,同時(shí)處理新的消息,使一個(gè)線程可以處理幾萬到十幾萬的請(qǐng)求數(shù)。
技術(shù)領(lǐng)域
本發(fā)明屬于網(wǎng)絡(luò)通信技術(shù)領(lǐng)域,具體涉及一種異步非阻塞響應(yīng)式消息處理方法。
背景技術(shù)
支撐云平臺(tái)長(zhǎng)時(shí)間自主運(yùn)行的是服務(wù)。服務(wù)與服務(wù)間的通信,可以維持兩個(gè)不同平臺(tái)之間的正常交互。而云平臺(tái)間的數(shù)據(jù)傳輸依賴接口,接口間多數(shù)使用http通信協(xié)議進(jìn)行數(shù)據(jù)傳輸。客戶端為客戶提供了本地服務(wù),http客戶端之間的接口開發(fā)需要一定的通訊規(guī)則。接口間的通信常用的規(guī)則和約定有通信方式、規(guī)則和約定、安全方式、交易模式等。目前的接口調(diào)用平臺(tái)是基于springboot框架的,springboot框架的優(yōu)點(diǎn)是前后端完全分離,只需要協(xié)商好接口就行,前端負(fù)責(zé)開發(fā)頁面并調(diào)用后端接口展示數(shù)據(jù)。后端只負(fù)責(zé)提供rest接口。而目前主流的開發(fā)模式為同步阻塞模式,其工作流程為:服務(wù)端啟動(dòng)監(jiān)聽;接收到一個(gè)客戶端連接時(shí)一個(gè)線程處理(可以是線程池,也能是直接啟動(dòng)線程);接收請(qǐng)求(接受請(qǐng)求時(shí),線程阻塞在這里),處理請(qǐng)求,如果需要依賴其他模塊時(shí),需要發(fā)送消息給其他系統(tǒng);接收其他系統(tǒng)的應(yīng)答(發(fā)送請(qǐng)求和接收應(yīng)答時(shí)會(huì)阻塞線程),然后處理應(yīng)答,最后給客戶端發(fā)送最后的應(yīng)答(也會(huì)阻塞線程)。
同步阻塞模式存在下面的問題:一個(gè)連接的并發(fā)請(qǐng)求數(shù)非常有限,因?yàn)榫€程阻塞在那里,前一個(gè)請(qǐng)求需要等到應(yīng)答后,才能發(fā)送下一個(gè)請(qǐng)求;連接數(shù)非常有限,因?yàn)槊恳粋€(gè)連接需要占用一個(gè)線程,當(dāng)需要幾萬、幾十萬、上百萬的連接并存時(shí),系統(tǒng)無法開啟那么多線程;系統(tǒng)的并發(fā)性能依賴于響應(yīng)時(shí)間,如果第三方系統(tǒng)故障無響應(yīng)時(shí),就可能有大批的線程被阻塞在那里,直到超時(shí)后才能釋放,從而導(dǎo)致整體性能急劇下降;故障會(huì)擴(kuò)散,局部故障會(huì)擴(kuò)散到整體,如果系統(tǒng)1出現(xiàn)問題,訪問它的線程都會(huì)被阻塞,當(dāng)某個(gè)流程不依賴系統(tǒng)1,而是依賴系統(tǒng)2,但是由于線程都阻塞在系統(tǒng)1上,導(dǎo)致線程池線程用完,沒有線程來處理本來能夠正常處理的新請(qǐng)求。
發(fā)明內(nèi)容
為了解決現(xiàn)有技術(shù)中存在的上述問題,本發(fā)明提出一種異步非阻塞響應(yīng)式消息處理方法。
為實(shí)現(xiàn)上述目的,本發(fā)明采用如下技術(shù)方案:
一種異步非阻塞響應(yīng)式消息處理方法,包括以下步驟:
步驟1,通信線程監(jiān)聽客戶端的連接,并建立連接,接收客戶端的請(qǐng)求消息,然后將請(qǐng)求消息發(fā)送到處理線程的第一消息隊(duì)列;
步驟2,處理線程從第一消息隊(duì)列中取出所述請(qǐng)求消息,如果不需要其他系統(tǒng),則建立會(huì)話,然后處理所述請(qǐng)求消息,將處理結(jié)果或處理失敗原因發(fā)送到通信線程的第二消息隊(duì)列;通信線程從第二消息隊(duì)列中取出所述處理結(jié)果或處理失敗原因,并發(fā)送給客戶端;如果需要其他系統(tǒng),轉(zhuǎn)步驟3;
步驟3,處理線程將向其他系統(tǒng)請(qǐng)求的消息發(fā)送到第二消息隊(duì)列,通信線程從第二消息隊(duì)列中取出所述消息,并發(fā)送給其他系統(tǒng);
步驟4,處理線程掛起會(huì)話,等待其他系統(tǒng)應(yīng)答的同時(shí),從第一消息隊(duì)列中取出新的消息,并進(jìn)行處理。
進(jìn)一步地,通信線程工作在SOCKET異步非阻塞模式,linux操作系統(tǒng)下采用epoll模式,windows操作系統(tǒng)下采用IOCP模式。
進(jìn)一步地,所述方法還包括:如果待處理的消息數(shù)量超過最大允許數(shù)量,按照最大允許數(shù)量進(jìn)行處理,超出最大允許數(shù)量的消息等待處理。
與現(xiàn)有技術(shù)相比,本發(fā)明具有以下有益效果:
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于上汽通用五菱汽車股份有限公司,未經(jīng)上汽通用五菱汽車股份有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202011152975.8/2.html,轉(zhuǎn)載請(qǐng)聲明來源鉆瓜專利網(wǎng)。
- 時(shí)刻響應(yīng)
- 第一響應(yīng)和第二響應(yīng)
- 需求響應(yīng)方法和需求響應(yīng)系統(tǒng)
- 響應(yīng)裝置及其集成電路、響應(yīng)方法及響應(yīng)系統(tǒng)
- 響應(yīng)處理方法及響應(yīng)處理裝置
- 響應(yīng)裝置及網(wǎng)絡(luò)響應(yīng)方法
- 響應(yīng)生成方法、響應(yīng)生成裝置和響應(yīng)生成程序
- 響應(yīng)車輛、響應(yīng)車輛管理系統(tǒng)和響應(yīng)車輛控制系統(tǒng)
- 斷電響應(yīng)
- 響應(yīng)裝置、響應(yīng)方法及存儲(chǔ)介質(zhì)





