問題探索
一個完備的分布式架構應該具備和功能?
討論范圍
1.分布式微服務架構畫像
2.分布式微服務市場需求與前景
3.分布式微服務在企業項目中的地位
4.分布式微服務生態圈
5.技術架構嚴謹的本質
6.分布式微服務治理技術原理
7.分布式微服務服務異步與同步的原理
8.分布式微服務Spring Cloud Alibaba Dubbo三大法寶
聚焦
架構設計思想
1.分布式微服務架構畫像
1.1 Dubbo架構

1.2 分布式Dubbo架構詳細設計
http://dubbo.apache.org/en-us/docs/dev/design.html
數據為什么要使用序列化?
因為協議環境針對的是遠程過程調用,針對方法級別的調用,傳輸的參數是一個對象,因此使用的是序列化。


2.分布式微服務市場需求與前景
2.1 Baidu RPC Framework
百度在2008年開發的RPC框架,在百度產品線廣泛使用,已被brpc代替。
百度內部最常使用的工業級RPC框架,有1,000,000+個實例(不包含Client),在百度內叫“baidu-rpc",目前只開源C++版本。
2.2 谷歌Grpc
主要用於智能電視、智能家居。
支持跨語言:Android java、C#、Node、PHP、Python、Ruby...
GRPC都基於定義服務的思想。
既指定可以通過其參數和返回類型進行遠程調用。

GRPC可以將協議緩沖區用作其接口定義語言(IDL)和其基礎消息交換格式。
2.3 Sofa RPC
是螞蟻金服的技術架構。
2.4 Netflix Feign
2.5 Spring Cloud Alibaba Dubbo
3.在企業項目中的使用

4.分布式微服務服務異步與同步的原理
4.1 通訊模型

callback是真正的異步,可跨線程調用。
future是偽異步。
Dubbo中沒有同步調用,均為異步調用。
使用請求ID實現請求和響應進行映射。
5.分布式微服務Spring Cloud Alibaba Dubbo三大法寶
5.1 法寶一(URL BUS)
每一個資源有自己獨有的地址。
例如http://www.solomonall.com?pid=1234&token=sns212dfdfd&threads=10
通用URL思想:
URL
ftp:
mysql:
oracle://
dubbo://
registry://
consumer://
tmp://
URL BUS結構詳解

urls:定位在一個資源時,還可以游離至其他的資源,可以理解為多分枝列表。
URL輸出案例

URL BUS如何生成

URL BUS如何進行協議轉換

5.2 法寶二(Dynamic Proxy)
動態代理,在Dubbo中充當遠程訪問的中間層,由於組織請求數據,然后將Invocation數據傳輸到各個Invoker中進行處理。

5.3 法寶三(Extension Loader)
一個接口代表一個服務。

