我的有一些淺薄的理解但願能夠批評指正,從概念和應用 兩個方面概述:
1、概念:分佈式也叫分佈式服務,也就是說 他是 一種面向服務思想的程序設計和架構風格,典型的特色是模塊化的開發方式。對業務拆分,程序解耦,以應對咱們網站或者平臺 日漸複雜和龐大的實際業務場景。這樣有幾個個很是實際的好處是:
第1,服務之間解耦,相對獨立,提升了程序的 伸縮性 利於咱們 針對業務擴展 的實際場景的開發需求。
2. 經過分佈式的獨立部署 大大緩解維護工做 與 數據庫訪問的 壓力,
3. 模塊化開發能夠 把 咱們 都能用到的資源 剝離出來 提升資源的 高複用性。
比如如,流水線的生產方式,將一件複雜繁瑣的工程 細分紅 簡單而高效的小任務。說道這裏,咱們就的考慮幾個問題,就是應用方面的,好比 分佈式服務的管理通訊就是 相對獨立的服務與服務之間怎麼調用 與合做的,分佈式事務的具體實現。
2、分佈式的具體應用
在分佈式的服務治理這塊,咱們選擇使用的是alibaba的 dubbo框架 實現,由於dubbo比較簡單高效,除了能夠提供服務還能實現軟負載均衡,固然也有別的好比apche的xcf框架,wso2, mule等企業應用輕量級的框架,惋惜我我的經歷有限,瞭解的很少,之後再探討。
數據庫
通常 咱們 選擇 dubbo+zookeeper 第三方插件實現分佈式
dubbo的實現原理是:服務在容器中啓動時,生產者/service提供方 會暴露本身的服務端口地址 也就是在註冊中心--zookeeper 註冊本身的服務,消費者若是須要調用服務就到註冊中心去找,拿到地址經過反射調用到對應的服務。監控中心會每分鐘進行統計。
註冊中心:官方推薦zookeeper,固然,也有其餘的註冊中心能夠使用,好比Redis、Multicast、Simple,這裏只說zookeeper,其餘的之後再整理 詳說架構
Zookeeper:
它是一個爲分佈式應用提供一致性服務的軟件,提供的功能包括:配置維護、域名服務、分佈式同步、組服務等。若是從功能簡單理解就是 提供分佈式的 的樹形目錄地址服務
建議使用dubbo-2.3.3以上版本的zookeeper註冊中心客戶端
zk工做流程:生產者/服務提供方 啓動時,向dubbo對應的生產者目錄寫下本身的URL地址(企業通常是 ip+端口)
消費者/服務調用方 啓動時,向dubbo訂閱生產者地址也就是從zk獲取生產者地址,並寫下消費者的url
監控中心記錄下全部的URL
zk支持的功能:1.當生產者掛掉時,自動刪除生產者信息
2.重啓時自動恢復註冊數據和訂閱請求數據
3.會話過時時也會 自動恢復註冊和訂閱 數據
具體的使用:
當設置<dubbo:registry check="false" />時,記錄失敗註冊和訂閱請求,後臺定時重試。
可經過<dubbo:registry username="admin" password="1234" />設置zookeeper登陸信息。
可經過<dubbo:registry group="dubbo" />設置zookeeper的根節點,不設置將使用無根樹。
支持*號通配符<dubbo:reference group="*" version="*" />,可訂閱服務的全部分組和全部版本的提供者。
從2.2.0版本開始缺省爲zkclient實現,以提高zookeeper客戶端的健狀性。
缺省配置:
<dubbo:registry ... client="zkclient" />
或:
dubbo.registry.client=zkclient
或:
zookeeper://10.20.153.10:2181?client=zkclient負載均衡
Curator Zookeeper Registry框架
從2.3.0版本開始支持可選curator實現。
若是須要改成curator實現,請配置:
<dubbo:registry ... client="curator" />
或:
dubbo.registry.client=curator
或:
zookeeper://10.20.153.10:2181?client=curator分佈式
Zookeeper單機配置:
<dubbo:registry address="zookeeper://10.20.153.10:2181" />
Or:
<dubbo:registry protocol="zookeeper" address="10.20.153.10:2181" />
Zookeeper集羣配置:
<dubbo:registry address="zookeeper://10.20.153.10:2181?backup=10.20.153.11:2181,10.20.153.12:2181" />
Or:
<dubbo:registry protocol="zookeeper" address="10.20.153.10:2181,10.20.153.11:2181,10.20.153.12:2181" />
同一Zookeeper,分紅多組註冊中心:
<dubbo:registry id="chinaRegistry" protocol="zookeeper" address="10.20.153.10:2181" group="china" />
<dubbo:registry id="intlRegistry" protocol="zookeeper" address="10.20.153.10:2181" group="intl" />模塊化