本發(fā)明屬于物聯(lián)網(wǎng),具體涉及一種物聯(lián)網(wǎng)云平臺微服務(wù)容錯保護裝置和方法。
背景技術(shù):
1、物聯(lián)網(wǎng)系統(tǒng)主要包含感知層、網(wǎng)絡(luò)層和應(yīng)用層三層,具有吞吐量大、并發(fā)量高、實時性強等特點,對數(shù)據(jù)傳輸?shù)姆€(wěn)定性、可靠性要求較高。目前,物聯(lián)網(wǎng)應(yīng)用層多采用微服務(wù)架構(gòu),不同服務(wù)之間相互依賴,采用基于restful?http形式接口進行消息通信。當(dāng)感知層傳感器達到數(shù)據(jù)上報時間時,服務(wù)瞬間處于高并發(fā)的場景下,這時往往由于服務(wù)器軟硬件資源的限制(cpu、帶寬、內(nèi)存),導(dǎo)致消息丟失甚至服務(wù)崩潰,進而引起與之相關(guān)服務(wù)發(fā)生異常,最終可能蔓延導(dǎo)致整個系統(tǒng)宕機。因此,有必要設(shè)計一種提高微服務(wù)數(shù)據(jù)通信可靠性和容錯保護方法。以往的微服務(wù)熔斷機制,一般是采用單一窗口(5s),統(tǒng)計窗口內(nèi)消息失敗百分比(50%),當(dāng)達到門限值時快速熔斷,觸發(fā)降級操作,該方式雖然也能在短時間內(nèi)快速熔斷服務(wù),但是當(dāng)消息接收服務(wù)已經(jīng)崩潰或不穩(wěn)定時,會頻繁觸發(fā)降級邏輯,導(dǎo)致線程堆積,仍然會引起發(fā)送服務(wù)崩潰。
技術(shù)實現(xiàn)思路
1、本發(fā)明的目的在于克服現(xiàn)有技術(shù)中的不足,提供一種物聯(lián)網(wǎng)云平臺微服務(wù)容錯保護裝置和方法。本發(fā)明方案能夠解決上述現(xiàn)有技術(shù)中存在的問題。
2、本發(fā)明的技術(shù)解決方案:
3、根據(jù)第一方面,提供一種物聯(lián)網(wǎng)云平臺微服務(wù)容錯保護裝置,包括消息發(fā)送服務(wù)單元、線程單元、狀態(tài)判斷單元、窗口限制單元、重分發(fā)數(shù)據(jù)表單元和重分發(fā)單元,所述的消息發(fā)送服務(wù)單元將數(shù)據(jù)發(fā)送給狀態(tài)判斷單元,所述的狀態(tài)判斷單元判斷消息發(fā)送服務(wù)時是否出現(xiàn)分發(fā)超時、報錯、隊列打滿的現(xiàn)象,若出現(xiàn)上述現(xiàn)象中至少一個,則觸發(fā)降級,當(dāng)出現(xiàn)觸發(fā)降級時,將接收到的數(shù)據(jù)發(fā)送給重分發(fā)數(shù)據(jù)表單元,若沒有則將數(shù)據(jù)傳送給窗口限制單元,所述的窗口限制單元設(shè)置多級窗口限制和對應(yīng)級別的門限值,當(dāng)接收到數(shù)據(jù)后,統(tǒng)計每個級別窗口時間內(nèi)的服務(wù)分發(fā)異常次數(shù),判斷是否超出對應(yīng)級別的門限值,若超出,則標(biāo)記該接口服務(wù)不可用,將本次發(fā)送的數(shù)據(jù)發(fā)送給重分發(fā)數(shù)據(jù)表單元,并在對應(yīng)的窗口時間結(jié)束后將服務(wù)恢復(fù)正常,若沒有超出則將數(shù)據(jù)發(fā)送給所述的線程單元;所述的重分發(fā)單元內(nèi)設(shè)置重分發(fā)周期和重分發(fā)消息數(shù),按照重分發(fā)周期和重分發(fā)消息數(shù)從所述重分發(fā)數(shù)據(jù)表單元獲取數(shù)據(jù)重新發(fā)送給所述的線程單元;所述的線程單元將接收到的數(shù)據(jù)發(fā)送給接收端。
4、進一步的,所述的消息發(fā)送服務(wù)單元將數(shù)據(jù)按照數(shù)據(jù)類型分類,每個數(shù)據(jù)類型發(fā)送給一個線程單元,不同的線程單元相互隔離。
5、進一步的,所述的分發(fā)異常包括:1)讀超時,表示發(fā)送服務(wù)與接收服務(wù)已建立連接,發(fā)送數(shù)據(jù)后,接收服務(wù)在設(shè)定超時時間th內(nèi)沒有返回;2)連接超時,表示發(fā)送服務(wù)與接收服務(wù)建立連接時超時;3)連接拒絕,表示接收服務(wù)端口不可用。
6、進一步的,所述的多級窗口限制包括秒級窗口、分鐘級窗口和小時級窗口。
7、進一步的,秒級窗口的門限值小于分鐘級窗口的門限值,分鐘級窗口的門限值小于小時級窗口的門限值。
8、進一步的,所述的重分發(fā)周期p、重分發(fā)消息數(shù)rn根據(jù)消息接收服務(wù)的實際消費能力確定。
9、優(yōu)選的,rn<pn,且p×rn>sn,其中,sn為消息接收服務(wù)要求每天數(shù)據(jù)量,pn為消息接收服務(wù)能承受的并發(fā)量。
10、根據(jù)第二方面,提供一種物聯(lián)網(wǎng)云平臺微服務(wù)容錯保護方法,包括以下步驟:
11、根據(jù)吞吐量設(shè)置各個線程池的消息發(fā)送服務(wù)的線程數(shù)n、隊列長度q和超時時間tt;
12、判斷消息發(fā)送服務(wù)時是否出現(xiàn)分發(fā)超時、報錯、隊列打滿的現(xiàn)象,若出現(xiàn)上述現(xiàn)象中至少一個,則觸發(fā)降級,當(dāng)出現(xiàn)觸發(fā)降級時,將接收到的數(shù)據(jù)寫入重分發(fā)數(shù)據(jù)表,若未出現(xiàn)進行下一步;
13、消息發(fā)送服務(wù)為每個數(shù)據(jù)接口做多級窗口限制,統(tǒng)計每個級別窗口時間內(nèi)的服務(wù)分發(fā)異常次數(shù),判斷是否超出對應(yīng)級別的門限值,若超出,則標(biāo)記該接口服務(wù)不可用,將本次發(fā)送的數(shù)據(jù)寫入重分發(fā)數(shù)據(jù)表,并在對應(yīng)的窗口時間結(jié)束后將服務(wù)恢復(fù)正常;
14、設(shè)置重分發(fā)周期和重分發(fā)消息數(shù),按照設(shè)置從重分發(fā)數(shù)據(jù)表獲取分發(fā)失敗的數(shù)據(jù),重新發(fā)起消息發(fā)送服務(wù)。
15、進一步的,所述的消息發(fā)送服務(wù)將發(fā)送的數(shù)據(jù)根據(jù)數(shù)據(jù)類型分類,每個數(shù)據(jù)類型接口為單獨的線程池并相互隔離。
16、本發(fā)明與現(xiàn)有技術(shù)相比的有益效果:
17、基于多級窗口的服務(wù)限制和數(shù)據(jù)重發(fā)機制適用于物聯(lián)網(wǎng)系統(tǒng)并發(fā)量高、吞吐量大場景,可以在不同時間粒度上對服務(wù)流量進行限制,避免瞬時壓力、網(wǎng)絡(luò)不穩(wěn)以及接收服務(wù)宕機等原因引起的服務(wù)崩潰,可以有效提高服務(wù)間消息通信的穩(wěn)定性、可靠性。
1.一種物聯(lián)網(wǎng)云平臺微服務(wù)容錯保護裝置,其特征在于,包括消息發(fā)送服務(wù)單元、線程單元、狀態(tài)判斷單元、窗口限制單元、重分發(fā)數(shù)據(jù)表單元和重分發(fā)單元,所述的消息發(fā)送服務(wù)單元將數(shù)據(jù)發(fā)送給狀態(tài)判斷單元,所述的狀態(tài)判斷單元判斷消息發(fā)送服務(wù)時是否出現(xiàn)分發(fā)超時、報錯、隊列打滿的現(xiàn)象,若出現(xiàn)上述現(xiàn)象中至少一個,則觸發(fā)降級,當(dāng)出現(xiàn)觸發(fā)降級或分發(fā)異常時,將接收到的數(shù)據(jù)發(fā)送給重分發(fā)數(shù)據(jù)表單元,若沒有則將數(shù)據(jù)傳送給窗口限制單元,所述的窗口限制單元設(shè)置多級窗口限制和對應(yīng)級別的門限值,當(dāng)接收到數(shù)據(jù)后,統(tǒng)計每個級別窗口時間內(nèi)的服務(wù)分發(fā)異常次數(shù),判斷是否超出對應(yīng)級別的門限值,若超出,則標(biāo)記該接口服務(wù)不可用,將本次發(fā)送的數(shù)據(jù)發(fā)送給重分發(fā)數(shù)據(jù)表單元,并在對應(yīng)的窗口時間結(jié)束后將服務(wù)恢復(fù)正常,若沒有超出則將數(shù)據(jù)發(fā)送給所述的線程單元;所述的重分發(fā)單元內(nèi)設(shè)置重分發(fā)周期和重分發(fā)消息數(shù),按照重分發(fā)周期和重分發(fā)消息數(shù)從所述重分發(fā)數(shù)據(jù)表單元獲取數(shù)據(jù)重新發(fā)送給所述的線程單元;所述的線程單元將接收到的數(shù)據(jù)發(fā)送給接收端。
2.根據(jù)權(quán)利要求1所述的一種物聯(lián)網(wǎng)云平臺微服務(wù)容錯保護裝置,其特征在于,所述的消息發(fā)送服務(wù)單元將數(shù)據(jù)按照數(shù)據(jù)類型分類,每個數(shù)據(jù)類型發(fā)送給一個線程單元,不同的線程單元相互隔離。
3.根據(jù)權(quán)利要求2所述的一種物聯(lián)網(wǎng)云平臺微服務(wù)容錯保護裝置,其特征在于,所述的分發(fā)異常包括:1)讀超時,表示發(fā)送服務(wù)與接收服務(wù)已建立連接,發(fā)送數(shù)據(jù)后,接收服務(wù)在設(shè)定超時時間th內(nèi)沒有返回;2)連接超時,表示發(fā)送服務(wù)與接收服務(wù)建立連接時超時;3)連接拒絕,表示接收服務(wù)端口不可用。
4.根據(jù)權(quán)利要求3所述的一種物聯(lián)網(wǎng)云平臺微服務(wù)容錯保護裝置,其特征在于,所述的多級窗口限制包括秒級窗口、分鐘級窗口和小時級窗口。
5.根據(jù)權(quán)利要求4所述的一種物聯(lián)網(wǎng)云平臺微服務(wù)容錯保護裝置,其特征在于,秒級窗口的門限值小于分鐘級窗口的門限值,分鐘級窗口的門限值小于小時級窗口的門限值。
6.根據(jù)權(quán)利要求5所述的一種物聯(lián)網(wǎng)云平臺微服務(wù)容錯保護裝置,其特征在于,所述的重分發(fā)周期p、重分發(fā)消息數(shù)rn根據(jù)消息接收服務(wù)的實際消費能力確定。
7.根據(jù)權(quán)利要求6所述的一種物聯(lián)網(wǎng)云平臺微服務(wù)容錯保護裝置,其特征在于,rn<pn,且p×rn>sn,其中,sn為消息接收服務(wù)要求每天數(shù)據(jù)量,pn為消息接收服務(wù)能承受的并發(fā)量。
8.使用如權(quán)利要求1到7任一所述的物聯(lián)網(wǎng)云平臺微服務(wù)容錯保護裝置的一種物聯(lián)網(wǎng)云平臺微服務(wù)容錯保護方法,其特征在于,包括以下步驟:
9.據(jù)權(quán)利要求8所述的一種物聯(lián)網(wǎng)云平臺微服務(wù)容錯保護方法,其特征在于,所述的消息發(fā)送服務(wù)將發(fā)送的數(shù)據(jù)根據(jù)數(shù)據(jù)類型分類,每個數(shù)據(jù)類型接口為單獨的線程池并相互隔離。