Dubbo架構設計簡單了解
定義: Dubbo 是開源的分布式服務框架。
特點:最大的特點是按照分層的方式來架構,這樣可以使各個層之間解耦;
服務模型:可以簡單的劃分為,提供服務方和消費服務方,兩個角色。Provider 和 Consumer;
Dubbo 分為10層:
1. 服務接口層(Service):該層是與實際業務邏輯相關的,根據服務提供方和消費服務方的業務設計對應的接口和實現。
2. 配置層(Config):對外配置接口,以 ServiceConfig 和 ReferenceConfig 為中心,可以直接 new 配置類,也可以通過 Spring 解析配置生成配置類。
3. 服務代理層(Proxy):服務接口透明代理,生成服務的客戶端 Stub 和服務器端 Skeleton,以 ServiceProxy 為中心,擴展接口為 ProxyFactory。
4. 服務註冊層(Registry):封裝服務地址的註冊與發現,以服務 URL 為中心,擴展接口為 RegistryFactory、Registry 和 RegistryService。可能沒有服務註冊中心,此時服務提供方直接暴露服務。
5. 集群層(Cluster):封裝多個提供者的路由及負載均衡,並橋接註冊中心,以 Invoker 為中心,擴展接口為 Cluster 、Directory、Router 和 LoadBalance。將多個服務提供方組合為一個服務提供方,實現對於服務消費方來透明,只需要與一個服務提供方進行交互。
6. 監控層(Monitor):RPC 調用次數和調用時間監控,以 Statistics 為中心,擴展接口為 MonitorFactory、Monitor 和 MonitorService。
7. 遠程調用層(Protocol):封將 RPC 調用,以 Invocation 和 Result 為中心,擴展接口為 Protocol、Invoker 和 Exporter。Protocol 是服務域,它是 Invoker 暴露和引用的主功能入口,它負責 Invoker 的生命周期管理。 Invoker 是實體域,它是 Dubbo 的核心模型,其它模型都向它靠攏,或轉換它,它代表一個可執行體,可向它發起 invoke 調用,它有可能是一個本地的實現,也可能是一個遠程的實現,也可能一個集群實現。
8. 信息交換層(Exchange):封裝請求響應模式,同步轉異步,以 Request 和 Response 為中心,擴展接口為 Exchanger 、ExchangeChannel、ExchangeClient 和 ExchangeServer。
9. 網絡傳輸層(Transport):抽象 mina 和 netty 為統一接口,以 Message 為中心,擴展接口為 Channel、Transporter、Client、Server 和 Codec。
10. 數據序列化層(Serialize):可復用的一些工具,擴展接口為 Serialization、ObjectInput、ObjectOutput 和 ThreadPool。
參考鏈接:http://shiyanjun.cn/archives/325.html
Dubbo架構設計簡單了解