999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于消息中間件支持訂閱模式的消息灰度發(fā)布方法

2024-12-31 00:00:00崔華?韋強(qiáng)?欒衡
信息系統(tǒng)工程 2024年9期

摘要:信息交互中重要的交互方式之一——異步消息通信,沒有通用的灰度發(fā)布技術(shù)架構(gòu)或基礎(chǔ)中間件組件實(shí)現(xiàn),由消息交互雙方協(xié)商后解決,由此產(chǎn)生了技術(shù)架構(gòu)多樣帶來更高的開發(fā)難度及交流成本,實(shí)現(xiàn)方法不通用帶來的方案重用性差、重復(fù)設(shè)計(jì)等問題。通過在消息中間件層提供統(tǒng)一技術(shù)解決方案實(shí)現(xiàn)異步消息通信的灰度發(fā)布方法,最大限度地降低了消息交互灰度功能的開發(fā)成本及設(shè)計(jì)復(fù)雜度,最終提高了整體服務(wù)的可用性、可靠性及服務(wù)質(zhì)量。

關(guān)鍵詞:灰度發(fā)布;消息廣播訂閱模式;消息過濾

一、前言

隨著企業(yè)信息化程度及業(yè)務(wù)復(fù)雜度的顯著增加,信息化平臺越來越走向?qū)I(yè)化、模塊化和服務(wù)化。企業(yè)信息系統(tǒng)從集中化向分布式轉(zhuǎn)變,服務(wù)從業(yè)務(wù)內(nèi)聚集中化向分布式微服務(wù)化發(fā)展。伴隨著微服務(wù)化改造,服務(wù)之間的關(guān)系變得錯綜復(fù)雜,一個業(yè)務(wù)流程由單一參與者轉(zhuǎn)變?yōu)樾枰獛资踔辽习賯€微服務(wù)通過復(fù)雜的協(xié)作才可以完成。因此,為保證整體服務(wù)的正確性,對每個服務(wù)的更新升級提出了更高的要求,灰度發(fā)布技術(shù)對錯綜復(fù)雜的服務(wù)調(diào)用鏈中進(jìn)行局部升級改造起到了越來越重要的作用。

二、相關(guān)技術(shù)介紹

解決微服務(wù)調(diào)用過程中新老版本升級的用戶無感問題是基于對服務(wù)的灰度調(diào)度能力?;叶日{(diào)度可以根據(jù)服務(wù)的特性差異及規(guī)則把相關(guān)的流量在不同服務(wù)特性版本之間進(jìn)行靈活切換或按照一定比例分配,此行為可以由微服務(wù)調(diào)度框架實(shí)現(xiàn)。例如,使用流量染色技術(shù),構(gòu)建從網(wǎng)關(guān)到全體后端業(yè)務(wù)服務(wù)的隔離環(huán)境,實(shí)現(xiàn)支持多版本、多服務(wù)的灰度發(fā)布。設(shè)計(jì)靈活、豐富的灰度策略實(shí)現(xiàn)灰度發(fā)布的精細(xì)化控制。通過網(wǎng)關(guān)和被全體后端業(yè)務(wù)服務(wù)依賴的sidecar模塊實(shí)現(xiàn)全鏈路灰度能力[1],完全不需要用戶的參與,也不需要服務(wù)提供者了解具體的灰度規(guī)則,很好地屏蔽了服務(wù)器提供者實(shí)例的變化對用戶的影響,同時也降低了后端更新服務(wù)時給用戶帶來的風(fēng)險(xiǎn)。目前流行的與消息交互相關(guān)的灰度處理方案都是由消息交互雙方自行協(xié)商完成的,作為消息中間件只是充當(dāng)消息傳輸媒介,并不參與消息灰度邏輯實(shí)現(xiàn)。這種由消息交互雙方提出灰度方案的方式存在以下幾點(diǎn)問題。

耦合度增加:由于是消息雙方協(xié)商完成的消息灰度處理方案,所以消息發(fā)送方與消費(fèi)方需要了解并適配對方的灰度處理邏輯。當(dāng)交互復(fù)雜度提高時,這種灰度處理模式將導(dǎo)致服務(wù)調(diào)用鏈條內(nèi)的多個服務(wù)之間的耦合度顯著增加,從而降低了消息中間件的解耦作用。

開發(fā)難度提高:需要消息交互雙方都處理消息灰度邏輯,雙方都需要投入人力進(jìn)行設(shè)計(jì)、開發(fā),增加了系統(tǒng)復(fù)雜度及開發(fā)難度。

開發(fā)成本增加:設(shè)計(jì)方案都是針對消息處理雙方的技術(shù)特點(diǎn)及業(yè)務(wù)場景進(jìn)行設(shè)計(jì),方案不具備普適性。當(dāng)大量服務(wù)需要灰度處理時會導(dǎo)致人力的大量重復(fù)投入。

針對以上問題,提出了一種用于分布式部署模型下由消息中間件自主完成消息灰度能力的方法,通過動態(tài)感知消費(fèi)服務(wù)特征并根據(jù)動態(tài)配置規(guī)則將消息流導(dǎo)入不同的服務(wù)中,從而實(shí)現(xiàn)由消息中間件獨(dú)立實(shí)現(xiàn)的消息灰度能力,最大限度地降低了消息交互雙方對服務(wù)灰度功能的開發(fā)及設(shè)計(jì)成本。由于消息灰度解決方案由消息中間件實(shí)現(xiàn),所有使用此消息中間件的服務(wù)自然都具備了消息灰度的功能,極大地提高了整個集群消息交互服務(wù)的可用性及可靠性,最終將提升整體服務(wù)質(zhì)量。

三、技術(shù)方案

本方案提出了一種基于多隊(duì)列實(shí)現(xiàn)的,可以根據(jù)接收者版本動態(tài)設(shè)置消息傳輸灰度規(guī)則并動態(tài)生效的方法,系統(tǒng)架構(gòu)圖如圖1所示。

主要實(shí)現(xiàn)原理是通過對消息進(jìn)行特殊處理實(shí)現(xiàn)對消息的區(qū)分,根據(jù)消費(fèi)者特征將特定的消息分發(fā)給指定消費(fèi)者從而實(shí)現(xiàn)對消息的流向控制。根據(jù)此思想設(shè)計(jì)了圖1的系統(tǒng)架構(gòu),使用消息預(yù)處理模塊對消息進(jìn)行預(yù)處理打標(biāo)、多隊(duì)列同步傳輸及服務(wù)器端可編程消息過濾器,實(shí)現(xiàn)了在相同消息消費(fèi)者版本之間自由切換消息傳輸流量,在訂閱模式下不同消費(fèi)者之間可以獨(dú)立設(shè)置灰度規(guī)則并不互相影響。

(一)系統(tǒng)組成

本方案由連接控制器、消息預(yù)處理組件、隊(duì)列組(隊(duì)列1、隊(duì)列2)、消息過濾器、消費(fèi)者信息收集器及灰度規(guī)則控制器組成,如圖2所示。

連接控制器:根據(jù)消費(fèi)者信息及灰度規(guī)則控制消費(fèi)者連接隊(duì)列組中那個隊(duì)列。

消息預(yù)處理組件:主要完成消息灰度打標(biāo)工作。根據(jù)灰度規(guī)則,控制器生成的消息預(yù)處理規(guī)則對發(fā)送者發(fā)送的消息打標(biāo)并以扇出等方式發(fā)送到隊(duì)列組。

隊(duì)列組:消息傳輸媒介,完成打標(biāo)消息的傳輸。同時,雙隊(duì)列有效避免相同消息消費(fèi)者不同版本之間的消息爭搶問題(此設(shè)計(jì)主要針對KAFKA的消費(fèi)模式)。

消息過濾器:灰度規(guī)則控制器根據(jù)灰度設(shè)置生成的消息過濾規(guī)則,在消息消費(fèi)者消費(fèi)消息時在服務(wù)器端過濾掉不屬于此消費(fèi)者的消息。

消費(fèi)者信息收集器:在消費(fèi)者實(shí)例發(fā)生變化時收集新增消費(fèi)者特征信息(IP、消費(fèi)者身份信息及消費(fèi)者版本信息)。

灰度規(guī)則控制器:根據(jù)灰度規(guī)則發(fā)布者提供的灰度發(fā)布規(guī)則及消費(fèi)者信息收集器收集到的消費(fèi)者版本信息,生產(chǎn)消息預(yù)處理規(guī)則及消息過濾規(guī)則。

(二)實(shí)現(xiàn)原理

針對以上問題提出了一種用于分布式部署模型下,由消息中間件自主完成支持訂閱模式的消息灰度實(shí)現(xiàn)方法。其核心思想就是通過在消息上根據(jù)灰度規(guī)則做相應(yīng)標(biāo)記,并在消息消費(fèi)過程中在服務(wù)器端動態(tài)過濾掉不屬于消費(fèi)者標(biāo)記的消息(消息過濾機(jī)制具有精確、高效的優(yōu)點(diǎn),基于消息標(biāo)記或者消息內(nèi)容等方面可以通過使用消息內(nèi)容對比[2]),達(dá)到對消息的消費(fèi)者進(jìn)行控制的目的,從而實(shí)現(xiàn)消息的灰度處理機(jī)制。對于訂閱模式下多消費(fèi)者互相獨(dú)立的灰度規(guī)則的支持,需要在隊(duì)列組中隊(duì)列支持訂閱模式的基礎(chǔ)上,通過在消息上打多個消費(fèi)者相關(guān)的標(biāo)記完成,各個消費(fèi)者過濾本身的標(biāo)記即可實(shí)現(xiàn)訂閱消息消費(fèi)同時不互相影響。

消息控制的詳細(xì)流程如下:

1.用戶配置消費(fèi)灰度策略。

2.根據(jù)消費(fèi)者軟件信息及灰度規(guī)則產(chǎn)生消息預(yù)處理規(guī)則及消費(fèi)者相關(guān)的消息過濾規(guī)則(消費(fèi)者過濾規(guī)則相互獨(dú)立)。

3.消息生產(chǎn)者產(chǎn)生消息。

4.消息預(yù)處理器根據(jù)預(yù)處理規(guī)則對消息生產(chǎn)者產(chǎn)生的消息進(jìn)行打標(biāo)處理。

5.打標(biāo)后消息發(fā)送到消息隊(duì)列等待消息消費(fèi)者消費(fèi)(多消費(fèi)者消費(fèi)互相獨(dú)立)。

6.消息過濾器根據(jù)此消費(fèi)者的消息過濾規(guī)則過濾掉無用消息。

7.消費(fèi)者消費(fèi)灰度規(guī)則處理后的消息。

四、具體實(shí)施方式

重點(diǎn)實(shí)施技術(shù)點(diǎn)包括:消息灰度處理、相同消費(fèi)者灰度消費(fèi)消息爭搶問題、不同消費(fèi)者灰度設(shè)置隔離問題。

(一)消息灰度處理

消息灰度處理主要是根據(jù)消息灰度處理規(guī)則在消息上打上不同的標(biāo)記,再通過后續(xù)的過濾機(jī)制根據(jù)標(biāo)記過濾掉不相關(guān)消息,達(dá)到消息分流的目的,從而實(shí)現(xiàn)消息灰度處理能力。

圖3描述了消息灰度完整的處理流程,詳細(xì)描述如下:假設(shè)消費(fèi)者兩個版本V1和V2,消息灰度設(shè)置為V1消費(fèi)比例40%,V2消費(fèi)比例60%。

1.消息生產(chǎn)者生產(chǎn)消息發(fā)送給消息中間件。

2.消息預(yù)處理組件根據(jù)灰度規(guī)則控制器產(chǎn)生的灰度控制規(guī)則(V1版本比例40%,V2版本比例60%)為消息生產(chǎn)者生產(chǎn)的消息打標(biāo)。

3.消息預(yù)處理組件將打標(biāo)后消息扇出,發(fā)送給隊(duì)列組中每一個隊(duì)列(針對KAFKA消息中間件設(shè)計(jì))。

4.當(dāng)消費(fèi)者消費(fèi)消息時,消息過濾器對拉取的消息根據(jù)消費(fèi)者特征進(jìn)行標(biāo)記過濾,并將過濾后的消息返回給消費(fèi)者。

通過以上過程完成消息中間件的消息灰度控制,通過改變灰度規(guī)則動態(tài)處理打標(biāo)和過濾規(guī)則,實(shí)現(xiàn)動態(tài)調(diào)整消息灰度比例。

(二)相同消費(fèi)者灰度消息爭搶

通用消息中間件在處理多個消費(fèi)者實(shí)例連接時并不區(qū)分消費(fèi)者實(shí)例特征(版本、部署位置等)差異,消息中間件會同等對待所有消費(fèi)者實(shí)例,在它們之間進(jìn)行消息負(fù)載均衡處理,確保一個消息只能由一個消費(fèi)者進(jìn)行處理,避免重復(fù)消費(fèi)。從消費(fèi)者角度來看就是爭搶模式,所以傳統(tǒng)消息中間件很難實(shí)現(xiàn)對消息流的定向控制。

KAFKA是一個高吞吐量、高性能的分布式消息系統(tǒng),高吞吐量能夠支撐海量數(shù)據(jù)處理需求,高性能能夠高效、實(shí)時地傳播數(shù)據(jù)的消息中間件[3],基于KAFKA做了實(shí)現(xiàn)案例,使用雙隊(duì)列組成的隊(duì)列組來避免消息爭搶。在客戶端連接后,消費(fèi)者信息收集器會收集消費(fèi)者的特征信息,灰度規(guī)則控制器根據(jù)消費(fèi)者的灰度配置及消費(fèi)者特征產(chǎn)生連接規(guī)則。當(dāng)消費(fèi)者實(shí)際拉取消息時,連接控制器會根據(jù)消費(fèi)者特征將消費(fèi)目標(biāo)動態(tài)連接到隊(duì)列組中正確的隊(duì)列上。通過以上處理規(guī)則確保涉及灰度規(guī)則的不同特征消費(fèi)者連接到不同的隊(duì)列上,從而避免爭搶消息現(xiàn)象的發(fā)生。

(三)消費(fèi)者特征(版本、部署等相關(guān)信息)

消息中間件使用者自身標(biāo)識信息。例如,版本信息可以用于區(qū)分相同消費(fèi)者的不同版本,部署信息可以用于區(qū)分相同消費(fèi)者同一版本下不同的部署邏輯單元。

(四)不同消費(fèi)者灰度設(shè)置隔離問題

通用中間件消息訂閱模式下各個消費(fèi)者之間得到的消息都是相同的,對于消息中間件而言,一般有兩種消息投遞模式:點(diǎn)對點(diǎn)(P2P,Point-to-Point)模式和發(fā)布/訂閱(Pub/Sub)模式。點(diǎn)對點(diǎn)模式的實(shí)現(xiàn)細(xì)節(jié)已經(jīng)在上文闡述,此處主要針對消息發(fā)布訂閱模式。發(fā)布訂閱模式定義了如何向一個內(nèi)容節(jié)點(diǎn)發(fā)布和訂閱消息,這個內(nèi)容節(jié)點(diǎn)稱為主題(Topic),訂閱模式是系統(tǒng)間信息共享的通用方案,可同時支持業(yè)務(wù)數(shù)據(jù)、監(jiān)視數(shù)據(jù)等信息的共享[4]。以KAFKA技術(shù)框架為例,如果消費(fèi)者都隸屬于不同的消費(fèi)組,那么所有的消息都會被廣播給所有的消費(fèi)者,即每條消息會被所有的消費(fèi)者處理,這就相當(dāng)于傳統(tǒng)消息中間件的發(fā)布/訂閱模式[5]。因此,本方案中另一個需解決的重點(diǎn)問題是如何支持消息訂閱模式下,不同消費(fèi)者能夠設(shè)置不同灰度規(guī)則并且做到不互相影響。

圖4描述了不同消費(fèi)者不同版本消費(fèi)消息的灰度隔離流程,詳細(xì)描述如下:假設(shè)消費(fèi)者1兩個版本V1和V2,消息灰度設(shè)置為V1消費(fèi)比例40%,V2消費(fèi)比例60%;消費(fèi)者2兩個版本V1和V2,消息灰度設(shè)置為V1消費(fèi)比例20%,V2消費(fèi)比例80%。

1.消息生產(chǎn)者生產(chǎn)消息發(fā)送給消息中間件。

2.消息預(yù)處理組件根據(jù)灰度規(guī)則控制器產(chǎn)生的消費(fèi)者1灰度控制規(guī)則(V1版本比例40%,V2版本比例60%)為消息生產(chǎn)者生產(chǎn)的消息打標(biāo)(黑)。

3.消息預(yù)處理組件根據(jù)灰度規(guī)則控制器產(chǎn)生的消費(fèi)者2灰度控制規(guī)則(V1版本比例20%,V2版本比例80%)為消息生產(chǎn)者生產(chǎn)的消息打標(biāo)(紅)。

4.消息預(yù)處理組件將打標(biāo)后消息扇出發(fā)送給隊(duì)列組中每一個隊(duì)列。

5.當(dāng)消費(fèi)者1消費(fèi)消息時,消息過濾器對拉取的消息根據(jù)消費(fèi)者特征(黑)進(jìn)行標(biāo)記過濾并將過濾后的消息返回給消費(fèi)者。

6.當(dāng)消費(fèi)者2消費(fèi)消息時,消息過濾器對拉取的消息根據(jù)消費(fèi)者特征(紅)進(jìn)行標(biāo)記過濾并將過濾后的消息返回給消費(fèi)者。

通過以上過程完成消息中間件的多消費(fèi)者隔離的消息灰度控制,并且通過動態(tài)產(chǎn)生與處理規(guī)則和過濾規(guī)則,可以動態(tài)地調(diào)整每一個消費(fèi)者的消息灰度比例。

五、結(jié)語

本文提供了一種基于中間件自身完成的支持消息訂閱模式的灰度控制方法,通過在消息中間件實(shí)現(xiàn)消息的灰度控制,大大降低了軟件之間對于消息灰度處理的溝通成本,降低了軟件技術(shù)架構(gòu)復(fù)雜度,及軟件的開發(fā)和運(yùn)維成本。統(tǒng)一實(shí)現(xiàn)的消息灰度技術(shù)方案具有統(tǒng)一的開發(fā)流程及管理方案,提高了可維護(hù)性,實(shí)現(xiàn)了對應(yīng)用無感的軟件灰度控制方法,簡化了應(yīng)用開發(fā)復(fù)雜度并提高了開發(fā)效率。綜上所述,中間件自主實(shí)現(xiàn)的灰度控制方案在提高整個系統(tǒng)業(yè)務(wù)消息處理可靠性及可用性的同時降低了開發(fā)及管理成本。

參考文獻(xiàn)

[1]劉軍,李雄清,孫瓊巍,等.面向云原生全鏈路灰度發(fā)布技術(shù)研究與實(shí)踐[J].電子技術(shù)應(yīng)用,2023(04):73-74.

[2]王重楠,王宗陶,鮑忠貴,等.發(fā)布/訂閱模式測控消息中間件系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)應(yīng)用,2015(03):879-881.

[3]裴宏祥,于曉虹.基于kafka消息平臺的軟件系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)軟件及計(jì)算機(jī)應(yīng)用,2018(18):39.

[4]蔡建坤,劉俊波.基于發(fā)布訂閱模式的空管系統(tǒng)間信息共享方案設(shè)計(jì)[J].電子技術(shù)與軟件工程,2018(14):174.

[5]朱忠華.深入理解Kafka:核心設(shè)計(jì)與實(shí)踐原理[M].北京:電子工業(yè)出版社,2019:47-48.

主站蜘蛛池模板: 欧美成人国产| 色老头综合网| 国产日韩精品欧美一区喷| 99这里只有精品免费视频| 毛片网站观看| 国产素人在线| 国产精品美乳| 永久免费无码日韩视频| 久久 午夜福利 张柏芝| 成年人视频一区二区| 亚洲伊人天堂| 国产无码精品在线播放| 国产又色又爽又黄| 青青草原国产精品啪啪视频| 女人18一级毛片免费观看 | 亚洲区一区| 亚洲免费毛片| www.亚洲色图.com| 国产偷倩视频| 不卡无码h在线观看| 国产性猛交XXXX免费看| 国产免费自拍视频| 在线视频亚洲欧美| 国产综合无码一区二区色蜜蜜| 污网站在线观看视频| 无码不卡的中文字幕视频| 国产91丝袜| 亚洲欧美极品| 久无码久无码av无码| 无码国产伊人| 美女亚洲一区| 免费一级成人毛片| 久热精品免费| aaa国产一级毛片| 99久久国产自偷自偷免费一区| 日韩精品免费一线在线观看| 日本午夜视频在线观看| 日韩A∨精品日韩精品无码| 欧美视频在线观看第一页| 一级黄色欧美| 喷潮白浆直流在线播放| 亚洲区欧美区| 992tv国产人成在线观看| 欧美不卡视频在线观看| 亚洲成肉网| 凹凸精品免费精品视频| 久久亚洲美女精品国产精品| 国产视频 第一页| 亚洲美女久久| 亚洲人人视频| 国产乱子伦视频在线播放| 国产亚洲高清在线精品99| 久久免费视频播放| 亚洲精品卡2卡3卡4卡5卡区| 亚洲日本中文综合在线| 激情影院内射美女| 99国产在线视频| 精品久久高清| 国产人碰人摸人爱免费视频| 无码久看视频| 久久成人免费| 国产精品一区在线观看你懂的| 国产女人18水真多毛片18精品| 中文字幕无码中文字幕有码在线| 国产欧美日韩一区二区视频在线| 亚洲国产日韩欧美在线| 欧美成人综合在线| 人人艹人人爽| 欧美区一区二区三| 久久国产精品国产自线拍| 国产偷国产偷在线高清| 久久伊人久久亚洲综合| 无码一区18禁| 成人一级黄色毛片| 国产精品一线天| 看你懂的巨臀中文字幕一区二区 | 国产一区二区三区夜色| jizz在线观看| 日韩欧美中文字幕一本| 精品久久蜜桃| 国产成人一区免费观看| 亚洲91在线精品|