一、入門
整體架構:單一架構
垂直架構:mvc
分布式服務架構:rpc
流計算架構:
當服務越來越多時,容量評估變得困難,而且小規模的服務也經常造成資源浪費。為了解決這些問題,應新增排程中心,以根據流量管理集群容量並提高集群利用率。目前,用於提高機器利用率的資源排程和治理中心(soa)是關鍵。
在大型服務出現之前,應用程式可能只是通過使用rmi或hessian公開或引用遠端服務,呼叫是通過配置服務url來完成的,而負載平衡是通過硬體(如f5)來完成的。當服務越來越多時,配置服務url變得非常困難,f5硬體負載平衡器的單點壓力也在增加。此時,需要乙個服務登錄檔來動態註冊和發現服務,以使服務的位置透明。通過獲取服務提供商位址列表,可以實現軟負載平衡和故障轉移,從而減少了對f5硬體負載平衡器的依賴性以及某些成本。
當事情進一步發展時,服務依賴關係變得如此複雜,以至於甚至連架構師也無法完全描述應用程式架構之間的關係。這時,需要自動繪製應用程式的依賴關係圖,以幫助架構師清除關係。
然後,流量變得更大,服務的容量問題暴露出來,需要多少臺機器來支援該服務?何時應新增機器?
服務提供者和消費者只在啟動時與註冊中心互動,註冊中心不**請求
服務消費者向註冊中心獲取服務提供者位址列表,並根據負載演算法直接呼叫提供者,如果失敗,它將選擇另乙個provider。
服務提供者無狀態,可動態增加機器部署例項,註冊中心將推送新的服務提供者資訊給消費者
服務提供者全部宕掉後,服務消費者應用將無法使用,並無限次重連等待服務提供者恢復
註冊中心,服務提供者,服務消費者三者之間均為長連線,監控中心除外。
註冊中心通過長連線感知服務提供者的存在,服務提供者宕機,註冊中心將立即推送事件通知消費者
註冊中心為對等集群,可動態增加機器部署例項,所有客戶端將自動發現新的註冊中心。
監控中心和註冊中心全部宕機,不影響已執行的提供者和消費者,消費者在本地快取了提供者列表;註冊中心和監控中心都是可選的,服務消費者可以直連服務提供者。
consumer和provider都會計算記憶體中呼叫服務的次數和耗時,並將統計資訊傳送到monitor每分鐘。
二、快速啟動
dubbo 採用全 spring 配置方式,透明化接入應用,對應用沒有任何 api 侵入,只需用 spring 載入 dubbo 的配置即可,dubbo 基於 spring 的 schema 擴充套件 進行載入。
dubbo服務介面需單獨打包,在服務提供方和消費方共享
三、成熟度
分布式事務
research
jta/xa三階段提交事務
不穩定
不可用
dubbo協議
stable
採用nio復用單一長連線,並使用執行緒池併發處理請求,減少握手和加大併發效率,效能較好(推薦使用)
在大檔案傳輸時,單一連線會成為瓶頸
可用於生產環境
alibaba
Spring官方文件閱讀筆記
beanpostprocessor.postprocessafterinstantiation 鉤子 型別轉化convertifnecessary spring建立bean的詳細過程 sqlsessiontemplate.selectlist sqlsessiontemplate.invoke de...
react hook 官方文件閱讀筆記
usestate 是在函式呼叫時儲存變數的方式 usestate是一種新方法,它與 class 裡面的this.state提供的功能完全相同。一般來說,在函式退出後變數就會 消失 而 state 中的變數會被 react 保留。const count,setcount usestate 0 括號裡邊...
openstack 官方文件閱讀之cells(二)
首次安裝 由於只有乙個api資料庫,因此它的連線資訊儲存在nova.conf檔案中。api database connection mysql pymysql root secretmysql dbserver nova api?charset utf8 由於可能存在多個 cell 資料庫 實際上每...