日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

SpringCloud微服务:基于Nacos组件,整合Dubbo框架

發(fā)布時間:2025/3/16 javascript 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringCloud微服务:基于Nacos组件,整合Dubbo框架 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

源碼地址:GitHub·點這里 || GitEE·點這里

一、基礎(chǔ)組件簡介

1、Dubbo框架

Dubbo服務(wù)化治理的核心框架,之前幾年在國內(nèi)被廣泛使用,后續(xù)由于微服務(wù)的架構(gòu)的崛起,更多的公司轉(zhuǎn)向微服務(wù)下成熟的技術(shù)棧,但是Dubbo本身確實是非常優(yōu)秀的框架。

常見的應(yīng)用迭代和升級的過程基本如下:

  • 當(dāng)應(yīng)用訪問量逐漸增大,單一應(yīng)用增加機器帶來的加速度越來越小,提升效率的方法之一是將應(yīng)用拆成互不相干的幾個應(yīng)用,以提升效率。此時,用于加速前端頁面開發(fā)的Web框架(MVC)是關(guān)鍵。
  • 隨著垂直應(yīng)用越來越多,應(yīng)用之間交互不可避免,將核心業(yè)務(wù)抽取出來,作為獨立的服務(wù),逐漸形成穩(wěn)定的服務(wù)中心,使前端應(yīng)用能更快速的響應(yīng)多變的市場需求。此時,用于提高業(yè)務(wù)復(fù)用及整合的分布式服務(wù)框架(RPC)是關(guān)鍵。
  • 伴隨業(yè)務(wù)發(fā)展,服務(wù)越來越多,容量的評估,小服務(wù)資源的浪費等問題逐漸顯現(xiàn),此時需增加一個調(diào)度中心基于訪問壓力實時管理集群容量,提高集群利用率。此時,用于提高機器利用率的資源調(diào)度和治理中心(SOA)是關(guān)鍵。

而Dubbo框架的核心能力:面向接口的遠(yuǎn)程方法調(diào)用,智能容錯和負(fù)載均衡,以及服務(wù)自動注冊和發(fā)現(xiàn)。正好可以解決上述業(yè)務(wù)發(fā)展的痛點。

2、微服務(wù)框架

SpringCloud是一系列框架的有序集合。它利用SpringBoot的開發(fā)便利性巧妙地簡化了分布式系統(tǒng)基礎(chǔ)設(shè)施的開發(fā),如服務(wù)發(fā)現(xiàn)注冊、配置中心、消息總線、負(fù)載均衡、斷路器、數(shù)據(jù)監(jiān)控等,都可以用SpringBoot的開發(fā)風(fēng)格做到一鍵啟動和部署。

后續(xù)AliCloud微服務(wù)系列組件也不斷被使用起來,其中最基礎(chǔ)的組件Nacos注冊中心,更是直接支持Dubbo框架,這樣Cloud和Dubbo兩大框架就成功的整合在了一起。

3、Nacos注冊中心

Nacos注冊中心主要用于發(fā)現(xiàn)、配置、管理微服務(wù)。并且提供一組簡單易用的特性集,快速實現(xiàn)動態(tài)服務(wù)發(fā)現(xiàn)、服務(wù)配置、服務(wù)元數(shù)據(jù)及流量管理。

如上圖Nacos無縫支持一些主流的開源生態(tài)框架,例如SprinCloud,Dubbo兩大框架。在AliCloud的系列組件中,還包含了Seata,RocketMQ,Sentinel等一系列組件。

二、服務(wù)結(jié)構(gòu)圖解

SpringCloud和Dubbo整合的結(jié)構(gòu)示意圖如下,使用的Nacos中心:

Provider提供方:提供核心的Dubbo服務(wù)接口;

Consumer消費方:消費注冊的Dubbo服務(wù)接口;

Nacos注冊中心:配置、發(fā)現(xiàn)和管理Dubbo服務(wù);

通過上述流程不難發(fā)現(xiàn),不管從架構(gòu)上看,還是用法過程,基于核心Dubbo框架和微服務(wù)原生框架是十分相似,上述流程也遵循這樣一個規(guī)則:dubbo-server連接自己的業(yè)務(wù)庫DB,并通過dubbo-facade中接口向外提供服務(wù),如果不同dubbo-server需要訪問其他服務(wù)接口,也必須要通過其他服務(wù)的facade接口操作,dubbo-client作為接口服務(wù)消費端,可以通過facade接口訪問很多業(yè)務(wù)模塊的服務(wù),整體架構(gòu)層次十分明了。

三、編碼案例實現(xiàn)

1、案例結(jié)構(gòu)和依賴

案例結(jié)構(gòu)

包含三個模塊:server、facade、client。

核心依賴

<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-dubbo</artifactId><version>2.1.1.RELEASE</version> </dependency> <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId><version>2.1.1.RELEASE</version> </dependency> <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId><version>2.1.1.RELEASE</version> </dependency>

2、服務(wù)端配置

配置文件

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

server:port: 9010 spring:application:name: node10-dubbo-servercloud:nacos:discovery:server-addr: http://localhost:8848config:server-addr: http://localhost:8848file-extension: yaml # Dubbo服務(wù)配置 dubbo:scan:base-packages: com.cloud.dubbo.serviceprotocol:name: dubboport: -1registry:address: spring-cloud://localhost

服務(wù)接口實現(xiàn)

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

import org.apache.dubbo.config.annotation.Service; import org.slf4j.Logger; import org.slf4j.LoggerFactory;@Service public class DubboServiceImpl implements DubboService {private static final Logger LOGGER = LoggerFactory.getLogger(DubboServiceImpl.class) ;@Overridepublic String getInfo() {LOGGER.info("node10-dubbo-server start ...");return "node10-dubbo-server";} }

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

3、消費端配置

配置文件

主要配置是鏈接Nacos注冊中心,訂閱注冊中心的node10-dubbo-server服務(wù)。

server:port: 9011 spring:application:name: node10-dubbo-clientcloud:nacos:discovery:server-addr: http://localhost:8848config:server-addr: http://localhost:8848 # Dubbo服務(wù)配置 dubbo:protocol:name: dubboport: -1registry:address: spring-cloud://localhostcloud:subscribed-services: node10-dubbo-server

Dubbo接口調(diào)用

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

import com.cloud.dubbo.service.DubboService; import org.apache.dubbo.config.annotation.Reference; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController;@RestController public class DubboWeb {@Referenceprivate DubboService dubboService ;@GetMapping("/getInfo")public String getInfo () {return dubboService.getInfo() ;} }

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

如上流程開發(fā)完成,先后啟動dubbo-server服務(wù)和dubbo-client服務(wù),查看注冊中心服務(wù)列表:

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

四、技術(shù)選型

很少有選擇SpringCloud+Dubbo框架的架構(gòu)模式,這里簡單說明一下為何,因為這兩個框架都是相當(dāng)復(fù)雜的,學(xué)習(xí)成本是一個方面,風(fēng)險是最主要原因,這兩個框架同時使用,就意味要面對和解決兩個框架下產(chǎn)生的問題,在任何一個框架都可以穩(wěn)定的解決業(yè)務(wù)問題時,完全沒必要花里胡哨。

五、源代碼地址

GitHub地址:知了一笑 https://github.com/cicadasmile/spring-cloud-base GitEE地址:知了一笑 https://gitee.com/cicadasmile/spring-cloud-base

推薦閱讀:微服務(wù)組件和應(yīng)用

序號文章標(biāo)題
01微服務(wù)基礎(chǔ):Eureka組件,管理服務(wù)注冊發(fā)現(xiàn)
02微服務(wù)基礎(chǔ):Ribbon和Feign組件,實現(xiàn)請求負(fù)載均衡
03微服務(wù)基礎(chǔ):Hystrix組件,實現(xiàn)服務(wù)熔斷
04微服務(wù)基礎(chǔ):Turbine組件,實現(xiàn)微服務(wù)集群監(jiān)控
05微服務(wù)基礎(chǔ):Zuul組件,實現(xiàn)路由網(wǎng)關(guān)控制
06微服務(wù)基礎(chǔ):Config組件,實現(xiàn)配置統(tǒng)一管理
07微服務(wù)基礎(chǔ):Zipkin組件,實現(xiàn)請求鏈路追蹤
08微服務(wù)基礎(chǔ):與Dubbo框架、Boot框架對比分析
09微服務(wù)基礎(chǔ):Nacos組件,服務(wù)和配置管理
10微服務(wù)基礎(chǔ):Sentinel組件,服務(wù)限流和降級
11微服務(wù)應(yīng)用:分庫分表模式下,數(shù)據(jù)庫擴容方案
12微服務(wù)應(yīng)用:Shard-Jdbc分庫分表,擴容方案實現(xiàn)

總結(jié)

以上是生活随笔為你收集整理的SpringCloud微服务:基于Nacos组件,整合Dubbo框架的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。