一、分布式基礎理論
1、什麼是分布式系統?
分布式系統是若幹獨立計算機的集合,這些計算機對于使用者來說就像單個相關系統。分布式系統(distributed system)是建立在網絡之上的軟體系統。
随着網際網路的發展,網站應用的規模不斷擴大,正常的垂直應用架構已無法應對,分布式服務架構以及流動計算架構勢在必行,亟需一個治理系統確定架構有條不紊的演進。
2、發展演變
1)、單一應用架構
當網站流量很小時,隻需一個應用,将所有功能都部署在一起,以減少部署節點和成本。此時,用于簡化增删改查工作量的資料通路架構(orm)是關鍵。
适用于小型網站,小型管理系統,将所有功能都部署到一個功能裡,簡單易用。
缺點:性能擴充比較難;協同開發問題;不利于更新維護。
2)、垂直應用架構
當通路量逐漸增大,單一應用增加機器帶來的加速度越來越小,将應用拆成互不相幹的幾個應用,以提升效率。此時,用于加速前端頁面開發的web架構(mvc)是關鍵。
通過切分業務來實作各個子產品獨立部署,降低了維護和部署的難度,團隊各司其職更易管理,性能擴充也更友善,更有針對性。
缺點: 公用子產品無法重複利用,開發性的浪費
3)、分布式服務架構
當垂直應用越來越多,應用之間互動不可避免,将核心業務抽取出來,作為獨立的服務,逐漸形成穩定的服務中心,使前端應用能更快速的響應多變的市場需求。此時,用于提高業務複用及整合的分布式服務架構(rpc)是關鍵。
4)、流動計算架構
當服務越來越多,容量的評估,小服務資源的浪費等問題逐漸顯現,此時需增加一個排程中心基于通路壓力實時管理叢集容量,提高叢集使用率。此時,用于提高機器使用率的資源排程和治理中心(soa)[ service oriented architecture]是關鍵。
3、rpc
rpc[remote procedure call]是指遠端過程調用,是一種程序間通信方式,他是一種技術的思想,而不是規範。它允許程式調用另一個位址空間(通常是共享網絡的另一台機器上)的過程或函數,而不用程式員顯式編碼這個遠端調用的細節。即程式員無論是調用本地的還是遠端的函數,本質上編寫的調用代碼基本相同。
rpc基本原理
rpc兩個核心子產品:通訊,序列化。
二、dubbo核心概念
1、簡介
高性能java rpc架構apache dubbo (incubating) |ˈdʌbəʊ| 是一款高性能、輕量級的開源java rpc架構,它提供了三大核心能力:面向接口的遠端方法調用,智能容錯和負載均衡,以及服務自動注冊和發現。
官網:http://dubbo.apache.org/
2、基本概念
服務提供者(provider):暴露服務的服務提供方,服務提供者在啟動時,向注冊中心注冊自己提供的服務。
服務消費者(consumer): 調用遠端服務的服務消費方,服務消費者在啟動時,向注冊中心訂閱自己所需的服務,服務消費者,從提供者位址清單中,基于軟負載均衡算法,選一台提供者進行調用,如果調用失敗,再選另一台調用。
注冊中心(registry):注冊中心傳回服務提供者位址清單給消費者,如果有變更,注冊中心将基于長連接配接推送變更資料給消費者
監控中心(monitor):服務消費者和提供者,在記憶體中累計調用次數和調用時間,定時每分鐘發送一次統計資料到監控中心
調用關系說明:
服務容器負責啟動,加載,運作服務提供者。
服務提供者在啟動時,向注冊中心注冊自己提供的服務。
服務消費者在啟動時,向注冊中心訂閱自己所需的服務。
注冊中心傳回服務提供者位址清單給消費者,如果有變更,注冊中心将基于長連接配接推送變更資料給消費者。
服務消費者,從提供者位址清單中,基于軟負載均衡算法,選一台提供者進行調用,如果調用失敗,再選另一台調用。
服務消費者和提供者,在記憶體中累計調用次數和調用時間,定時每分鐘發送一次統計資料到監控中心。
3、dubbo特性
1)、面向接口代理的高性能rpc調用
提供高性能的基于代理的遠端調用能力,服務以接口為粒度,為開發者屏蔽遠端調用底層細節
2)、智能負載均衡
内置多種負載均衡政策,智能感覺下遊節點健康狀況,顯著減少調用延遲,提高系統吞吐量。
3)、服務自動注冊與發現
支援多種注冊中心服務,服務執行個體上下線實時感覺。
4)、高度可擴充能力
遵循微核心+插件的設計原則,所有核心能力如protocol、transport、serialization被設計為擴充點,平等對待内置實作和第三方實作。
5)、運作期流量排程
内置條件、腳本等路由政策,通過配置不同的路由規則,輕松實作灰階釋出,同機房優先等功能。
6)、可視化的服務治理與運維
提供豐富服務治理、運維工具:随時查詢服務中繼資料、服務健康狀态及調用統計,實時下發路由政策、調整配置參數。