'分佈式系統中這個設計,簡單明瞭,讓你的系統更加穩定'

"

這樣的事情經常在各個互聯網公司發生,我以電商系統舉一個簡單的例子,A系統是一個活動運營頁面,給用戶抽取優惠券,B系統是用戶的訂單系統,我們常常遇到這樣的場景,當進行一場運營活動的時候,A系統的流量非常的大,最後把整個系統都拖垮了,造成用戶無法正常下單購買。

可能有人就會問,我們通常不是把活動系統跟訂單系統分開部署了麼?怎麼還會引起服務雪崩呢?


"

這樣的事情經常在各個互聯網公司發生,我以電商系統舉一個簡單的例子,A系統是一個活動運營頁面,給用戶抽取優惠券,B系統是用戶的訂單系統,我們常常遇到這樣的場景,當進行一場運營活動的時候,A系統的流量非常的大,最後把整個系統都拖垮了,造成用戶無法正常下單購買。

可能有人就會問,我們通常不是把活動系統跟訂單系統分開部署了麼?怎麼還會引起服務雪崩呢?


分佈式系統中這個設計,簡單明瞭,讓你的系統更加穩定


這是我們常見的系統部署的例子,雖然我們把不同的系統進行分開部署,但卻把流量入口跟數據庫部署在同一個模塊,所以,但數據庫過載或者Proxy過載的時候,仍然無法有效的保護系統。

隔離設計

每一位架構師、程序員、運維工程師都必須懂得隔離設計,隔離設置,源於輪船的設計,在輪船設計中,我們常常會設計多個船艙,每個船艙都是獨立的空間,這樣子,當輪船在行駛過程中,即便某個船艙遭受破壞進水,也有船艙能夠正常工作。從而保證整個輪船不會沉沒。

在分佈式系統中,隔離設計的實現有兩種不同的方式,一是系統隔離,二是用戶隔離。

系統隔離

在分佈式系統中,我們常常把不同的模塊部署到不同的機器上面,避免不同的模塊彼此之間受到影響。(每臺計算機的資源都是有限的,特別是IO密集型、CPU密集型的模塊,容易拖垮其他業務)。除此之外,我們還要對底層的存儲與上層的接入層進行分離。在實際的應用中,我們通常會對不同的不同業務的存儲進行數據庫拆分,而在接入層,常常為了節約成本,而使用限流設計。


"

這樣的事情經常在各個互聯網公司發生,我以電商系統舉一個簡單的例子,A系統是一個活動運營頁面,給用戶抽取優惠券,B系統是用戶的訂單系統,我們常常遇到這樣的場景,當進行一場運營活動的時候,A系統的流量非常的大,最後把整個系統都拖垮了,造成用戶無法正常下單購買。

可能有人就會問,我們通常不是把活動系統跟訂單系統分開部署了麼?怎麼還會引起服務雪崩呢?


分佈式系統中這個設計,簡單明瞭,讓你的系統更加穩定


這是我們常見的系統部署的例子,雖然我們把不同的系統進行分開部署,但卻把流量入口跟數據庫部署在同一個模塊,所以,但數據庫過載或者Proxy過載的時候,仍然無法有效的保護系統。

隔離設計

每一位架構師、程序員、運維工程師都必須懂得隔離設計,隔離設置,源於輪船的設計,在輪船設計中,我們常常會設計多個船艙,每個船艙都是獨立的空間,這樣子,當輪船在行駛過程中,即便某個船艙遭受破壞進水,也有船艙能夠正常工作。從而保證整個輪船不會沉沒。

在分佈式系統中,隔離設計的實現有兩種不同的方式,一是系統隔離,二是用戶隔離。

系統隔離

在分佈式系統中,我們常常把不同的模塊部署到不同的機器上面,避免不同的模塊彼此之間受到影響。(每臺計算機的資源都是有限的,特別是IO密集型、CPU密集型的模塊,容易拖垮其他業務)。除此之外,我們還要對底層的存儲與上層的接入層進行分離。在實際的應用中,我們通常會對不同的不同業務的存儲進行數據庫拆分,而在接入層,常常為了節約成本,而使用限流設計。


分佈式系統中這個設計,簡單明瞭,讓你的系統更加穩定


用戶隔離

另外一種方式,我們常常根據用戶進行隔離,不同的用戶訪問不同的運行實例。這種在大型互聯網公司也是非常常見的。例如阿里巴巴有北京、上海、杭州、深圳等多個不同的數據中心,不同的用戶訪問不同的系統實例。


"

這樣的事情經常在各個互聯網公司發生,我以電商系統舉一個簡單的例子,A系統是一個活動運營頁面,給用戶抽取優惠券,B系統是用戶的訂單系統,我們常常遇到這樣的場景,當進行一場運營活動的時候,A系統的流量非常的大,最後把整個系統都拖垮了,造成用戶無法正常下單購買。

可能有人就會問,我們通常不是把活動系統跟訂單系統分開部署了麼?怎麼還會引起服務雪崩呢?


分佈式系統中這個設計,簡單明瞭,讓你的系統更加穩定


這是我們常見的系統部署的例子,雖然我們把不同的系統進行分開部署,但卻把流量入口跟數據庫部署在同一個模塊,所以,但數據庫過載或者Proxy過載的時候,仍然無法有效的保護系統。

隔離設計

每一位架構師、程序員、運維工程師都必須懂得隔離設計,隔離設置,源於輪船的設計,在輪船設計中,我們常常會設計多個船艙,每個船艙都是獨立的空間,這樣子,當輪船在行駛過程中,即便某個船艙遭受破壞進水,也有船艙能夠正常工作。從而保證整個輪船不會沉沒。

在分佈式系統中,隔離設計的實現有兩種不同的方式,一是系統隔離,二是用戶隔離。

系統隔離

在分佈式系統中,我們常常把不同的模塊部署到不同的機器上面,避免不同的模塊彼此之間受到影響。(每臺計算機的資源都是有限的,特別是IO密集型、CPU密集型的模塊,容易拖垮其他業務)。除此之外,我們還要對底層的存儲與上層的接入層進行分離。在實際的應用中,我們通常會對不同的不同業務的存儲進行數據庫拆分,而在接入層,常常為了節約成本,而使用限流設計。


分佈式系統中這個設計,簡單明瞭,讓你的系統更加穩定


用戶隔離

另外一種方式,我們常常根據用戶進行隔離,不同的用戶訪問不同的運行實例。這種在大型互聯網公司也是非常常見的。例如阿里巴巴有北京、上海、杭州、深圳等多個不同的數據中心,不同的用戶訪問不同的系統實例。


分佈式系統中這個設計,簡單明瞭,讓你的系統更加穩定


不同的用戶群訪問不同的實力群,可以讓隔離做的更加徹底,但同時也是伴隨著非常大的挑戰。我們會面臨著存儲、不同實例間的通信等多種問題,我們後面會再次進行分析跟學習,歡迎大家關注我。

總結

好了,今天我們介紹到這裡,隔離設計,可以讓我們的系統更加穩定,無論是程序員、架構師、還是運維,都是必備的計算機專業知識。歡迎大家關注我,整理後會和大家繼續分享。大家的支持是我繼續嘮嗑的動力。同名公眾號(沙茶敏碎碎念)

"

相關推薦

推薦中...