分布式的初衷是為了分隔和拆分子業務,所以分布式指的物件是應用伺服器。每個應用伺服器都可以部署單獨的子業務。
一般分析好處,我們可以從下面幾點進行考慮:
1.可用性。分布式部署,如果乙個業務節點出現問題,不會影響其他業務節點, 除非其他業務節點依賴了失敗節點。
2.易擴充套件,客觀上便於高效能。因為單獨的子業務,更容易擴充套件部署。
3.易維護,公升級部署時,只需要更新子業務本身的**即可。
每個子業務,都可以視作乙個子系統進行部署。
有分布式部署,就會涉及到另外乙個問題,就是業務之間的互動。各子系統,如何知道其他子系統的存在。這就需要註冊中心。每個子系統在啟動時,把自己的資訊註冊到註冊中心。而訪問其他子系統服務時,先從註冊中心獲取可用子系統的資訊,進而進行訪問。
而微服務可以視作分布式的乙個具體實現。
分布式的乙個目的,就是為了解耦服務。而這些服務之間通訊需要的是共享的東西。這些共享的東西,可以是儲存(例如,mysql,redis),或者通過訊息中介軟體,例如kafka
集群要解決的問題,也是同樣的,不過,集群可以看做同乙個業務部署多份,而不是乙個業務拆分為多個子業務。通過部署多份,再加上負載均衡,提供高可用和高併發。
當集群中的一台機器出現問題時,負載均衡器,就可以發現,並將其剔除。從而保證請求正常被響應。
這些問題都解決了,貌似沒有問題了,但是這些只是業務方面。也就是應用伺服器。而應用伺服器後面,都會對應著儲存服務,就是我們常說的資料庫。
資料庫也會故障,那麼為了解決資料庫的突發故障導致的服務不可用。就需要也為資料庫進行集群部署,而集群部署的主要方式,就是主從方案。
一主一從,或者一主多從的方案,一方面提供備份,另一方面也會為讀寫分離做基礎準備。
但是主從方案會有乙個問題,資料同步會有延遲,而這種延遲主要來自於部署的位置。所以同城部署主從會是常見方案,但是一旦遇到城市級別斷電或者網路故障,仍不能保證高可用。所以,會在異地部署乙個備份,但是這個備份平時是不會使用的,也就是冷的。而乙個過冷的資料庫,是很難作為臨時啟用的資料庫來正常工作的,風險非常大。
因為同城的主從,切換角色的可能性會存在,而且從庫平時可以作為讀庫存在,可以算作是熱庫。而異地備份,雖然也可以視作從庫,但是從未被使用過,因此,緊急啟用風險較大。
這就是兩地三中心,和兩地三中心方案帶來的問題。
如果本地和異地,一熱一冷,有這麼大的弊端,那麼,異地的資料庫也變為熱的呢?其實,這就是所謂的異地雙活,或者異地多活。而活,就是熱,表示資料庫為平時的提供服務。
異地多活,主要的挑戰來自於資料同步。
從巨集觀上來說,距離帶來的傳輸延遲會比較大。所以,資料一致性會是乙個挑戰。
從細節上來說,因為部署的異地的多個服務有可能會同時修改同一條資料,而落在兩個資料庫。這兩個資料庫中的哪條資料作為最終的資料被認可,就是乙個問題了。
另外,對於新增資料,會不會出現主鍵衝突,也是另外乙個需要考慮的問題。
對於資料修改問題,可以利用時間戳,後修改的資料,覆蓋前面修改的資料。
對於資料新增問題,可以利用全域性uui,或者利用各個機房作為主鍵字首的方式來規避主鍵衝突。
而異地多活的資料同步,則需要更多的手段,例如中介軟體來實現了。
或許,我們可以從訊息中介軟體的發布訂閱機制來獲得一些解決的思路。
在一主多備的方式下,主從同步,使用拉的方式來實現。也就是主庫將自己的redolog寫到某個特定的地方,從庫主動拉取,因為會有多個從庫,不可能採用推的方式。
異地多活中的某個熱庫,對於其他熱庫來說,當然就是從庫。所以,乙個熱庫,只管將自己的redolog寫到某個地方,其他熱庫需要自行拉取。
沙洋有幾個微服務群 分布式,微服務,集群和異地多活
分布式的初衷是為了分隔和拆分子業務,所以分布式指的物件是應用伺服器。每個應用伺服器都可以部署單獨的子業務。一般分析好處,我們可以從下面幾點進行考慮 1.可用性。分布式部署,如果乙個業務節點出現問題,不會影響其他業務節點,除非其他業務節點依賴了失敗節點。2.易擴充套件,客觀上便於高效能。因為單獨的子業...
集群 分布式 微服務的區別
開門見山,見標題。集群是個物理形態,分布式是個工作方式,微服務是一種架構風格。集群模式是不同伺服器部署同一套服務對外訪問,實現服務的負載均衡。區別集群的方式是根據部署多台伺服器業務是否相同。將乙個大的系統劃分為多個業務模組,業務模組分別部署到不同的機器上,各個業務模組之間通過介面進行資料互動。區別分...
什麼是集群,分布式,微服務
概念 1 什麼是集群 集群 同乙個業務,部署在多個伺服器上 不同的伺服器執行同樣的 幹同一件事 集群是指將多台伺服器集中在一起,每台伺服器都實現相同的業務,做相同的事情。如果一台宕機,另一台可以起作用。但是每台伺服器並不是缺一不可,存在的作用主要是緩解併發壓力和單點故障轉移問題。我們可以利用一些廉價...