在今年的雙11準備期間,業務同學提出要針對新零售進行特殊的保障,希望新零售過來的流量,單獨進入到一批機器,和其他普通流量隔離開來,這對新零售系統穩定性提出更高的要求。
需求總結下來就是:
我們分三步來說明dpath如何工作:
簡單來說,我們需要的資訊就是乙個專屬環境裡包含哪些應用的哪些機器。該資訊以json形式存放在配置中心,樣本如下:
,
, , ]}
]}
dpath工具包會訂閱該配置,各個中介軟體使用dpath工具包即可獲知所需的資訊。
dpath通過trace模組(全鏈路的trace功能,可以在鏈路上傳遞資料)攜帶的dpath_env屬性來識別當前流量屬於哪乙個專屬環境。具體如何根據請求資訊對映到乙個專屬環境是業務邏輯,由業務同學完成。這個識別動作可以放在如下三個地方:
可以根據http請求資訊來識別流量。根據業務規則實現請求到dpath_env的對映,通過nginx模組生成將env資訊新增到trace模組的上下文
中介軟體取環境資訊如果為空,缺省會使用當前機器所屬的環境。所以如果入口應用確定,那麼將整個入口應用劃到專屬環境即可。目前新零售都是這種模式。
業務**可以根據需要設定trace模組上下文中的的dpath_env,隨時改變流量所屬的環境。
dpath只定義了機器,環境,以及流量的關係,並沒有規定如何引導流量。引導流量由各個中介軟體自行實現。
這裡只以rpc為例說明如何基於dpath的規則來引導流量到對應的伺服器。
為了方便理解,先忽略rpc其他的路由邏輯,看最簡單情況下,單次呼叫的處理。沒有dpath功能時,rpc客戶端就是從註冊中心拿到service對應的伺服器列表,然後隨機呼叫。如下圖所示:
整個鏈路上,乙個專屬環境裡所有應用的專屬伺服器串起來構成了特殊流量的專屬路徑。如下圖所示:
鏈路上沒有劃機器給newretail的應用,使用公共集群
rpc之外,訊息等中介軟體,都用各自的方式達到了類似的隔離效果。這裡不再贅述細節。下面只提供乙個rpc和訊息支援dpath的效果簡圖:
野流量隔離dpath是乙個通用的流量隔離方案,可以支援一些需要隔離或者引導流量的場景,比如全鏈路常態隔離,灰度測試,藍綠發布等。根據上面的描述,rpc的隔離邏輯是在客戶端生效。那麼如果客戶端沒公升級的話(很難快速協調所有客戶端統一公升級),就會有未知流量打到專屬伺服器,老客戶端過來的不符合規則的流量我們稱之為野流量。
為了解決野流量問題。註冊中心的同學在發布訂閱功能的基礎上,提供了乙個namespace功能。我們會把專屬伺服器的服務發布到dpath這個namespace下,普通伺服器預設發布到default這個namespace。新版本的客戶端會訂閱default+dpath兩個namespace的資料,相當於拿到全量位址。而註冊中心保證老的客戶端只能看到default空間下的資料,這樣就不會有野流量達到專屬伺服器了。
目前業務方主要是在全鏈路上按業務屬性進行常態流量隔離,已經在幾個新零售場景線上使用,並且經歷了雙11的考驗。
以下列舉一些業務流量隔離的好處:
流量隔離方案 Dpath 護航雙十一新零售
在今年的雙11準備期間,業務同學提出要針對新零售進行特殊的保障,希望新零售過來的流量,單獨進入到一批機器,和其他普通流量隔離開來,這對新零售系統穩定性提出更高的要求。需求總結下來就是 我們分三步來說明dpath如何工作 簡單來說,我們需要的資訊就是乙個專屬環境裡包含哪些應用的哪些機器。該資訊以jso...
HBase隔離方案實戰 rsgroup
本文參考 這篇文章寫的很好,就是命令沒法用,一度以為我們的集群不支援rsgroup,無意中試出了幫助命令,才發現,命令不太對,不知道是作者粗心還是每個版本的命令不一樣,這裡做了一些修正,我們的集群是cdh5.12.1,hbase是1.2.0 hbase適合用於海量資料的儲存,橫向擴充套件非常方便,隨...
HBase隔離方案實戰 rsgroup
hbase適合用於海量資料的儲存,橫向擴充套件非常方便,隨著資料的增長,訪問的效能卻不會出現很大的下降。這是很多的公司選擇使用hbase作為分布式資料庫的乙個很重要的原因。正常來說,乙個hbase集群肯定不止跑乙個業務,即多個業務共享集群資源。這些業務中有的對效能要求很高 有的業務要求儲存很大 有的...