在學習分散式系統時遇到的五個常見誤解

2023-06-01 06:00:49

哈嘍大家好,我是鹹魚

我們知道,隨著企業規模或者說業務規模的不斷擴大,為了應對不斷增長的業務需求和提高系統的可伸縮性、可靠性和效能,計算機系統由一開始的單體系統逐漸發展成分散式系統

那麼今天鹹魚給大家介紹一些關於小白在學習分散式系統遇到的一些常見誤解

誤解1.網路是可靠的

在分散式系統中,任何特定的網路通訊都是不可靠的,都可能會失敗

比如說服務 A 與服務 B 進行通訊,由於網路不穩定,導致它們之間的資料交換有丟失

這時候,我們就需要為系統提供一些解決方法來儘可能地保證服務 A 與服務 B 之間交換的資料不丟失

  • 重傳機制

其中就包括重傳機制,當網路通訊出現問題時,可以通過重試機制來重新傳送資料,直到資料被成功接收。重試機制可以提高資料傳輸的可靠性,但也會增加網路通訊的負擔

  • 訊息佇列

還有一種比較常見的解決方案就是儲存和轉發模式——資料並沒有直接傳送給下游伺服器,而是將其儲存在處在上下游之間的中間伺服器上,下游伺服器再去中間伺服器上面取

看到這裡,是不是覺得這個方案很熟悉

沒錯,它就是訊息佇列

在分散式系統中,可以採用訊息佇列來解決網路通訊不可靠導致資料丟失的問題。訊息佇列可以將資料儲存在佇列中,等待接收方處理,以保證資料的可靠性

誤解2.延遲為零

在分散式系統中,服務與服務之間有可能不僅僅是邏輯上的分佈,還有可能是地理位置上的分佈

那麼就會出現服務與服務之間的通訊有延遲,而且這種延遲是無法避免的,延遲可以說是任何網路請求的必須開銷

通訊延遲的主要原因包括資料傳輸的物理距離、網路擁塞、傳輸媒介的頻寬和傳輸協定等。由於光傳播速度的限制,跨越較長距離的資料傳輸會導致一定的傳輸延遲

舉個例子,假設一個電子商務平臺的分散式架構包括前端應用伺服器、商品服務和使用者服務,它們分別部署在美國和中國兩個地區的資料中心

當用戶在中國存取該電商平臺時,其請求需要經過國際網際網路進行跨洲傳輸,可能會導致通訊延遲增加。這種延遲會對使用者體驗產生影響,例如網頁載入速度變慢或互動響應時間延長

現在比較常見的解決方案就是——內容分發網路(Content delivery networks, CDN)

誤解3.網路是安全的

沒有絕對安全的網路

在分散式系統中,網路存在不安全的情況是一個重要的問題。由於分散式系統的核心特點是通過網路進行通訊和資料傳輸,網路的不安全性可能導致以下問題:

  1. 資料洩露:網路傳輸過程中,如果未加密或傳輸通道存在漏洞,敏感資料可能被截獲或竊取,導致資料洩露的風險
  2. 資料篡改:網路中的攻擊者可能擷取、篡改或偽造封包,對資料進行惡意篡改或操縱,從而影響系統的完整性和可靠性
  3. DOS 和 DDOS 攻擊:網路中的攻擊者可以通過拒絕服務(Denial of Service,DoS)攻擊或分散式拒絕服務(Distributed Denial of Service,DDoS)攻擊,使系統無法正常響應合法使用者的請求,導致服務不可用
  4. 身份驗證和授權問題:分散式系統中的各個節點需要相互進行身份驗證和授權,以確保只有合法的使用者或服務可以存取系統資源。網路不安全可能導致身份偽造、惡意存取和許可權提升等問題

為了應對分散式系統中網路不安全的情況,可以採取以下安全措施:

  1. 加密通訊:使用加密協定和演演算法對資料進行加密,確保在網路傳輸過程中資料的機密性和完整性。
  2. 身份驗證和授權:採用安全的身份驗證機制,例如使用證書、令牌或雙因素認證等,驗證使用者或服務的身份,併為其分配適當的存取許可權。
  3. 安全傳輸層協定(TLS):使用TLS協定保護網路通訊,確保資料在傳輸過程中的安全性和完整性。
  4. 防火牆和入侵檢測系統:在網路邊界部署防火牆和入侵檢測系統,監測和阻止惡意流量和攻擊,保護系統免受未經授權的存取和攻擊。
  5. 安全審計和紀錄檔監控:記錄和監控系統的安全事件和活動,及時檢測異常行為,並進行安全審計和調查。
  6. 安全更新和漏洞修復:及時更新和修補系統中存在的安全漏洞,確保系統的安全性和穩定性。

誤解4.架構是一成不變的

分散式系統的架構通常是動態的,不是固定的

在分散式系統中,節點可以隨時加入或退出,並且節點之間的連線關係可以發生變化

這樣的好處是什麼呢?

  • 彈性擴充套件

分散式系統的一個主要優勢是能夠根據需求進行彈性擴充套件。當系統負載增加時,可以通過新增更多的節點來分擔負載

這種擴充套件可以是垂直的(增加節點的資源容量)或水平的(增加節點的數量),並且可以根據需要進行動態調整。這種靈活性使得系統能夠適應變化的負載需求

  • 提高容錯性

在分散式系統中,即使某個節點發生故障或斷開連線,系統仍然能夠繼續執行(避免了單點故障)

其他節點可以接管故障節點的工作,並保持系統的可用性和穩定性。這種容錯性使得分散式系統更加健壯和可靠

  • 資料冗餘

為了提高系統的效能和可靠性,分散式系統通常會在不同的節點之間複製和儲存資料的副本

副本(Replica)是分散式系統最常見的概念之一。當某一個節點上儲存的資料丟失時,可以從副本上讀取該資料以此來解決資料丟失的問題

誤解5.傳輸成本為0

雖然分散式系統提供了節點之間的通訊和資料交換能力,但實際上,這種資訊傳輸是需要消耗資源和產生成本的

  • 頻寬消耗

節點之間的資訊傳輸需要利用網路頻寬進行資料傳輸

頻寬是有限的資源,因此在分散式系統中進行大量的資料傳輸會佔用網路頻寬,從而導致其他資料傳輸速度的下降或延遲

  • 網路延遲

資訊在分散式系統中傳輸需要經過網路,而網路延遲是不可避免的

這包括了傳輸時間、傳播時間以及在路由器和網路裝置上的處理時間等

分散式系統中,節點之間的資訊傳輸可能會受到網路延遲的影響,特別是當節點之間的地理位置較遠時,通訊延遲可能更高

  • 資料傳輸安全

在分散式系統中,確保資訊傳輸的安全性是至關重要的

為了保護資料的隱私和完整性,可能需要採取加密、認證和存取控制等安全措施,這也會增加資訊傳輸的成本和複雜性