日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

vivo 消息中間件測試環境項目多版本實踐

來源: 責編: 時間:2024-03-28 17:49:41 233觀看
導讀一、背景在2022年8月份 vivo 互聯網中間件團隊完成了互聯網在線業務的MQ引擎升級,從RabbitMQ 到 RocketMQ 的平滑升級替換。在業務使用消息中間件的過程中,提出了開發測試環境項目多版本隔離的訴求。本文將介紹我們基于

V5K28資訊網——每日最新資訊28at.com

一、背景

在2022年8月份 vivo 互聯網中間件團隊完成了互聯網在線業務的MQ引擎升級,從RabbitMQ 到 RocketMQ 的平滑升級替換。V5K28資訊網——每日最新資訊28at.com

在業務使用消息中間件的過程中,提出了開發測試環境項目多版本隔離的訴求。本文將介紹我們基于 RocketMQ 如何實現的多版本環境隔離。V5K28資訊網——每日最新資訊28at.com

二、消息中間件平臺主體架構

在正式展開項目多版本實踐之前,先大致介紹下我們消息中間件平臺的主體架構。V5K28資訊網——每日最新資訊28at.com

圖片V5K28資訊網——每日最新資訊28at.com

由上圖可知,我們消息中間件平臺的核心組件 mq-meta、RabbitMQ-SDK、mq-proxy,以及RocketMQ集群。V5K28資訊網——每日最新資訊28at.com

1. mq-meta

主要負責平臺元數據管理,以及業務SDK啟動時的鑒權尋址操作。V5K28資訊網——每日最新資訊28at.com

業務進行topic申請時,會自動分配創建到兩個不同機房的broker上。V5K28資訊網——每日最新資訊28at.com

鑒權尋址時會根據業務接入Key找到所在 MQ 集群下的proxy節點列表,經過機房優先+分片選取+負載均衡等策略,下發業務對應的proxy節點列表。V5K28資訊網——每日最新資訊28at.com

2. RabbitMQ-SDK

目前業務使用的消息中間件SDK仍為原有自研的RabibitMQ SDK,通過AMQP協議收發消息。V5K28資訊網——每日最新資訊28at.com

與proxy之間的生產消費連接,遵循機房優先原則,同時亦可以人為指定優先機房策略。V5K28資訊網——每日最新資訊28at.com

3. mq-proxy

消息網關組件,負責AMQP協議與RocketMQ Remoting協議之間的相互轉換,對于業務側目前僅開放了AMQP協議。V5K28資訊網——每日最新資訊28at.com

具備讀寫分離能力,可配置只代理生產、只代理消費、代理生產消費這三種角色。V5K28資訊網——每日最新資訊28at.com

與broker之間的生產消費,遵循機房優先原則。V5K28資訊網——每日最新資訊28at.com

機房優先的實現:V5K28資訊網——每日最新資訊28at.com

  • 生產:proxy優先將消息發送到自己本機房的broker,只有在發送失敗降級時,才會將消息發送到其他機房broker;通過擴展MQFaultStrategy+LatencyFaultTolerance,并結合快手負載均衡組件simple-failover-java實現機房優先+機房級別容災的負載均衡策略。
  • 消費:在進行隊列分配時,先輪詢分配自己機房的隊列;再將不存在任何消費的機房隊列,進行輪詢分配。通過擴展AllocateMessageQueueStrategy實現。

4. RocketMQ集群

每個MQ集群會由多個機房的broker組成。V5K28資訊網——每日最新資訊28at.com

每個topic則至少會分配到兩個不同機房的broker上。實現業務消息發送與消費的機房級別的容災V5K28資訊網——每日最新資訊28at.com

每個broker部署兩節點,采用主從架構部署,并基于zookeeper實現了一套自動主從切換的高可用機制。通過異步刷盤+同步雙寫來保證性能與消息的可靠性。V5K28資訊網——每日最新資訊28at.com

namesrv則為跨機房broker+mq-proxy之間的公共組件,為集群提供路由發現功能。V5K28資訊網——每日最新資訊28at.com

三、項目多版本實踐

3.1 現狀

后端服務通常采用微服務架構,各服務之間的通信,通常是同步與異步兩種調用場景。其中同步是通過RPC調用完成,而異步則是通過MQ(RocketMQ)生產消費消息實現。V5K28資訊網——每日最新資訊28at.com

在多版本環境隔離中,同步調用場景,一些RPC框架都能有比較好的支持(如Dubbo的標簽路由);但在異步調用場景,RocketMQ并不具備完整的版本隔離方案,需要通過組合一些功能自行實現。V5K28資訊網——每日最新資訊28at.com

最初消息中間件平臺支持的多版本環境隔離大致如下:V5K28資訊網——每日最新資訊28at.com

  • 平臺提供固定幾個MQ邏輯集群(測試01、測試02、測試03...)來支持版本隔離。
  • 業務在進行多版本的并行測試時,需關注版本環境與MQ邏輯集群的對應關系,一個版本對應到一個MQ邏輯集群。
  • 不同MQ邏輯集群下用到的MQ資源(Topic、Group)自然就是不同的。

該方式主要存在如下兩個問題V5K28資訊網——每日最新資訊28at.com

1、使用成本較高V5K28資訊網——每日最新資訊28at.com

  • 業務需在消息中間件平臺進行多套環境(集群)的資源申請。
  • 業務在部署多版本時,每個版本服務都需要配置一份不同的MQ資源接入Key,配置過程繁瑣且容易出錯。

2、環境維護成本較高V5K28資訊網——每日最新資訊28at.com

  • 在一個項目中,業務為了測試完整的業務流程,可能會涉及到多個生產方、消費方服務。盡管在某次版本中只改動了生產方服務,但仍需要在版本環境中一并部署業務流程所需的生產與消費方服務,增加了機器與人力資源成本。

為解決上述問題,提升多版本開發測試過程中的研發效率,中間件團隊開始了RocketMQ多版本環境隔離方案的調研。V5K28資訊網——每日最新資訊28at.com

3.2 方案調研

圖片V5K28資訊網——每日最新資訊28at.com

注釋:V5K28資訊網——每日最新資訊28at.com

1、物理隔離:即機器層面的隔離,MQ的物理隔離,則意味著使用完全不同的MQ物理集群。V5K28資訊網——每日最新資訊28at.com

2、資源邏輯隔離:屬于同一MQ物理集群,但采用不同的邏輯集群,業務側需關注不同邏輯集群下相應的topic和group資源配置。V5K28資訊網——每日最新資訊28at.com

3、基線版本:通常為當前線上環境的版本或者是當前的主開發版本,為穩定版本。V5K28資訊網——每日最新資訊28at.com

4、項目版本:即項目并行開發中的多版本,非基線版本。V5K28資訊網——每日最新資訊28at.com

5、消息回落:針對消費而言,若消費方沒有對應的項目版本,則會回落到基線版本來進行消費。V5K28資訊網——每日最新資訊28at.com

3.3 方案選擇

基于我們需解決的問題,并對實現成本與業務使用成本的綜合考量,我們僅考慮【基于消息維度的user-property】與【基于topic的messageQueue】這兩種方案。V5K28資訊網——每日最新資訊28at.com

又因在全鏈路的多版本環境隔離的需求中,業務使用的版本環境明確提出不做固定,故而我們最終選擇【基于消息維度的user-property】來作為我們多版本環境隔離的方案。V5K28資訊網——每日最新資訊28at.com

3.4 項目多版本的落地

基于消息維度的user-property來實現項目多版本的隔離。V5K28資訊網——每日最新資訊28at.com

1. 鏈路分析V5K28資訊網——每日最新資訊28at.com

在多版本環境中,真實的業務鏈路可能如下,服務調用可能走同步RPC或異步MQ。V5K28資訊網——每日最新資訊28at.com

圖片V5K28資訊網——每日最新資訊28at.com

注釋:V5K28資訊網——每日最新資訊28at.com

1、業務請求中帶有流量標識,經過網關時,根據流量路由規則將流量染色為全鏈路染色標識v-traffic-lane。V5K28資訊網——每日最新資訊28at.com

2、流量標識為userId,流量路由規則為用戶路由到指定版本,圖中的鏈路情況:V5K28資訊網——每日最新資訊28at.com

圖片V5K28資訊網——每日最新資訊28at.com

3、在后續的整個鏈路中,都需要將請求按照流量染色標識v-traffic-lane正確路由到對應版本環境。V5K28資訊網——每日最新資訊28at.com

2. 染色標識傳遞V5K28資訊網——每日最新資訊28at.com

為了正確識別當前服務所在版本,以及流量中的染色標識進行全鏈路傳遞,需要做如下事情:V5K28資訊網——每日最新資訊28at.com

(1)啟動V5K28資訊網——每日最新資訊28at.com

圖片V5K28資訊網——每日最新資訊28at.com

其中v-traffic-lane則是服務被拉起時所在的版本環境標識(由CICD提供),這樣proxy就能知道這個客戶端連接屬于哪個版本。V5K28資訊網——每日最新資訊28at.com

(2)消息的發送與接收V5K28資訊網——每日最新資訊28at.com

圖片V5K28資訊網——每日最新資訊28at.com

消息發送:mq-proxy將AMQP消息轉化為RocketMQ消息時,將染色標識添加到RocketMQ消息的user-property中。V5K28資訊網——每日最新資訊28at.com

消息接收:mq-proxy將RocketMQ消息轉化為AMQP消息時,將染色標識再添加到AMQP消息屬性中。V5K28資訊網——每日最新資訊28at.com

注釋:V5K28資訊網——每日最新資訊28at.com

上述紅色點位,可通過改動SDK進行染色標識的傳遞,但這樣就需要業務升級SDK了。這里我們是借助調用鏈agent來統一實現。V5K28資訊網——每日最新資訊28at.com

3.生產消費邏輯V5K28資訊網——每日最新資訊28at.com

圖片V5K28資訊網——每日最新資訊28at.com

(1)生產V5K28資訊網——每日最新資訊28at.com

邏輯比較簡單,對于存在版本tag的消息,只需要將版本標識作為一個消息屬性,存儲到當前topic中即可。V5K28資訊網——每日最新資訊28at.com

(2)消費V5K28資訊網——每日最新資訊28at.com

這里其實是有兩個問題:消費的多版本隔離、消息回落V5K28資訊網——每日最新資訊28at.com

我們先看下消費的多版本隔離應該如何實現?V5K28資訊網——每日最新資訊28at.com

通過使用不同的消費group,采用基于user-property的消息過濾機制來實現。V5K28資訊網——每日最新資訊28at.com

① 版本tag傳遞V5K28資訊網——每日最新資訊28at.com

  • 在RabbitMQ-SDK消費啟動時,通過全鏈路Agent傳遞到proxy

② 項目環境消費【消費屬于自己版本的消息】V5K28資訊網——每日最新資訊28at.com

  • proxy會根據版本tag在MQ集群自動創建帶版本tag的group,并通過消費訂閱的消息屬性過濾機制,只消費自己版本的消息
  • routingKey的過濾則依賴proxy側的過濾來完成。相對基線版本,多版本的消息量應該會比較少,全量拉取到proxy來做過濾,影響可控。
  • 消費組group_版本tag無需業務申請,由客戶端啟動時proxy會自動創建

③ 基線消費【消費全部基線版本消息+不在線多版本的消息】V5K28資訊網——每日最新資訊28at.com

  • 啟動時使用原始group,訂閱消費時,基于broker的routingKey過濾機制消費topic所有消息
  • 當消息被拉取到proxy后,再做一次消息屬性過濾,將多版本進行選擇性過濾,讓基線消費到正確版本的消息。

圖片V5K28資訊網——每日最新資訊28at.com

我們再來看下消息回落又該如何實現?V5K28資訊網——每日最新資訊28at.com

1、消息回落是基線消費需要根據多版本的在線情況,來決定是否需要消費多版本的消息。V5K28資訊網——每日最新資訊28at.com

2、上面已提到基線消費從broker是拉取所有消息進行消費。V5K28資訊網——每日最新資訊28at.com

3、我們通過在基線消費內部維護一個在線多版本tag的集合,然后進行多版本消息的選擇性過濾來支持回落。V5K28資訊網——每日最新資訊28at.com

4、但這個在線多版本tag的集合,需要及時更新,才能更好的保證消息回落的準確性。V5K28資訊網——每日最新資訊28at.com

5、起初我們采用定時任務從broker拉取所有在線多版本tag的集合,每30s拉取一次,這樣消息回落就需要30s才能生效,準確性差。V5K28資訊網——每日最新資訊28at.com

6、后面我們想到用廣播通知機制,在多版本上下線時廣播通知到所有的基線消費實例,保證了消息回落的實效性與準確性。V5K28資訊網——每日最新資訊28at.com

7、完整的基線消費實例在線多版本tag集合更新機制如下:V5K28資訊網——每日最新資訊28at.com

圖片V5K28資訊網——每日最新資訊28at.com

(3)broker側的調整V5K28資訊網——每日最新資訊28at.com

這里主要是為了配合消費多版本的實現,對broker進行了一些擴展。V5K28資訊網——每日最新資訊28at.com

1、提供在線多版本group集合的擴展接口。用以返回當前group所有在線的多版本group集合。V5K28資訊網——每日最新資訊28at.com

2、增加broker側多版本消息過濾機制。因RocketMQ原生sql92過濾表達式,無法支持帶點的屬性字段過濾;而我們的版本標識(_vh_.v-traffic-lane)是存在的。V5K28資訊網——每日最新資訊28at.com

注釋:V5K28資訊網——每日最新資訊28at.com

1、routingKey過濾機制:為基于broker的消息過濾機制的擴展,可實現RabbitMQ中的routingKey表達式相同的消息路由功能。V5K28資訊網——每日最新資訊28at.com

2、多版本生產消費邏輯,都在mq-proxy與RocketMQ-broker側完成。業務也無需升級SDK。V5K28資訊網——每日最新資訊28at.com

4. 問題定位V5K28資訊網——每日最新資訊28at.com

在多版本隔離中,平臺對用戶屏蔽了復雜的實現細節,但用戶使用時,也需要能觀測到消息的生產消費情況,便于問題跟蹤定位。V5K28資訊網——每日最新資訊28at.com

這里我們主要提供了如下功能:V5K28資訊網——每日最新資訊28at.com

① 消息查詢:可觀測消息當前的版本標識,以及消息軌跡中的生產消費情況V5K28資訊網——每日最新資訊28at.com

圖片V5K28資訊網——每日最新資訊28at.com

圖片V5K28資訊網——每日最新資訊28at.com

② 消費group的在線節點:可看到消費節點當前的版本標識V5K28資訊網——每日最新資訊28at.com

圖片V5K28資訊網——每日最新資訊28at.com

四、總結與展望

本文概述了vivo互聯網中間件團隊,在開源RocketMQ基礎之上,如何落地【測試環境項目多版本隔離】的業務訴求。其中涵蓋了vivo消息中間件主體架構現狀、業內較流行的幾種方案對比,并對我們最終選擇方案在實現層面進行了細節性的分析。希望可以給業界提供一種基于proxy來實現多版本隔離特性的案例參考。V5K28資訊網——每日最新資訊28at.com

在實現過程中遇到的問題點歸結下來則是:V5K28資訊網——每日最新資訊28at.com

1. 流量染色標識在整個生產消費過程中如何傳遞?V5K28資訊網——每日最新資訊28at.com

  • 在客戶端SDK使用全鏈路agent進行流量染色標識的添加、拆解、傳遞。
  • 在RocketMQ則存儲到消息的user-property當中。


V5K28資訊網——每日最新資訊28at.com

2. 消費客戶端版本標識如何識別?V5K28資訊網——每日最新資訊28at.com

  • 客戶端SDK使用全鏈路agent將版本標識添加到連接屬性當中。
  • proxy則根據客戶端版本標識自動創建多版本消費group。


V5K28資訊網——每日最新資訊28at.com

3. 消費的多版本隔離如何實現?V5K28資訊網——每日最新資訊28at.com

  • 項目版本,通過不同的消費group,基于broker端消息屬性的版本過濾來實現隔離。
  • 基線版本,則通過proxy側消費過濾來忽略掉不需要消費的消息。


V5K28資訊網——每日最新資訊28at.com

4. 消息回落如何實現?如何保證消息回落的實效性與準確性?V5K28資訊網——每日最新資訊28at.com

  • 基線版本內部會維護一個在線多版本消費group的集合,根據這個集合來決定消息是否需要回落到基線進行消費。
  • 消息回落的實效性與準確性則通過定時+廣播消息的機制保證。

最后,我們實現的多版本隔離特性如下:V5K28資訊網——每日最新資訊28at.com

  • 多版本環境隔離。在proxy層面基于消息維度user-property來實現版本隔離,業務不需要升級SDK,業務使用層面仍然為同一套配置資源。
  • 支持消息回落。
  • 消費失敗產生的重試消息也能被重投遞到對應版本。

但仍存在如下不足V5K28資訊網——每日最新資訊28at.com

多版本消費客戶端全部下線場景:若topic中仍存在一些已下線版本的消息沒有消費,則這部分消息不保證一定能被基線版本全部消費到。因基線版本與項目版本實際上采用的是不同的消費group,在broker的消費進度是不一致的,消息回落到基線消費之后,其消費位點可能已經超過項目版本消費group下線時的位點,中間存在偏差,會導致這部分消息再無法被基線版本消費到。V5K28資訊網——每日最新資訊28at.com

建議用于開發測試環境,因其無法保證多版本消息至少會被消費一次V5K28資訊網——每日最新資訊28at.com

未來,消息中間件也會考慮線上環境全鏈路灰度場景的支持。V5K28資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-80193-0.htmlvivo 消息中間件測試環境項目多版本實踐

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 記一次 .NET某防偽驗證系統崩潰分析

下一篇: SpringBoot中的異步多線程使用及避坑指南

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
国产精品美女久久| 欧美精品电影| 中文一区在线| 亚洲自拍三区| 欧美在线播放高清精品| 久久婷婷av| 欧美激情一级片一区二区| 欧美日韩亚洲综合一区| 国产精品日日做人人爱| 国内外成人在线| 91久久极品少妇xxxxⅹ软件| 一区二区三区不卡视频在线观看| 午夜欧美不卡精品aaaaa| 久久婷婷成人综合色| 欧美大片在线观看| 国产精品久久久久久av福利软件| 国产主播一区二区三区| 亚洲精品综合久久中文字幕| 亚洲你懂的在线视频| 久热成人在线视频| 欧美视频在线看| 黑人极品videos精品欧美裸| 亚洲精品无人区| 欧美在线综合| 欧美人体xx| 国产亚洲一级| 99xxxx成人网| 久久精品在线| 欧美日韩亚洲另类| 国产综合精品| 一本一本久久a久久精品综合妖精| 久久激情婷婷| 欧美视频在线观看视频极品| 激情久久久久| 亚洲在线一区二区三区| 欧美a级一区二区| 国产麻豆午夜三级精品| 亚洲欧洲日产国产综合网| 欧美一级在线亚洲天堂| 欧美人交a欧美精品| 国内一区二区在线视频观看| 在线一区二区三区做爰视频网站| 久久中文欧美| 国产视频欧美视频| 亚洲图片在区色| 欧美freesex8一10精品| 国产真实精品久久二三区| 一本色道久久综合亚洲精品婷婷| 久久婷婷激情| 国产欧美亚洲日本| 亚洲天堂网在线观看| 欧美gay视频| 国产又爽又黄的激情精品视频| 中日韩午夜理伦电影免费| 欧美+亚洲+精品+三区| 国产亚洲观看| 亚洲伊人伊色伊影伊综合网| 欧美精品在线网站| 亚洲国产精品999| 久久久www| 国产日韩一区欧美| 亚洲欧美日韩国产一区二区三区| 欧美欧美午夜aⅴ在线观看| 亚洲国产导航| 久久噜噜亚洲综合| 国产日韩在线看片| 亚洲欧美国产精品va在线观看| 欧美日韩精品免费观看视频完整| 亚洲欧洲日本专区| 美女脱光内衣内裤视频久久影院 | 欧美二区在线看| 影音先锋中文字幕一区二区| 欧美专区亚洲专区| 国产九九精品| 篠田优中文在线播放第一区| 欧美视频三区在线播放| 日韩午夜视频在线观看| 欧美精品aa| 亚洲日本成人网| 欧美成人精品在线观看| 亚洲电影中文字幕| 欧美超级免费视 在线| 在线观看中文字幕不卡| 久久综合影音| 在线免费观看日本欧美| 久久视频在线看| 尤物九九久久国产精品的分类| 久久性天堂网| 亚洲丶国产丶欧美一区二区三区| 久久视频在线看| 在线精品国产欧美| 欧美不卡激情三级在线观看| 亚洲福利在线观看| 欧美国产视频在线| 亚洲美女一区| 欧美视频中文一区二区三区在线观看 | 夜色激情一区二区| 欧美啪啪成人vr| 亚洲视频在线一区观看| 国产精品久久国产愉拍 | 欧美一区二区在线| 国产综合色精品一区二区三区| 欧美中文字幕视频在线观看| 国产专区欧美精品| 蜜臀a∨国产成人精品| 亚洲日韩第九十九页| 欧美日本精品| 亚洲一区欧美| 国产一区91| 免费不卡在线观看av| 日韩网站在线| 国产精品一区二区久久国产| 久久精品99无色码中文字幕| 亚洲国产精品999| 欧美日韩日日骚| 西瓜成人精品人成网站| 激情成人综合| 欧美精品一区二区在线观看| 亚洲午夜精品视频| 国产亚洲欧洲| 欧美激情按摩| 午夜精品久久久久久久男人的天堂| 国产一区999| 欧美精品久久久久久久免费观看| 亚洲视频在线一区| 国内精品久久久久影院优 | 狠狠狠色丁香婷婷综合激情| 欧美高潮视频| 亚洲影院免费观看| 激情成人亚洲| 欧美日韩亚洲一区二区| 欧美在线观看你懂的| 亚洲国产精品久久久久久女王| 欧美视频日韩视频| 久久久综合网站| 亚洲视频欧美视频| 激情综合在线| 欧美吻胸吃奶大尺度电影| 久久九九99| 一本色道久久综合狠狠躁篇怎么玩| 国产日韩欧美一区二区三区在线观看 | 久久久久久电影| 日韩视频免费观看高清在线视频| 国产精品永久免费| 欧美成人激情视频免费观看| 亚洲免费在线视频| 亚洲日本电影在线| 国产一区二区成人久久免费影院| 欧美激情一区二区| 久久av一区二区三区| 日韩一级大片在线| 好吊色欧美一区二区三区四区| 欧美日韩视频在线一区二区 | 久久se精品一区精品二区| 日韩午夜黄色| 国模私拍一区二区三区| 国产精品不卡在线| 欧美成年人网站| 翔田千里一区二区| 99精品久久久| 亚洲第一在线综合网站| 国产美女精品在线| 欧美日韩亚洲激情| 欧美国产极速在线| 久久午夜精品一区二区| 亚洲一区二区三区色| 亚洲黄色性网站| 国产一区免费视频| 国产精品www.| 欧美激情亚洲综合一区| 久久色在线观看| 欧美在线免费视屏| 中国日韩欧美久久久久久久久| **网站欧美大片在线观看| 国产日产精品一区二区三区四区的观看方式 | 欧美手机在线视频| 欧美电影免费观看高清完整版| 久久av一区| 午夜精品视频一区| 在线亚洲一区| 亚洲精品午夜| 亚洲国产欧美久久| 在线观看成人网| 国产在线视频不卡二| 国产精品一区二区女厕厕| 欧美午夜精品久久久| 欧美日韩国产二区| 欧美激情按摩在线| 欧美黄色影院| 欧美激情中文字幕乱码免费| 蜜桃av综合| 美玉足脚交一区二区三区图片| 久久久久久亚洲综合影院红桃| 欧美一区二区三区免费大片| 亚洲女ⅴideoshd黑人| 亚洲自拍都市欧美小说| 亚洲一区bb| 亚洲一区二区三| 亚洲亚洲精品在线观看| 亚洲午夜久久久久久尤物| 一区二区三区四区五区在线| a91a精品视频在线观看| 99视频一区二区三区| 艳女tv在线观看国产一区|