新四季網

一種應用程式高並發高負荷處理方法和系統與流程

2023-07-09 22:07:56


本發明涉及移動終端應用程式技術領域,特別是涉及一種應用程式高並發高負荷處理方法和系統。



背景技術:

隨著網絡信息技術的不斷進步,移動終端應用程式也得以快速發展,以滿足人們多樣化需求,而隨之而來的也是業務的不斷增長,用戶基數越來越大、訪問量越來越高,有的應用程式從一開始設計的系統架構己經不能再支撐百萬級的訪問量,產品表現得越來越慢,消耗資源越來越高,用戶等待時間越來越長。面對這類問題目前的一種有效解決方式是負載均衡,即在伺服器集群中,設置一臺伺服器充當調度者的角色,用戶的所有請求都會首先由它接收,調度者再根據每臺伺服器的負載情況將請求分配給某一臺後端伺服器去處理,在這個過程中,調度者如何合理分配任務,保證所有後端伺服器都將性能充分發揮,從而保持伺服器集群的整體性能最優。採用負載均衡雖然能夠一定程度上緩解相應問題,但是面對數量級增長的用戶訪問還是顯得不夠。這是it行業一些開發產品的瓶頸通病,在高並發、高訪問、高負荷壓力下出現響應延遲甚至無法響應,使用戶失去耐心等待而棄用該產品。



技術實現要素:

本發明的目的是提供一種應用程式高並發高負荷處理方法和系統,以解決現有技術中的一些應用程式在高並發、高負荷壓力下無法快速響應的技術問題。

為實現上述目的,本發明提供了如下方案:

一種應用程式高並發高負荷處理方法,包括步驟:

以protocolbuffers數據替代json數據作為後端api跟客戶端交互的數據傳輸方式;

通過redis集群將數據交由後端api返回到客戶端;

通過高速消息隊列kafka來聯接任務調度系統。

其中,所述步驟通過高速消息隊列kafka來聯接任務調度系統,還包括步驟:

使日誌文件根據broker中的配置要求,將被消費消息保留預定的時間之後刪除。

其中,所述步驟通過高速消息隊列kafka來聯接任務調度系統還包括步驟:

使consumer保存被消費消息的offset,並控制offset的保存和使用。

其中,所述步驟通過高速消息隊列kafka來聯接任務調度系統還包括步驟:

使consumer和producer的狀態信息由zookeeper保存。

其中,所述步驟通過redis集群將數據交由後端api返回到客戶端,還包括步驟:

redis集群支持數據從主伺服器向任意數量的從伺服器上同步。

本發明實施例還提供一種應用程式高並發高負荷處理系統,與客戶端、後端api數據連接,包括protocolbuffers數據傳輸模塊、redis集群模塊、高速消息隊列kafka模塊和任務調度系統;

所述protocolbuffers數據傳輸模塊,用於以protocolbuffers數據替代json數據作為後端api跟客戶端交互的數據傳輸方式;

所述redis集群模塊,用於通過redis集群將數據交由後端api返回到客戶端;

所述高速消息隊列kafka模塊,用於通過高速消息隊列kafka來聯接所述任務調度系統。

其中,所述高速消息隊列kafka模塊,還用於使日誌文件根據broker中的配置要求,將被消費消息保留預定的時間之後刪除。

其中,所述高速消息隊列kafka模塊,還用於使consumer保存被消費消息的offset,並控制offset的保存和使用。

其中,所述高速消息隊列kafka模塊,還用於使consumer和producer的狀態信息由zookeeper保存。

其中,所述redis集群模塊,還用於支持數據從主伺服器向任意數量的從伺服器上同步。

根據本發明提供的具體實施例,本發明公開了以下技術效果:基於本發明提供的應用程式高並發高負荷處理方法和系統,主要包括protocolbuffers數據傳輸、redis集群、消息隊列kafka、任務調度系統四項功能,kafka的機制能夠有效釋放磁碟空間,減少消息消費之後對文件內容改動的磁碟io開支,而consumer和producer狀態信息由zookeeper保存,kafka集群幾乎不需要維護任何,因此producer和consumer的客戶端實現非常輕量級,它們可以隨意離開,而不會對集群造成額外的影響,redis集群支持主從同步,數據可以從主伺服器向任意數量的從伺服器上同步,對讀取操作的可擴展性和數據冗餘很有幫助,protocolbuffers相比較一些其他的xml技術而言,更加節省空間、速度更快,總的來說,本發明提供的應用程式高並發高負荷處理方法和系統,能夠使移動終端應用程式在高負載高並發情況下表現出更優的處理效果。

附圖說明

為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對於本領域普通技術人員來講,在不付出創造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。

圖1為本發明的高並發高負荷處理方法的主要流程示意圖;

圖2為kafka集群架構下的基本工作流程示意圖;

圖3為redis資料庫的架構組成示意圖;

圖4為java環境下protocolbuffers的基本操作流程示意圖。

具體實施方式

下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基於本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬於本發明保護的範圍。

本發明的目的是提供一種應用程式高並發高負荷處理方法和系統。

實施例一

本發明實施例一提供一種應用程式高並發高負荷處理方法,參見圖1所示,該方法包括:

步驟s110,以protocolbuffers數據替代json數據作為後端api跟客戶端交互的數據傳輸方式。

在後端api(applicationprogramminginterface,應用程式編程接口)跟前端客戶端android、ios交互中,以高效率的protocolbuffers數據來替代傳統json數據的傳輸方式。

步驟s111,通過redis集群將數據交由後端api返回到客戶端。

前端android、ios客戶端與後端api傳輸數據,不再以db方式直連,而是通過redis集群將數據交由api返回到前端,避免db資源的消耗、以獲取最大性能指標。

步驟s112,通過高速消息隊列kafka來聯接任務調度系統。

通過高速消息隊列kafka來聯接任務調度系統,使各大後端子系統與模塊之間緊密相結合。

參見圖2所示,在本發明實施例中,kafka提供了類似於jms的特性,但是在設計實現上完全不同,此外它並不是jms規範的實現。kafka對消息保存時根據topic進行歸類,發送消息者成為producer,消息接受者成為consumer,一個topic可以包括一個或多個partition,此外kafka集群有多個kafka實例組成,每個實例(server)成為broker。無論是kafka集群,還是producer和consumer都依賴於zookeeper來保證系統可用性集群保存一些meta信息。圖2中blockingqueue為阻塞隊列,sendthread為發送線程,kafkacluster為kafka集群,syncproducer即同步producer,形成producerpool即producer池。

在本發明實施例中,kafka和jms(javamessageservice)實現(activemq)不同的是:即使消息被消費,消息仍然不會被立即刪除。日誌文件將會根據broker中的配置要求,保留一定的時間之後刪除;比如log文件保留2天,那麼兩天後,文件會被清除,無論其中的消息是否被消費。kafka通過這種簡單的手段,來釋放磁碟空間,以及減少消息消費之後對文件內容改動的磁碟io開支。

對於consumer而言,它需要保存消費消息的offset,對於offset的保存和使用,有consumer來控制;當consumer正常消費消息時,offset將會"線性"的向前驅動,即消息將依次順序被消費。事實上consumer可以使用任意順序消費消息,它只需要將offset重置為任意值。

此外,kafka集群幾乎不需要維護任何consumer和producer狀態信息,這些信息有zookeeper保存;因此producer和consumer的客戶端實現非常輕量級,它們可以隨意離開,而不會對集群造成額外的影響。

參見圖3所示,在本發明實施例中,redis是一個高性能的key-value資料庫redis的出現,很大程度補償了memcached這類key/value存儲的不足,可以對關係資料庫起到很好的補充作用。它提供了java,c/c++,c#,php,javascript,perl,object-c,python,ruby,erlang等客戶端,使用很方便。

redis支持主從同步。數據可以從主伺服器向任意數量的從伺服器上同步,從伺服器可以是關聯其他從伺服器的主伺服器。這使得redis可執行單層樹複製。存檔可以有意無意的對數據進行寫操作。由於完全實現了發布/訂閱機制,使得從資料庫在任何地方同步樹時,可訂閱一個頻道並接收主伺服器完整的消息發布記錄。同步對讀取操作的可擴展性和數據冗餘很有幫助。

在本發明實施例中,protocolbuffers是一個用來序列化結構化數據的技術,支持多種語言諸如c++、java以及python語言,可以使用該技術來持久化數據或者序列化成網絡傳輸的數據。相比較一些其他的xml技術而言,該技術的一個明顯特點就是更加節省空間(以二進位流存儲)、速度更快以及更加靈活。參見圖4所示,圖4是java環境下protocolbuffers的基本操作流程。

實施例二

本發明實施例二提供一種應用程式高並發高負荷處理系統。該系統與客戶端、後端api數據連接,包括protocolbuffers數據傳輸模塊、redis集群模塊、高速消息隊列kafka模塊和任務調度系統。

其中protocolbuffers數據傳輸模塊,用於以protocolbuffers數據替代json數據作為後端api跟客戶端交互的數據傳輸方式;redis集群模塊,用於通過redis集群將數據交由後端api返回到客戶端;高速消息隊列kafka模塊,用於通過高速消息隊列kafka來聯接所述任務調度系統。

本文中應用了具體個例對本發明的原理及實施方式進行了闡述,以上實施例的說明只是用於幫助理解本發明的方法及其核心思想;同時,對於本領域的一般技術人員,依據本發明的思想,在具體實施方式及應用範圍上均會有改變之處。綜上所述,本說明書內容不應理解為對本發明的限制。

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀