天天看點

SpringCloud微服務:基于Nacos元件,整合Dubbo架構

源碼位址:GitHub·點這裡 || GitEE·點這裡

Dubbo服務化治理的核心架構,之前幾年在國内被廣泛使用,後續由于微服務的架構的崛起,更多的公司轉向微服務下成熟的技術棧,但是Dubbo本身确實是非常優秀的架構。

常見的應用疊代和更新的過程基本如下:

當應用通路量逐漸增大,單一應用增加機器帶來的加速度越來越小,提升效率的方法之一是将應用拆成互不相幹的幾個應用,以提升效率。此時,用于加速前端頁面開發的Web架構(MVC)是關鍵。

随着垂直應用越來越多,應用之間互動不可避免,将核心業務抽取出來,作為獨立的服務,逐漸形成穩定的服務中心,使前端應用能更快速的響應多變的市場需求。此時,用于提高業務複用及整合的分布式服務架構(RPC)是關鍵。

伴随業務發展,服務越來越多,容量的評估,小服務資源的浪費等問題逐漸顯現,此時需增加一個排程中心基于通路壓力實時管理叢集容量,提高叢集使用率。此時,用于提高機器使用率的資源排程和治理中心(SOA)是關鍵。

SpringCloud微服務:基于Nacos元件,整合Dubbo架構

而Dubbo架構的核心能力:面向接口的遠端方法調用,智能容錯和負載均衡,以及服務自動注冊和發現。正好可以解決上述業務發展的痛點。

SpringCloud是一系列架構的有序集合。它利用SpringBoot的開發便利性巧妙地簡化了分布式系統基礎設施的開發,如服務發現注冊、配置中心、消息總線、負載均衡、斷路器、資料監控等,都可以用SpringBoot的開發風格做到一鍵啟動和部署。

後續AliCloud微服務系列元件也不斷被使用起來,其中最基礎的元件Nacos注冊中心,更是直接支援Dubbo架構,這樣Cloud和Dubbo兩大架構就成功的整合在了一起。

Nacos注冊中心主要用于發現、配置、管理微服務。并且提供一組簡單易用的特性集,快速實作動态服務發現、服務配置、服務中繼資料及流量管理。

SpringCloud微服務:基于Nacos元件,整合Dubbo架構

如上圖Nacos無縫支援一些主流的開源生态架構,例如SprinCloud,Dubbo兩大架構。在AliCloud的系列元件中,還包含了Seata,RocketMQ,Sentinel等一系列元件。

SpringCloud和Dubbo整合的結構示意圖如下,使用的Nacos中心:

SpringCloud微服務:基于Nacos元件,整合Dubbo架構

Provider提供方:提供核心的Dubbo服務接口;

Consumer消費方:消費注冊的Dubbo服務接口;

Nacos注冊中心:配置、發現和管理Dubbo服務;

通過上述流程不難發現,不管從架構上看,還是用法過程,基于核心Dubbo架構和微服務原生架構是十分相似,上述流程也遵循這樣一個規則:dubbo-server連接配接自己的業務庫DB,并通過dubbo-facade中接口向外提供服務,如果不同dubbo-server需要通路其他服務接口,也必須要通過其他服務的facade接口操作,dubbo-client作為接口服務消費端,可以通過facade接口通路很多業務子產品的服務,整體架構層次十分明了。

案例結構

SpringCloud微服務:基于Nacos元件,整合Dubbo架構

包含三個子產品:server、facade、client。

核心依賴

配置檔案

主要是Nacos注冊中心和Dubbo兩個核心配置。

服務接口實作

這裡DubboService即dubbo-facade包中對外提供的接口。

注意:@Service是Dubbo架構中的注解,不是Spring架構的注解。

主要配置是連結Nacos注冊中心,訂閱注冊中心的node10-dubbo-server服務。

Dubbo接口調用

同樣,這裡DubboService即dubbo-facade包中對外提供的接口。

注意:@Reference也是Dubbo架構中的注解。

如上流程開發完成,先後啟動dubbo-server服務和dubbo-client服務,檢視注冊中心服務清單:

SpringCloud微服務:基于Nacos元件,整合Dubbo架構

通過上述getInfo接口請求測試,即可看到完整的案例效果。

很少有選擇SpringCloud+Dubbo架構的架構模式,這裡簡單說明一下為何,因為這兩個架構都是相當複雜的,學習成本是一個方面,風險是最主要原因,這兩個架構同時使用,就意味要面對和解決兩個架構下産生的問題,在任何一個架構都可以穩定的解決業務問題時,完全沒必要花裡胡哨。

SpringCloud微服務:基于Nacos元件,整合Dubbo架構

推薦閱讀:微服務元件和應用

序号

文章标題

01

微服務基礎:Eureka元件,管理服務注冊發現

02

微服務基礎:Ribbon和Feign元件,實作請求負載均衡

03

微服務基礎:Hystrix元件,實作服務熔斷

04

微服務基礎:Turbine元件,實作微服務叢集監控

05

微服務基礎:Zuul元件,實作路由網關控制

06

微服務基礎:Config元件,實作配置統一管理

07

微服務基礎:Zipkin元件,實作請求鍊路追蹤

08

微服務基礎:與Dubbo架構、Boot架構對比分析

09

微服務基礎:Nacos元件,服務和配置管理

10

微服務基礎:Sentinel元件,服務限流和降級

11

微服務應用:分庫分表模式下,資料庫擴容方案

12

微服務應用:Shard-Jdbc分庫分表,擴容方案實作

繼續閱讀