哈嘍大家好,我是鹹魚 我們知道,隨著企業規模或者說業務規模的不斷擴大,為了應對不斷增長的業務需求和提高系統的可伸縮性、可靠性和性能,電腦系統由一開始的單體系統逐漸發展成分散式系統 那麼今天鹹魚給大家介紹一些關於小白在學習分散式系統遇到的一些常見誤解 ## 誤解1.網路是可靠的 **在分散式系統中, ...
哈嘍大家好,我是鹹魚
我們知道,隨著企業規模或者說業務規模的不斷擴大,為了應對不斷增長的業務需求和提高系統的可伸縮性、可靠性和性能,電腦系統由一開始的單體系統逐漸發展成分散式系統
那麼今天鹹魚給大家介紹一些關於小白在學習分散式系統遇到的一些常見誤解
誤解1.網路是可靠的
在分散式系統中,任何特定的網路通信都是不可靠的,都可能會失敗
比如說服務 A 與服務 B 進行通信,由於網路不穩定,導致它們之間的數據交換有丟失
這時候,我們就需要為系統提供一些解決方法來儘可能地保證服務 A 與服務 B 之間交換的數據不丟失
- 重傳機制
其中就包括重傳機制,當網路通信出現問題時,可以通過重試機制來重新發送數據,直到數據被成功接收。重試機制可以提高數據傳輸的可靠性,但也會增加網路通信的負擔
- 消息隊列
還有一種比較常見的解決方案就是存儲和轉發模式——數據並沒有直接發送給下游伺服器,而是將其存儲在處在上下游之間的中間伺服器上,下游伺服器再去中間伺服器上面取
看到這裡,是不是覺得這個方案很熟悉
沒錯,它就是消息隊列
在分散式系統中,可以採用消息隊列來解決網路通信不可靠導致數據丟失的問題。消息隊列可以將數據存儲在隊列中,等待接收方處理,以保證數據的可靠性
誤解2.延遲為零
在分散式系統中,服務與服務之間有可能不僅僅是邏輯上的分佈,還有可能是地理位置上的分佈
那麼就會出現服務與服務之間的通信有延遲,而且這種延遲是無法避免的,延遲可以說是任何網路請求的必須開銷
通信延遲的主要原因包括數據傳輸的物理距離、網路擁塞、傳輸介質的帶寬和傳輸協議等。由於光傳播速度的限制,跨越較長距離的數據傳輸會導致一定的傳輸延遲
舉個例子,假設一個電子商務平臺的分散式架構包括前端應用伺服器、商品服務和用戶服務,它們分別部署在美國和中國兩個地區的數據中心
當用戶在中國訪問該電商平臺時,其請求需要經過國際互聯網進行跨洲傳輸,可能會導致通信延遲增加。這種延遲會對用戶體驗產生影響,例如網頁載入速度變慢或交互響應時間延長
現在比較常見的解決方案就是——內容分髮網絡(Content delivery networks, CDN)
誤解3.網路是安全的
沒有絕對安全的網路
在分散式系統中,網路存在不安全的情況是一個重要的問題。由於分散式系統的核心特點是通過網路進行通信和數據傳輸,網路的不安全性可能導致以下問題:
- 數據泄露:網路傳輸過程中,如果未加密或傳輸通道存在漏洞,敏感數據可能被截獲或竊取,導致數據泄露的風險
- 數據篡改:網路中的攻擊者可能截取、篡改或偽造數據包,對數據進行惡意篡改或操縱,從而影響系統的完整性和可靠性
- DOS 和 DDOS 攻擊:網路中的攻擊者可以通過拒絕服務(Denial of Service,DoS)攻擊或分散式拒絕服務(Distributed Denial of Service,DDoS)攻擊,使系統無法正常響應合法用戶的請求,導致服務不可用
- 身份驗證和授權問題:分散式系統中的各個節點需要相互進行身份驗證和授權,以確保只有合法的用戶或服務可以訪問系統資源。網路不安全可能導致身份偽造、惡意訪問和許可權提升等問題
為了應對分散式系統中網路不安全的情況,可以採取以下安全措施:
- 加密通信:使用加密協議和演算法對數據進行加密,確保在網路傳輸過程中數據的機密性和完整性。
- 身份驗證和授權:採用安全的身份驗證機制,例如使用證書、令牌或雙因素認證等,驗證用戶或服務的身份,併為其分配適當的訪問許可權。
- 安全傳輸層協議(TLS):使用TLS協議保護網路通信,確保數據在傳輸過程中的安全性和完整性。
- 防火牆和入侵檢測系統:在網路邊界部署防火牆和入侵檢測系統,監測和阻止惡意流量和攻擊,保護系統免受未經授權的訪問和攻擊。
- 安全審計和日誌監控:記錄和監控系統的安全事件和活動,及時檢測異常行為,併進行安全審計和調查。
- 安全更新和漏洞修複:及時更新和修補系統中存在的安全漏洞,確保系統的安全性和穩定性。
誤解4.架構是一成不變的
分散式系統的架構通常是動態的,不是固定的
在分散式系統中,節點可以隨時加入或退出,並且節點之間的連接關係可以發生變化
這樣的好處是什麼呢?
- 彈性擴展
分散式系統的一個主要優勢是能夠根據需求進行彈性擴展。當系統負載增加時,可以通過添加更多的節點來分擔負載
這種擴展可以是垂直的(增加節點的資源容量)或水平的(增加節點的數量),並且可以根據需要進行動態調整。這種靈活性使得系統能夠適應變化的負載需求
- 提高容錯性
在分散式系統中,即使某個節點發生故障或斷開連接,系統仍然能夠繼續運行(避免了單點故障)
其他節點可以接管故障節點的工作,並保持系統的可用性和穩定性。這種容錯性使得分散式系統更加健壯和可靠
- 數據冗餘
為了提高系統的性能和可靠性,分散式系統通常會在不同的節點之間複製和存儲數據的副本
副本(Replica)是分散式系統最常見的概念之一。當某一個節點上存儲的數據丟失時,可以從副本上讀取該數據以此來解決數據丟失的問題
誤解5.傳輸成本為0
雖然分散式系統提供了節點之間的通信和數據交換能力,但實際上,這種信息傳輸是需要消耗資源和產生成本的
- 帶寬消耗
節點之間的信息傳輸需要利用網路帶寬進行數據傳輸
帶寬是有限的資源,因此在分散式系統中進行大量的數據傳輸會占用網路帶寬,從而導致其他數據傳輸速度的下降或延遲
- 網路延遲
信息在分散式系統中傳輸需要經過網路,而網路延遲是不可避免的
這包括了傳輸時間、傳播時間以及在路由器和網路設備上的處理時間等
分散式系統中,節點之間的信息傳輸可能會受到網路延遲的影響,特別是當節點之間的地理位置較遠時,通信延遲可能更高
- 數據傳輸安全
在分散式系統中,確保信息傳輸的安全性是至關重要的
為了保護數據的隱私和完整性,可能需要採取加密、認證和訪問控制等安全措施,這也會增加信息傳輸的成本和複雜性