本文來自微信公眾號“開源云中文社區(qū)”。
轉(zhuǎn)向基于API的架構(gòu)的一個好處是,可以快速迭代并將新的更改部署到服務中。還有通過API網(wǎng)關(guān)建立流量和路由的概念,該概念是為架構(gòu)的現(xiàn)代化建立的。API網(wǎng)關(guān)提供了多個階段,允許你在同一網(wǎng)關(guān)后面部署多個API,并且能夠在不停機的情況下進行就地更新。通過使用API網(wǎng)關(guān),你可以利用服務的眾多API管理功能,如身份驗證、速率限制、可觀察性、多API版本控制和階段部署管理(在開發(fā)、測試、階段和生產(chǎn)等多個階段部署API)。
開源API網(wǎng)關(guān)(Apache APISIX和Traefik)和服務網(wǎng)格(Istio和Linkerd)解決方案能夠進行流量分割并實現(xiàn)金絲雀發(fā)布和藍綠部署等功能。通過金絲雀測試,你只需選擇一小部分用戶就可以對API的新版本進行嚴格檢查。
金絲雀發(fā)布是什么?
金絲雀發(fā)布引入了新版本的API,并將一小部分流量流到金絲雀。在API網(wǎng)關(guān)中,流量分割使得可以逐漸將流量從目標服務的一個版本轉(zhuǎn)移或遷移到另一個版本。例如,服務的新版本v1.1可以與原始版本v1.0一起部署。流量轉(zhuǎn)移使你能夠首先只將一小部分用戶流量(例如1%)路由到v1.1,然后將所有流量隨時間推移轉(zhuǎn)移到新服務,完成金絲雀測試或發(fā)布新服務。
這允許你監(jiān)控新服務,查找技術(shù)問題,如延遲增加或錯誤率,并查找所需的業(yè)務影響。這包括檢查關(guān)鍵績效指標(如客戶轉(zhuǎn)化率或平均購物結(jié)賬值)的增加。通過在服務的多個版本之間劃分目標服務的流量,流量分割使你能夠運行A/B或多變量測試。例如,你可以將目標服務的v1.0和v1.1的流量分成50/50,并查看在特定時間段內(nèi)哪個性能更好。
在有些時候,金絲雀發(fā)布是一個很好的選擇,因為暴露在金絲雀中的流量百分比受到高度控制。權(quán)衡是,系統(tǒng)必須有良好的監(jiān)控,以便能夠快速識別問題并在必要時回滾(這可以是自動化的)。
流量鏡像
除了使用流量分割來運行試驗之外,還可以使用流量鏡像來拷貝或復制流量。你可以將其發(fā)送到其他位置或一系列位置。對于流量鏡像,重復請求的結(jié)果通常不會返回給調(diào)用服務或最終用戶。相反,在帶外評估響應的正確性。例如,它比較重構(gòu)的服務和現(xiàn)有服務生成的結(jié)果。
使用流量鏡像使你能夠“暗發(fā)布”服務,用戶對新版本一無所知,但你可以在內(nèi)部觀察所需的效果。
近年來,在系統(tǒng)邊緣實施流量鏡像已變得越來越流行。APISIX提供了代理鏡像插件來鏡像客戶端請求。它將真實的在線流量復制到鏡像服務,并能夠在不中斷在線服務的情況下對在線流量或請求內(nèi)容進行特定分析。
什么是藍綠部署?
藍綠部署通常在使用路由器、網(wǎng)關(guān)或負載均衡器的架構(gòu)中的某個點實現(xiàn)。這背后是一個完整的藍色環(huán)境和綠色環(huán)境。當前的藍色環(huán)境表示當前的活動環(huán)境,綠色環(huán)境表示堆棧的下一個版本。在切換到實時流量之前,檢查綠色環(huán)境。當它上線時,流量從藍色轉(zhuǎn)換為綠色。藍色環(huán)境已關(guān)閉,但如果發(fā)現(xiàn)問題,則回滾很快。下一個變化是從綠色變?yōu)樗{色,從第一個版本開始振蕩。
藍綠部署由于其簡單性而運行良好,是耦合服務的更好部署選項之一。管理持久化服務也更容易,但在回滾時仍需要小心。它還需要雙倍的資源才能與當前活動環(huán)境并行冷運行。
Argo Rollouts的流量管理
以上所討論的策略增加了很多價值,但推出本身是一項你不想手動管理的任務。這就是Argo Rollouts等工具對演示所討論的一些問題的價值所在。
使用Argo,可以定義一個Rollout CRD,它代表了你可以采取的策略,以推出API的新金絲雀。自定義資源定義(CRD)允許Argo擴展Kubernetes API以支持部署行為。CRD是Kubernetes的流行模式。它們允許用戶使用擴展與一個API交互,以支持不同的功能。
通過Argo Rollouts,你可以使用Apache APISIX和Apache APISIX入口控制器進行流量管理。
總結(jié)
分離服務的部署和發(fā)布(以及相應的API)是一種強大的技術(shù),特別是隨著漸進式交付方法的興起。金絲雀發(fā)布服務可以利用API網(wǎng)關(guān)流量分割和鏡像功能,并提供競爭優(yōu)勢。這有助于企業(yè)降低不良發(fā)布的風險,并了解客戶的需求。
原文鏈接:
https://opensource.com/article/23/2/api-gateway