理解分布式架構:
分布式系統(distributed system)是建立在網路之上的軟體系統。正是因為軟體的特性,所以分布式系統具有高度的內聚性和透明性。因此,網路和分布式系統之間的區別更多的在於高層軟體(特別是作業系統),而不是硬體。
為什麼會發展分布式架構?
1.穩定性和可用性這兩個指標很難達到。如:單點問題,一旦大型主機出現故障,那整個系統就將處於不可用的狀態。而對於大型機的使用機構來說,這種不可用導致的損失是非常巨大的。
2.單機處理能力存在瓶頸
3.公升級單機處理能力的價效比越來越低.
分布式系統的發展
1.單體式架構:
垂直架構:
分布示架構:
分布式架構所帶來的問題:
分布式事物:
分布式事物是指乙個操作,分成幾個小操作在多個伺服器上執行,要麼多成功,要麼多失敗這些分布事物要做的
不允許服務有狀態(stateless service)
無狀態服務是指對單次請求的處理,不依賴其他請求,也就是說,處理一次請求所需的全部資訊,要麼都包含在這個請求裡,要麼可以從外部獲取到(比如說資料庫),伺服器本身不儲存任何資訊。
服務依懶關係複雜
服務 a --> b–> c 那和服務c 的修改 就可能會影響 b 和c,事實上當服務越來 越多的時候,c的變動將會越來越困難。
部署運維成本增加
不用說了,相比之前幾個節點,運維成本的增加必須的。
原始碼管理成本增加:
原本一套或幾套原始碼現在拆分成幾十個原始碼庫,其中分支、tag都要進行相應管理。
如何保證系統的伸縮性:
伸縮性是指,當前伺服器硬體公升級後或新增伺服器處理能力就能相對應的提公升。
分布式會話:
此僅針對應用層服務,不能將session 儲存在乙個伺服器上。
分布式job
通常定時任務只需要在一台機器上觸發執行,分布式的情況下在哪台執行呢?
重點來了
dubbo架構簡要介紹
架構圖
流程說明:
1.provider(提供者)繫結指定埠並啟動服務
2.指供者連線註冊中心,併發本機ip、埠、應用資訊和提供服務資訊傳送至註冊中心儲存
3.consumer(消費者),連線註冊中心 ,並傳送應用資訊、所求服務資訊至註冊中心
4.註冊中心根據 消費 者所求服務資訊匹配對應的提供者列表傳送至consumer 應用快取。
5.consumer 在發起遠端呼叫時基於快取的消費者列表擇其一發起呼叫。
6.provider 狀態變更會實時通知註冊中心、在由註冊中心實時推送至consumer
這麼設計的意義:
1.consumer 與provider 解偶,雙方都可以橫向增減節點數。
2.註冊中心對本身可做對等集群,可動態增減節點,並且任意一台宕掉後,將自動切換到另一台
3.去中心化,雙方不直接依懶註冊中心,即使註冊中心全部宕機短時間內也不會影響服務的呼叫
4.服務提供者無狀態,任意一台宕掉後,不影響使用
dubbo 整體的設計圖
config 配置層:對外配置介面,以 serviceconfig, referenceconfig 為中心,可以直接初始化配置類,也可以通過 spring 解析配置生成配置類
**proxy 服務**層:**服務介面透明**,生成動態** 擴充套件介面為 proxyfactory
**registry 註冊中心層:**封裝服務位址的註冊與發現,以服務 url 為中心,擴充套件介面為 registryfactory, registry, registryservice
**cluster 路由層:**封裝多個提供者的路由及負載均衡,並橋接註冊中心,以 invoker 為中心,擴充套件介面為 cluster, directory, router, loadbalance
monitor 監控層:rpc 呼叫次數和呼叫時間監控,以 statistics 為中心,擴充套件介面為 monito***ctory, monitor, monitorservice
**protocol 遠端呼叫層:**封裝 rpc 呼叫,以 invocation, result 為中心,擴充套件介面為 protocol, invoker, exporter
**exchange 資訊交換層:**封裝請求響應模式,同步轉非同步,以 request, response 為中心,擴充套件介面為 exchanger, exchangechannel, exchangeclient, exchangeserver
**transport 網路傳輸層:**抽象 mina 和 netty 為統一介面,以 message 為中心,擴充套件介面為 channel, transporter, client, server, codec
**serialize 資料序列化層:**可復用的一些工具,擴充套件介面為 serialization, objectinput, objectoutput, threadpool
分布式系統簡單理解
分布式系統 分布式系統是針對乙個大系統而言,將乙個大系統分成多個子系統,即多個工程系統。我們先看下傳統的系統模式 這種是將多個功能模組全部在乙個工程中寫完。缺點 1 模組之間耦合度太高,其中乙個公升級其他都得公升級 2 開發困難,各個團隊開發最後都要整合一起 3 系統的擴充套件性差 4 不能靈活的進...
分布式 分布式系統的設計
在計算機領域,當單機效能達到瓶頸時,一般有兩種方式解決效能問題 而分布式系統的設計說白了就是 如何合理將乙個系統拆分成多個子系統部署到不同機器上。講設計方法前,先介紹分布式系統的特性 1 分布性 空間中隨機分布。這些計算機可以分布在不同的機房,不同的城市,甚至不同的國家。2 對等性 分布式系統中的計...
分布式系統學習
分布式系統中節點分布情況在空間上是隨意分布的。系統中所有節點都是對等的,沒有主從之分。副本是分布式系統對資料和服務提供的一種冗餘方式,資料副本是指在不同節點上持久化同乙份資料,解決單點故障資料丟失的問題,服務副本是指多個節點提供同樣的服務,每個節點都有能力接受來自外部的請求並進行相應的處理。分布式系...