基於Sermant的全鏈路灰度發佈在汽車行業DMS系統的應用

本文分享自華爲雲社區《基於Sermant的全鏈路灰度發佈在汽車行業DMS系統的應用》,作者:聶子雄 華爲雲高級軟件工程師

摘要

隨着汽車產業的智能升級,DMS系統作爲汽車行業的經銷管理系統也面臨着更加多種多樣的業務場景的挑戰。藉助Sermant,華爲雲能夠爲DMS系統提供一整套端到端全鏈路灰度發佈方案,這套方案可以適應DMS系統應用中更多靈活多變的場景。

一、背景

汽車行業是一個龐大的產業,涵蓋了設計、製造、銷售、維修等多個方面。目前,全球汽車行業已經成爲了重要的經濟支柱之一,每年產生數萬億美元的產值。汽車行業的發展也推動了相關產業的發展,如石油、鋼鐵、橡膠、玻璃等原材料行業,以及銀行、保險、物流等服務行業。隨着環保意識的提高和新能源技術的不斷髮展,汽車行業也面臨着轉型升級的挑戰。目前汽車行業正在向智能化、電動化和共享化方向發展,面對更加多種多樣的需求,行業相關的IT系統也需要不斷進步以適應這些場景。

在汽車行業IT系統中,經常會提到DMS系統,那什麼是DMS系統呢?DMS系統是指汽車經銷商管理系統(Dealer Management System),它是一種專門爲汽車經銷商和售後服務提供商設計的軟件系統,用於管理和優化他們的業務流程。DMS系統可以幫助汽車經銷商實現業務數字化、自動化和智能化,提高業務效率、降低成本、提升服務質量,是現代化汽車經銷商必備的管理工具。目前很多經銷商的DMS系統基本上都是做過微服務化改造,裏面不同微服務模塊之間會相互調用,因此如何高效地使用和管理這些微服務模塊是DMS系統的重要挑戰之一。

二、痛點場景

目前DMS系統已經廣泛應用在汽車經銷商的業務當中,其中有一類是DMS系統在實際使用中的痛點場景,具體有:

  • 客戶想在某一個門店A上線自己的新業務,作爲業務試點門店,比如新品汽車銷售,或者打折促銷活動等。和新業務相關的流量只會流入試點門店B。
  • 爲了節約成本以及降低部署服務工作量,希望能夠實現邏輯上的環境隔離。例如,測試環境有部分服務複用生產環境上的模塊,開發測試人員只需要聚焦於需要測試的服務模塊。
  • 客戶的交易、商品服務有新的業務要上線,新上線的功能間有依賴和交互,要在上線前做一些測試工作:用戶計劃讓測試人員專門賬號來進行現網測試(類似於遊戲等白名單控制的開服前驗證);用戶引入少量比例的生產流量進行驗證。

三、解決方案

3.1 單點灰度發佈方案是否可行?

針對上述問題,一般的思路是通過灰度發佈去解決,通過灰度發佈,可以引入部分的測試流量到新業務模塊,也能控制帶有具體特徵的流量只流入到對應的測試模塊,其餘流量保持原有方式不動。

但是經過仔細考慮,就會發現如果只做單點灰度發佈,其實是無法完善地解決以上場景的痛點問題,主要體現在:

業務特徵時常只在第一跳,也就是特徵只在入口,傳遞過程中會丟失。

除了第一跳入口,後續微服務之間進行調用的時候也會把特徵給丟失。

3.2 全鏈路灰度方案是怎樣的?

因此,僅僅依靠單點灰度發佈的能力是不夠的,還需要能夠做到整條微服務調用鏈的可灰度,也就是全鏈路灰度能力,這樣就可以靈活解決DMS系統在這一類業務中遇到的問題。目前要實現全鏈路灰度,一般要考慮這些問題的處理:

1)在第一跳的地方(一般是網關),我們需要能選中各種類型的流量,把這部分流量染色,再路由到正確的目標。

2)除了第一跳,剩下調用鏈路中的各個微服務能夠識別染色標,透傳染色標,並路由到正確的目標。

3)能對異常情況進行妥善處理。

目前,華爲雲針對以上難點,設計出一套相對完善的全鏈路灰度發佈方案,整體方案如下:

1)在前端部分,請求會統一攜帶流量標籤參數發到華爲雲CSE應用網關上面。

2)CSE應用網關會選中各種類型的流量,將這些流量根據需求分別染色,比如通過請求header進行標記染色。

3)CSE應用網關會將染色後的流量轉發到帶有不同tag的後端微服務實例,tag可以由應用發佈流水線注入到相應發佈的微服務實例當中。

4)藉助微服務實例上掛載的Sermant Agent,接收到應用網關流量的微服務實例會通過Sermant Agent提供的流量染色以及標籤透傳能力(適配Dubbo,SpringCloud)將流量特徵保留並轉發到合適的下一跳微服務實例。對於後續鏈路上的微服務實例,都可以通過微服務實例上面的Sermant Agent進行特徵的傳遞。

3.3 爲什麼要選擇Sermant Agent?

考慮到目前Dubbo和SpringCloud是國內使用量較多的微服務開發框架,爲了不產生過多框架適配工作量,因此選用了基於Java Agent技術的Sermant Agent,利用這種無侵入式的特點,用戶只需要在微服務實例啓動時將Sermant Agent掛載到實例進程當中即可。Sermant Agent針對Dubbo和SpringCloud兩種主流微服務框架適配了流量染色以及標籤透傳的能力。通過流量染色和標籤透傳,Sermant Agent就可以實現流量特徵的保留以及傳遞到下一跳。Sermant Agent進行流量染色以及標籤透傳的全流程如下:

通過配置中心,用戶可以在控制檯界面下發服務粒度的染色規則,用於判斷入方向的流量特徵是否符合特定條件,若匹配則對該流量進行染色,在同一調用鏈的出方向流量中攜帶該染色標籤然後通過請求透傳給下一跳,因此用戶可以通過下發自定義的染色規則到對應微服務,允許目的特徵流量進入微服務實例併爲出流量賦予新的特徵。

在全鏈路灰度發佈的場景下,Sermant Agent染色規則相對簡單,sermant Agent會允許目的特徵的流量進入微服務實例然後染色時帶上相同的特徵,染色後的流量再流入到對應tag的微服務實例。

四、總結

基於Sermant的全鏈路灰度發佈方案可以解決DMS系統目前在一些如新業務在試點門店測試上線等業務場景遇到的困難,並且這一套方案能適應各類敏捷迭代的業務場景。

在開發測試過程中,客戶可以根據需求在邏輯上劃分出一套屬於自己的服務鏈路,只需要關注自己設定的特徵流量即可,這種模式可以爲客戶省去搭建DMS系統中一些共用的模塊時間以及節約環境資源,並且還可以很方便地將帶有試點特徵的流量引入到含有自己試點應用的鏈路環境當中。

在發佈過程中,客戶還可以根據需要把一部分生產流量引入到自己的新版本業務鏈路環境當中,完成新版本的驗證。

----------------------------------------------------------------------------------

Sermant作爲專注於服務治理領域的字節碼增強框架,致力於提供高性能、可擴展、易接入、功能豐富的服務治理體驗,並會在每個版本中做好性能、功能、體驗的看護,廣泛歡迎大家的加入。

 

點擊關注,第一時間瞭解華爲雲新鮮技術~

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章