[發明專利]一種基于TCP長連接的服務實現方法和裝置有效
| 申請號: | 201610230675.4 | 申請日: | 2016-04-14 |
| 公開(公告)號: | CN105763634B | 公開(公告)日: | 2019-01-04 |
| 發明(設計)人: | 張厚瑞 | 申請(專利權)人: | 北京思特奇信息技術股份有限公司 |
| 主分類號: | H04L29/08 | 分類號: | H04L29/08;G06F9/54 |
| 代理公司: | 北京輕創知識產權代理有限公司 11212 | 代理人: | 楊立 |
| 地址: | 100086 北京市海淀*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 tcp 連接 服務 實現 方法 裝置 | ||
本實施例提供的一種基于TCP長連接的服務實現方法和裝置,包括:主進程從配置文件中獲取監聽端口,主進程接收客戶端發送的連接請求,并判斷連接請求數是否超過預設的連接數閾值;如果所述連接請求數在所述預設的連接數閾值范圍內,則所述主進程創建通訊子進程,并對所述通訊子進程進行初始化;通過異步輪詢機制處理文件描述符集合,并通過通訊管道數組異步調度業務子進程。本發明在少量連接數情況下,即可以達到上萬并發量,提高服務端的呑吐量;利用輪詢方式,將連接與通訊模塊分離,利用管道通訊,實現通訊與業務處理分離,通訊層面協議調整和后端業務邏輯調整互不影響,高度可復用,擴展性強。
技術領域
本發明涉及通信領域,特別是涉及一種基于TCP長連接的服務實現方法和裝置。
背景技術
當網絡通信時采用傳輸控制協議(Transmission Control Protocol,TCP)時,客戶端向服務器發起連接,服務器接受客戶端的連接??蛻舳伺c服務器完成一次讀寫之后,它們之間的連接并不會主動關閉,后續的讀寫操作會繼續使用這個連接。
TCP的?;罟δ苤饕獮榉掌鲬锰峁?,服務器應用希望知道客戶端是否崩潰。如果客戶端已經消失,使得服務器上保留一個半開放的連接,而服務器又在等待來自客戶端的數據,則服務器將永遠等待客戶端的數據,保活功能就是試圖在服務器端檢測到這種半開放的連接。
如果一個給定的連接在兩小時內沒有任何的動作,則服務器就向客戶端發一個探測報文段,客戶端處于以下4個狀態之一:
客戶端依然正常運行,并從服務器可達??蛻舳说腡CP響應正常,而服務器也知道對方是正常的,服務器在兩小時后將保活定時器復位。
客戶端已經崩潰,并且關閉或者正在重新啟動。在任何一種情況下,客戶端的TCP都沒有響應。如果服務器沒有收到一個響應,服務器認為客戶端已經關閉并終止連接。
客戶端崩潰并已經重新啟動。服務器將收到一個對其保活探測的響應,這個響應是一個復位,使得服務器終止這個連接。
客戶端正常運行,但是服務器不可達,TCP發現沒有收到探查的響應。
TCP長連接編程難度相對較大。具體為:程序需要維護連接狀態,需要額外編程,異常不好管控;TCP長連接并發對編程有較高難度,普通實現方案通過創建實現多進程并發,當調用業務服務出現堵塞時,會導致系統資源被耗光,從而整個服務器不可用,可靠性不高;TCP長連接協議各不相同,較難做到一個通用技術方案,做到程序高度可復用,業務高度可配置。
發明內容
本發明所要解決的技術問題是提供一種基于TCP長連接的服務實現方法和裝置。
本發明解決上述技術問題的技術方案如下:一種基于TCP長連接的服務實現方法,包括:
步驟S1,主進程從配置文件中獲取監聽端口,通過綁定方法綁定主機網絡協議IP和所述監聽端口,并建立監聽;
步驟S2,所述主進程接收客戶端發送的連接請求,并判斷連接請求數是否超過預設的連接數閾值;
步驟S3,如果所述連接請求數在所述預設的連接數閾值范圍內,則所述主進程創建通訊子進程,并對所述通訊子進程進行初始化;
步驟S4,通過異步輪詢機制處理文件描述符集合,并通過通訊管道數組異步調度業務子進程。
本發明的有益效果是:在TCP長連接的情況下,通過異步的通訊模型可以提高服務端的呑吐量;利用輪詢方式,將連接與通訊模塊分離,利用管道通訊,實現通訊與業務處理分離,通訊層面協議調整和后端業務邏輯調整互不影響,高度可復用,擴展性強。
在上述技術方案的基礎上,本發明還可以做如下改進。
進一步,所述步驟S3包括:
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京思特奇信息技術股份有限公司,未經北京思特奇信息技術股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201610230675.4/2.html,轉載請聲明來源鉆瓜專利網。





