自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何正確使用上線部署,泳道、預發(fā)布到底如何理解?

開發(fā) 前端
多泳道建設是一種高效、靈活的開發(fā)模式,尤其適用于復雜項目和跨部門協(xié)作場景。通過合理劃分泳道、優(yōu)化資源分配和加強團隊協(xié)作,我們可以顯著提高軟件交付速度和質量。

一、背景

如今互聯(lián)網,隨著業(yè)務需求迭代快速,同一個服務可能存在多個同時開發(fā)和測試的功能,容易發(fā)生資源搶占分支互相沖突影響的問題,降低開發(fā)測試效率。

同時微服務架構下,一個功能可能需要依賴多個服務。在測試其中一個服務的改動時,如果依賴的服務發(fā)生了改動或者故障,也會影響這個功能的測試。

......

以上種種問題情況,都會導致服務從測試到線上正式環(huán)境的環(huán)境差異性較大。

規(guī)范上線部署流程,通過對環(huán)境的隔離來剝離耦合型風險,便于問題暴露及快速解決。

圖片圖片

二、預發(fā)布環(huán)境

2.1 介紹

預發(fā)布環(huán)境 Staging,即線上環(huán)境、正式生產環(huán)境。

為避免因為測試環(huán)境和線上環(huán)境的差異性等帶來的缺陷漏測而設立的一套環(huán)境。其配置等基本和線上一致,只是預發(fā)布環(huán)境web服務器不在線上集成服務器范圍之內,為單獨的一臺機器。

預發(fā)布環(huán)境 也算是線上/正式生產環(huán)境,只是其具有特殊的隔離特性(包括網絡/數(shù)據/用戶/行為等),不能被線上用戶訪問。

2.2 預發(fā)布環(huán)境 vs 灰度環(huán)境


預發(fā)布環(huán)境 

灰度環(huán)境

目標

正式發(fā)布之前進行最后的測試和準備工作,確保產品穩(wěn)定可靠

在產品正式發(fā)布之前對用戶進行試用,收集反饋和觀察市場反應

范圍

涉及整個產品,所有功能和特性都會進行全面測試

僅涉及一小部分用戶,為了控制風險和規(guī)??煽?/p>

時間點

預發(fā)布通常在正式發(fā)布之前的最后階段進行,通常會有一個明確的時間表

灰度發(fā)布在預發(fā)布之后,但在正式發(fā)布之前的任何時間進行,其持續(xù)時間可以根據反饋和調整的需要而定

網絡

與生產隔離

與生產一致

隔離性

真實用戶無法訪問

真實用戶可訪問

2.3 變更操作

Q:如果新版本程序需要更改表結構等(eg. 加個表字段),那么,部署到預發(fā)布環(huán)境時也需要更改表字段,這個可能會影響線上環(huán)境程序代碼的運行,如何解決?

圖片圖片

1)把預發(fā)布環(huán)境使用的數(shù)據庫切換為測試環(huán)境使用的數(shù)據庫;

2)根據實際部署過程,如果有必要,可有針對性的測試下數(shù)據庫的變更是否會影響線上當前代碼程序的運行;

3)把新代碼部署到預發(fā)布環(huán)境,測試程序是否正常運行;

4)預發(fā)布測試完畢,如果沒問題,先上線數(shù)據庫(即在正式環(huán)境執(zhí)行對應的數(shù)據庫變更操作);

5)把預發(fā)布環(huán)境連接的數(shù)據庫切換為線上環(huán)境使用的數(shù)據庫,再次進行預發(fā)布環(huán)境的測試;

6)如果預發(fā)布環(huán)境測試通過,則把預發(fā)布環(huán)境的代碼部署到線上生產環(huán)境。

三、多泳道部署

3.1 介紹

多泳道部署(Multi-lane Deployment)是一種部署策略。

當指定某泳道發(fā)布服務時,發(fā)布系統(tǒng)會為該服務的實例打上相應的泳道標記,服務注冊和發(fā)現(xiàn)模塊就能知道同一服務的不同實例所屬的泳道。

圖片圖片

所謂泳道,可以理解為多個并行且相互隔離的調用鏈,彼此調用互不影響,就如同泳池里的泳道一樣。這種策略可以提高系統(tǒng)的可用性和容錯性,因為如果一個泳道出現(xiàn)問題,其他泳道仍然可以正常運行。

除了創(chuàng)建出來的泳道之外,還會存有一條默認的主干道,為各個服務提供默認實例,可以將其理解為常規(guī)的、常備的測試環(huán)境。除了創(chuàng)建的泳道外,還會存在一條默認的主干道,提供各個服務的默認實例,可以理解為常規(guī)、常備的測試環(huán)境。

3.2 端到端的統(tǒng)一

1)在服務 A 需對服務 B 進行訪問之時,服務 A 會率先于服務發(fā)現(xiàn)模塊當中獲取服務 B 實例的地址。鑒于服務 A 在請求中添加了 t2 泳道的標識,此時服務發(fā)現(xiàn)模塊將會從服務 B 處于 t2 泳道的實例之中選取其一進行返回,隨后服務 A 便可直接對相應實例予以訪問。

2)移動端和 web 端團隊需要配合做相應的改造。測試時,移動端和 web 端的測試人員能夠自行切換至指定泳道,切換完畢后,所有發(fā)送至服務端的請求都會帶上相應的泳道標記,這樣泳道測試就實現(xiàn)了端到端統(tǒng)一。

圖片圖片

泳道 主要解決的問題:

  • 解決資源搶占,提高研發(fā)效率
  • 保證測試環(huán)境的穩(wěn)定性

3.3 實現(xiàn)思路

實現(xiàn)多泳道部署,主要思路包括以下幾點:

1、環(huán)境準備

    首先,需要準備多個獨立的環(huán)境,這些環(huán)境可以是物理服務器,也可以是虛擬機或容器。不同的需求需要隔離級別不同,如果多環(huán)境共用底層數(shù)據,則代碼中使用域名配置數(shù)據庫,由 DNS 服務指向同一套數(shù)據庫。

    多數(shù)情況下,泳道還是采用的底層共用數(shù)據存儲,好處是每次新創(chuàng)建分支用不到不用再創(chuàng)建數(shù)據庫和同步數(shù)據,大大提高了環(huán)境申請和銷毀效率。對于自動化測試等需要數(shù)據隔離的,我們則另外部署一套全鏈路環(huán)境。

2、配置管理

    每個泳道可能需要不同的配置,例如數(shù)據庫連接字符串、第三方服務的API密鑰等。你需要一個配置管理系統(tǒng)來管理這些配置,并確保它們在部署時被正確地應用到每個泳道。

    邏輯結構主要分為主泳道和分支泳道

主泳道部署全鏈路穩(wěn)定代碼,作為公共環(huán)境,承載其他環(huán)境缺省服務,保證請求鏈路通暢。

分支泳道只需部署改動或增量服務,未改動服務使用主泳道中服務,減少公共服務的維護成本,提高使用效率等。

3、部署策略

    你需要決定如何將應用程序部署到各個泳道。你可以選擇一次部署到所有泳道,也可以選擇逐個部署。

    逐個部署可以降低風險,因為如果新版本有問題,你可以在部署到所有泳道之前發(fā)現(xiàn)并修復它。

4、流量管理

    你需要一個負載均衡器或類似的工具來管理流量,將請求分發(fā)到各個泳道。你可以根據各種策略來分發(fā)流量,例如輪詢、最少連接數(shù)、響應時間等。

    網關層負責環(huán)境識別與環(huán)境標識注入,通過測試域名隔離不同環(huán)境,RPC 層負責服務發(fā)現(xiàn)與選擇,環(huán)境標識透傳等。

5、監(jiān)控和故障恢復

    你需要監(jiān)控每個泳道的性能和健康狀況,并在檢測到問題時自動或手動切換到其他泳道。

四、總結

多泳道建設是一種高效、靈活的開發(fā)模式,尤其適用于復雜項目和跨部門協(xié)作場景。通過合理劃分泳道、優(yōu)化資源分配和加強團隊協(xié)作,我們可以顯著提高軟件交付速度和質量。

在未來軟件開發(fā)中,多泳道建設將繼續(xù)發(fā)揮重要作用。希望本文能為你提供有益的參考和啟示。

責任編輯:武曉燕 來源: 架構精進之路
相關推薦

2017-08-30 17:47:35

MySql索引

2013-09-25 10:46:10

2010-02-01 10:54:37

C++框架

2022-09-07 08:58:58

Node.js框架

2018-12-05 09:00:00

RedisRedis Strea數(shù)據庫

2009-12-09 14:04:45

PHP include

2009-12-16 17:00:43

Ruby on Rai

2009-12-04 17:16:41

PHP析構函數(shù)

2009-12-17 11:36:55

Ruby輸入輸出

2019-11-14 16:23:07

MySQL索引數(shù)據庫

2010-01-18 17:23:55

函數(shù)

2010-02-03 15:40:37

Python函數(shù)

2021-03-15 12:23:24

Pythonyield代碼

2023-12-26 11:56:14

Go通道編程

2010-01-18 17:23:55

函數(shù)

2022-11-23 08:00:00

開發(fā)Regulator調試

2010-08-05 15:40:07

DB2快照函數(shù)

2020-06-01 11:01:28

智慧城市物聯(lián)網技術

2010-01-05 14:01:27

JSON.NET

2010-01-07 16:46:28

VB.NET延時函數(shù)
點贊
收藏

51CTO技術棧公眾號