用于消息服務(wù)的處理方法、裝置及系統(tǒng)、消息服務(wù)系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本申請(qǐng)涉及消息服務(wù)技術(shù)領(lǐng)域,具體涉及一種用于消息發(fā)布的消息處理方法、一種用于消息訂閱的消息處理方法及其裝置。本申請(qǐng)同時(shí)涉及一種用于消息發(fā)布的消息管理方法、一種用于消息訂閱的消息管理方法及其系統(tǒng),一種消息服務(wù)系統(tǒng)。
【背景技術(shù)】
[0002]在云計(jì)算的迅猛發(fā)展下,越來(lái)越多的分布式應(yīng)用構(gòu)建和部署在云環(huán)境下,這些分布式應(yīng)用絕大多數(shù)采用基于消息系統(tǒng)的架構(gòu)。在傳統(tǒng)的消息服務(wù)系統(tǒng)中,消息隊(duì)列中間件是系統(tǒng)的核心組件,其通常承擔(dān)兩個(gè)核心功能:分別是連接管理和消息管理。即不但要承擔(dān)對(duì)消息接收發(fā)送的連接管理功能,還要承擔(dān)對(duì)接收或發(fā)送的消息管理功能。然而,上述功能劃分的消息中間件,在海量連接壓力下服務(wù)器就有被壓垮的可能,此時(shí)消息中間件消息管理功能也會(huì)受到影響。
[0003]為了支撐海量連接,不得不依賴于增加更多的消息隊(duì)列服務(wù)器,盡管有些時(shí)候大量連接的負(fù)載可能并不高(大量的連接可能僅僅需要保持,其傳輸?shù)臄?shù)據(jù)量可能并不大)。同樣地,大量的消息需要管理時(shí)也會(huì)影響服務(wù)器的性能,導(dǎo)致新連接的無(wú)法建立。因此,傳統(tǒng)的消息服務(wù)系統(tǒng)存在功能相互耦合、成本過(guò)高、資源浪費(fèi)的問(wèn)題。
[0004]為了解決消息服務(wù)系統(tǒng)功能耦合,成本過(guò)高的問(wèn)題,業(yè)內(nèi)針對(duì)它采用了以下優(yōu)化方案:借鑒“讀寫(xiě)分離”的思想,將發(fā)送消息和接收消息這兩類功能分離(或者分成生產(chǎn)者、消費(fèi)者兩個(gè)角色),使他們落到消息隊(duì)列集群的不同服務(wù)器。
[0005]發(fā)送消息這類功能的特點(diǎn):它通常是短連接,即發(fā)起到消息隊(duì)列服務(wù)器的連接,發(fā)送消息,關(guān)閉連接。接收消息這類功能的特點(diǎn):它是長(zhǎng)連接,即發(fā)起并保持到消息隊(duì)列服務(wù)器的連接,當(dāng)服務(wù)器端接收到消息后,投遞消息給該連接,由該連接去消費(fèi)和處理消息。
[0006]將發(fā)送消息和接收消息這兩類功能分離到不同的服務(wù)器上,實(shí)際上是將短連接和長(zhǎng)連接分離到不同的服務(wù)器上,通過(guò)這樣的分離,在需要時(shí)可以分別增加服務(wù)器,這樣就可以節(jié)省一些物理資源。
[0007]將發(fā)送消息和接收消息這兩類功能分離到不同的服務(wù)器上實(shí)際上是治標(biāo)不治本的方案,若壓力持續(xù)增大時(shí),仍然需要增加更多的服務(wù)器來(lái)應(yīng)對(duì)壓力,并沒(méi)能真正解決功能耦合,成本高的問(wèn)題。
[0008]申請(qǐng)內(nèi)容
[0009]本申請(qǐng)?zhí)峁┮环N用于消息發(fā)布和訂閱的消息處理方法及其裝置,以及一種用于消息發(fā)布和訂閱的消息管理方法及其裝置,以解決現(xiàn)有的消息服務(wù)系統(tǒng)及方法的上述的問(wèn)題。本申請(qǐng)另外提供一種用于消息服務(wù)的系統(tǒng)及一種消息服務(wù)系統(tǒng)。
[0010]本申請(qǐng)?zhí)峁┑囊环N用于消息發(fā)布的消息處理方法,包括:
[0011]接收客戶端發(fā)布的消息;
[0012]建立與消息管理服務(wù)器的連接,將所述客戶端發(fā)布的消息轉(zhuǎn)發(fā)到消息管理服務(wù)器;
[0013]在消息管理服務(wù)器處理后向客戶端發(fā)送發(fā)布成功的響應(yīng)。
[0014]可選的,所述接收客戶端發(fā)布的消息之前,建立與客戶端之間的連接。
[0015]可選的,所述建立與所述客戶端之間的連接包括:
[0016]接收客戶端以TCP協(xié)議發(fā)起的連接請(qǐng)求,
[0017]向客戶端回應(yīng)所述連接請(qǐng)求,并要求客戶端確認(rèn);
[0018]接收客戶端返回的確認(rèn),建立與客戶端的連接。
[0019]可選的,所述連接為基于超文本協(xié)議的短連接。
[0020]可選的,所述建立與消息管理服務(wù)器的連接,將客戶端發(fā)布的消息轉(zhuǎn)發(fā)到消息管理服務(wù)器包括:
[0021]建立與消息管理服務(wù)器的連接,并基于該連接建立虛擬通信通道;
[0022]將消息通過(guò)所述虛擬通信通道發(fā)布到所述消息管理服務(wù)器。
[0023]可選的,所述建立與消息管理服務(wù)器的連接,并基于該連接建立虛擬通信通道包括:
[0024]由預(yù)先建立的與消息管理服務(wù)器之間連接的連接池中選擇任意一個(gè)連接;
[0025]在所選擇的連接中選擇一個(gè)基于該連接的虛擬通信通道。
[0026]可選的,所述與消息管理服務(wù)器之間連接為長(zhǎng)連接。
[0027]可選的,所述接收客戶端發(fā)布的消息具體是指在多個(gè)接收端構(gòu)成接收端集群中擇一接收客戶端發(fā)布的消息;
[0028]所述建立與客戶端之間的連接具體包括:
[0029]通過(guò)負(fù)載均衡算法獲得接收端集群中各個(gè)接收端的負(fù)載狀況和健康狀況;
[0030]根據(jù)所述負(fù)載狀況和健康狀況依據(jù)壓力均負(fù)原則建立相應(yīng)接收端與客戶端的連接。
[0031]可選的,所述在消息管理服務(wù)器處理后向客戶端發(fā)送發(fā)布成功的響應(yīng)包括:
[0032]接收消息管理服務(wù)器發(fā)送的消息已存儲(chǔ)的響應(yīng)消息;
[0033]收到所述響應(yīng)消息后向客戶端發(fā)送發(fā)布成功的響應(yīng)。
[0034]此外,本申請(qǐng)還提供一種用于消息訂閱的消息處理方法,包括:
[0035]接收客戶端發(fā)出的訂閱消息的請(qǐng)求,建立與客戶端之間的連接;
[0036]建立針對(duì)所述連接的到消息管理服務(wù)器的虛擬通信通道;
[0037]通過(guò)所述虛擬通信通道接收被訂閱的消息;
[0038]將所述接收的被訂閱的消息投遞至客戶端;
[0039]在客戶端消費(fèi)消息后向消息管理服務(wù)器發(fā)送消息被消費(fèi)的確認(rèn)響應(yīng)。
[0040]可選的,所述接收客戶端發(fā)出的訂閱消息的請(qǐng)求,建立于客戶端之間的連接包括:
[0041]接收客戶端發(fā)起的websocket握手請(qǐng)求;
[0042]向客戶端發(fā)送基于所述websocket握手請(qǐng)求的應(yīng)答;
[0043]接收客戶端發(fā)送的開(kāi)始消費(fèi)消息的請(qǐng)求。
[0044]可選的,所述建立針對(duì)所述連接的到消息管理服務(wù)器的虛擬通信通道包括:
[0045]由預(yù)先建立的與消息管理服務(wù)器之間連接的連接池中選擇任意一個(gè)連接;
[0046]在所選擇的連接中選擇一個(gè)基于該連接的虛擬通信通道。
[0047]可選的,所述接收客戶端發(fā)出的訂閱消息的請(qǐng)求具體是指,在多個(gè)接收端構(gòu)成的接收端集群中擇一接收客戶端發(fā)出的訂閱消息的請(qǐng)求;
[0048]所述建立與客戶端之間的連接具體包括:
[0049]通過(guò)負(fù)載均衡算法獲得接收端集群中各個(gè)接收端的負(fù)載狀況和健康狀況;
[0050]根據(jù)所述負(fù)載狀況和健康狀況依據(jù)壓力均負(fù)原則建立相應(yīng)接收端與客戶端的連接。
[0051]可選的,所述在客戶端消費(fèi)消息后向消息管理服務(wù)器發(fā)送消息被消費(fèi)的確認(rèn)響應(yīng)包括:
[0052]接收客戶端發(fā)送的消息已消費(fèi)的確認(rèn);
[0053]基于客戶端發(fā)送的確認(rèn)向消息管理服務(wù)器發(fā)送消息被消費(fèi)的確認(rèn)響應(yīng)。
[0054]此外,本申請(qǐng)還提供一種用于消息發(fā)布的消息管理方法,包括:
[0055]接收消息連接服務(wù)器發(fā)送的建立連接的請(qǐng)求,建立與消息連接服務(wù)器的連接;
[0056]接收消息連接服務(wù)器轉(zhuǎn)發(fā)的待發(fā)布消息并保存;
[0057]向消息連接服務(wù)器發(fā)送所述待發(fā)布消息已確認(rèn)接收的響應(yīng)。
[0058]此外,本申請(qǐng)還提供一種用于消息訂閱的消息管理方法,包括:
[0059]接收消息連接服務(wù)器發(fā)送的建立連接的請(qǐng)求,建立與消息連接服務(wù)器的連接;
[0060]通過(guò)所述連接向消息連接服務(wù)器投遞被訂閱的消息;
[0061]接收消息連接服務(wù)器發(fā)送的消息被消費(fèi)的確認(rèn)響應(yīng);
[0062]根據(jù)所述的確認(rèn)響應(yīng),刪除被消費(fèi)的消息及其備份。
[0063]此外,本申請(qǐng)還提供一種用于消息發(fā)布的消息處理裝置,包括
[0064]待發(fā)布消息接收單元,用于接收客戶端發(fā)布的消息;
[0065]待發(fā)布消息轉(zhuǎn)發(fā)單元,用于建立與消息管理服務(wù)器的連接,將所述客戶端發(fā)布的消息轉(zhuǎn)發(fā)到消息管理服務(wù)器;
[0066]發(fā)布狀態(tài)反饋單元,用于在消息管理服務(wù)器處理后向客戶端發(fā)送發(fā)布成功的響應(yīng)。
[0067]可選的,所述裝置還包括,
[0068]連接單元,用于在接收客戶端發(fā)布的消息之前,建立與客戶端之間的連接。
[0069]可選的,所述連接單元,具體用于在接收客戶端發(fā)布的消息之前,建立與客戶端之間的基于超文本協(xié)議的短連接。
[0070]可選的,所述待發(fā)布消息轉(zhuǎn)發(fā)單元包括:
[0071]連接及虛擬通道建立單元,用于建立與消息管理服務(wù)器的連接,并基于該連接建立虛擬通信通道;
[0072]轉(zhuǎn)發(fā)單元,用于將消息通過(guò)所述虛擬通信通道發(fā)布到所述消息管理服務(wù)器。
[0073]可選的,所述連接及虛擬通道建立單元包括:
[0074]連接選擇單元,用于由預(yù)先建立的與消息管理服務(wù)器之間連接的連接池中選擇任意一個(gè)連接;
[0075]虛擬通道選擇單元,用于在所選擇的連接中選擇一個(gè)基于該連接的虛擬通信通道。
[0076]可選的,所述待發(fā)布消息接收單元,具體用于在多個(gè)接收端構(gòu)成接收端集群中擇一接收客戶端發(fā)布的消息;
[0077]所述連接單元包括:
[0078]負(fù)載均衡單元,用于通過(guò)負(fù)載均衡算法獲得接收端集群中各個(gè)接收端的負(fù)載狀況和健康狀況;
[0079]連接執(zhí)行單元,用于根據(jù)所述負(fù)載狀況和健康狀況依據(jù)壓力均負(fù)原則建立相應(yīng)接收端與客戶端的連接。
[0080]可選的,所述發(fā)布狀態(tài)反饋單元包括:
[0081]發(fā)布狀態(tài)接收單元,用于接收消息管理服務(wù)器發(fā)送的消息已存儲(chǔ)的響應(yīng)消息;
[0082]發(fā)布狀態(tài)轉(zhuǎn)發(fā)單元,用于收到所述響應(yīng)消息后向客戶端發(fā)送發(fā)布成功的響應(yīng)。
[0083]此外,本申請(qǐng)還提供一種用于消息訂閱的消息處理裝置,包括:
[0084]訂閱請(qǐng)求接收單元,用于接收客戶端發(fā)出的訂閱消息的請(qǐng)求,建立于客戶端之間的連接;
[0085]虛擬通道建立單元,用于建立針對(duì)所述連接的到消息管理服務(wù)器的虛擬通信通道;
[0086]訂閱消息接收單元,用于通過(guò)所述虛擬通信通道接收被訂閱的消息;
[0087]訂閱消息投遞單元,用于將所述接收的被訂閱的消息投遞至客戶端;
[0088]消費(fèi)狀態(tài)反饋單元,用于在客戶端消費(fèi)消息后向消息管理服務(wù)器發(fā)送消息被消費(fèi)的確認(rèn)響應(yīng)。
[0089]可選的,所述訂閱請(qǐng)求單元包括:
[0090]握手請(qǐng)求接收單元,用于接收客戶端發(fā)起的websocket握手請(qǐng)求;
[0091]應(yīng)答單元,用于向客戶端發(fā)送基于所述websocket握手請(qǐng)求的應(yīng)答;
[0092]請(qǐng)求接收單元,用于接收客戶端發(fā)送的開(kāi)始消費(fèi)消息的請(qǐng)求。
[0093]可選的,所述虛擬通道建立單元包括:
[0094]連接選擇單元,用于由預(yù)先建立的與消息管理服務(wù)器之間連接的連接池中選擇任意一個(gè)連接;
[0095]通道選擇單元,用于在所選擇的連接中選擇一個(gè)基于該連接的虛擬通信通道。
[0096]可選的,所述訂閱請(qǐng)求接收單元,具體用于在多個(gè)接收端構(gòu)成的接收端集群中擇一接收客戶端發(fā)出的訂閱消息的請(qǐng)求;
[0097]所述訂閱請(qǐng)求接收單元還包括:
[0098]負(fù)載均衡單元,用于通過(guò)負(fù)載均衡算法獲得接收端集群中各個(gè)接收端的負(fù)載狀況和健康狀況;
[0099]連接執(zhí)行單元,用于根據(jù)所述負(fù)載狀況和健康狀況依據(jù)壓力均負(fù)原則建立相應(yīng)接收端與客戶端的連接。
[0100]可選的,所述消費(fèi)狀態(tài)反饋單元包括:
[0101]消費(fèi)狀態(tài)接收單元,用于接收客戶端發(fā)送的消息已消費(fèi)的確認(rèn);
[0102]消費(fèi)狀態(tài)轉(zhuǎn)發(fā)單元,用于基于客戶端發(fā)送的確認(rèn)向消息管理服務(wù)器發(fā)送消息被消費(fèi)的確認(rèn)響應(yīng)。
[0103]此外,本申請(qǐng)還提供一種用于消息發(fā)布的消息管理裝置,包括:
[0104]連接建立單元,用于接收消息連接服務(wù)器發(fā)送的建立連接的請(qǐng)求,建立與消息連接服務(wù)器