哈嘍大家好,我是鹹魚
我們知道,隨著企業規模或者說業務規模的不斷擴大,為了應對不斷增長的業務需求和提高系統的可伸縮性、可靠性和效能,計算機系統由一開始的單體系統逐漸發展成分散式系統
那麼今天鹹魚給大家介紹一些關於小白在學習分散式系統遇到的一些常見誤解
在分散式系統中,任何特定的網路通訊都是不可靠的,都可能會失敗
比如說服務 A 與服務 B 進行通訊,由於網路不穩定,導致它們之間的資料交換有丟失
這時候,我們就需要為系統提供一些解決方法來儘可能地保證服務 A 與服務 B 之間交換的資料不丟失
其中就包括重傳機制,當網路通訊出現問題時,可以通過重試機制來重新傳送資料,直到資料被成功接收。重試機制可以提高資料傳輸的可靠性,但也會增加網路通訊的負擔
還有一種比較常見的解決方案就是儲存和轉發模式——資料並沒有直接傳送給下游伺服器,而是將其儲存在處在上下游之間的中間伺服器上,下游伺服器再去中間伺服器上面取
看到這裡,是不是覺得這個方案很熟悉
沒錯,它就是訊息佇列
在分散式系統中,可以採用訊息佇列來解決網路通訊不可靠導致資料丟失的問題。訊息佇列可以將資料儲存在佇列中,等待接收方處理,以保證資料的可靠性
在分散式系統中,服務與服務之間有可能不僅僅是邏輯上的分佈,還有可能是地理位置上的分佈
那麼就會出現服務與服務之間的通訊有延遲,而且這種延遲是無法避免的,延遲可以說是任何網路請求的必須開銷
通訊延遲的主要原因包括資料傳輸的物理距離、網路擁塞、傳輸媒介的頻寬和傳輸協定等。由於光傳播速度的限制,跨越較長距離的資料傳輸會導致一定的傳輸延遲
舉個例子,假設一個電子商務平臺的分散式架構包括前端應用伺服器、商品服務和使用者服務,它們分別部署在美國和中國兩個地區的資料中心
當用戶在中國存取該電商平臺時,其請求需要經過國際網際網路進行跨洲傳輸,可能會導致通訊延遲增加。這種延遲會對使用者體驗產生影響,例如網頁載入速度變慢或互動響應時間延長
現在比較常見的解決方案就是——內容分發網路(Content delivery networks, CDN)
沒有絕對安全的網路
在分散式系統中,網路存在不安全的情況是一個重要的問題。由於分散式系統的核心特點是通過網路進行通訊和資料傳輸,網路的不安全性可能導致以下問題:
為了應對分散式系統中網路不安全的情況,可以採取以下安全措施:
分散式系統的架構通常是動態的,不是固定的
在分散式系統中,節點可以隨時加入或退出,並且節點之間的連線關係可以發生變化
這樣的好處是什麼呢?
分散式系統的一個主要優勢是能夠根據需求進行彈性擴充套件。當系統負載增加時,可以通過新增更多的節點來分擔負載
這種擴充套件可以是垂直的(增加節點的資源容量)或水平的(增加節點的數量),並且可以根據需要進行動態調整。這種靈活性使得系統能夠適應變化的負載需求
在分散式系統中,即使某個節點發生故障或斷開連線,系統仍然能夠繼續執行(避免了單點故障)
其他節點可以接管故障節點的工作,並保持系統的可用性和穩定性。這種容錯性使得分散式系統更加健壯和可靠
為了提高系統的效能和可靠性,分散式系統通常會在不同的節點之間複製和儲存資料的副本
副本(Replica)是分散式系統最常見的概念之一。當某一個節點上儲存的資料丟失時,可以從副本上讀取該資料以此來解決資料丟失的問題
雖然分散式系統提供了節點之間的通訊和資料交換能力,但實際上,這種資訊傳輸是需要消耗資源和產生成本的
節點之間的資訊傳輸需要利用網路頻寬進行資料傳輸
頻寬是有限的資源,因此在分散式系統中進行大量的資料傳輸會佔用網路頻寬,從而導致其他資料傳輸速度的下降或延遲
資訊在分散式系統中傳輸需要經過網路,而網路延遲是不可避免的
這包括了傳輸時間、傳播時間以及在路由器和網路裝置上的處理時間等
分散式系統中,節點之間的資訊傳輸可能會受到網路延遲的影響,特別是當節點之間的地理位置較遠時,通訊延遲可能更高
在分散式系統中,確保資訊傳輸的安全性是至關重要的
為了保護資料的隱私和完整性,可能需要採取加密、認證和存取控制等安全措施,這也會增加資訊傳輸的成本和複雜性