柚子快報激活碼778899分享:分布式 Dubbo簡介和配置
柚子快報激活碼778899分享:分布式 Dubbo簡介和配置
該文章已同步收錄到我的博客網(wǎng)站,歡迎瀏覽我的博客網(wǎng)站,xhang’s blog
1.Dubbo和OpenFeign的簡介
Dubbo一個高性能rpc框架,用于構建分布式微服務架構,它提供了服務注冊與發(fā)現(xiàn),負載均衡,容錯機制等功能。Dubbo具有高性能和低延遲的特點,適合于大規(guī)模的分布式系統(tǒng)。OpenFeign一個基于Java的聲明式HTTP客戶端框架,它簡化了編寫遠程調(diào)用代碼的過程。OpenFeign允許開發(fā)人員通過編寫接口的方式定義對遠程服務的訪問,然后通過注解來配置請求參數(shù)、路徑等信息。OpenFeign會根據(jù)接口的定義自動生成具體的實現(xiàn)代碼。它還提供了負載均衡、錯誤處理等功能,可以與Spring Cloud等微服務框架無縫集成。
2.Dubbo和OpenFeign的區(qū)別
協(xié)議支持:Dubbo支持多種協(xié)議,包括Dubbo協(xié)議、HTTP協(xié)議、RMI等。OpenFeign主要使用HTTP協(xié)議進行通信。使用方式:Dubbo更加底層,需要顯式定義接口和實現(xiàn)類,并配置各種參數(shù)。OpenFeign則更加注重于聲明式的編程模型,通過定義接口和注解來實現(xiàn)遠程調(diào)用,減少了手動編寫具體實現(xiàn)的工作。生態(tài)系統(tǒng):Dubbo是一個獨立的RPC框架,它提供了完整的分布式服務治理的解決方案。OpenFeign則是Spring Cloud生態(tài)系統(tǒng)中的一部分,與其他Spring Cloud組件(如Eureka、Ribbon、Hystrix等)緊密集成,提供了更全面的微服務開發(fā)解決方案。功能特性:Dubbo提供了更多的功能特性,如負載均衡、容錯機制、服務注冊與發(fā)現(xiàn)等,適合于大規(guī)模的分布式系統(tǒng)。OpenFeign則更加關注于RESTful風格的接口調(diào)用,適用于構建輕量級的微服務。
3.SpringCloud集成Dubbo
添加pom
服務端和消費端配置
dubbo:
application:
name: vector-member # 與服務名一致即可
logger: slf4j
# 元數(shù)據(jù)中心 local 本地 remote 遠程 這里使用遠程便于其他服務獲取
# 注意 這里不能使用 本地 local 會讀取不到元數(shù)據(jù)
metadataType: remote
protocol:
# 設置為 tri 即可使用 Triple 3.0 新協(xié)議
# 性能對比 dubbo 協(xié)議并沒有提升 但基于 http2 用于多語言異構等 http 交互場景
# 使用 dubbo 協(xié)議通信
name: dubbo
# dubbo 協(xié)議端口(-1表示自增端口,從20880開始)
port: -1
serialization: hessian2
registry:
address: nacos://localhost:8848?username=nacos&password=nacos
check: false
metadata-report:
address: nacos://localhost:8848?username=nacos&password=nacos
provider:
version: 1.0.0
consumer:
version: 1.0.0
# 禁止消費者啟動時檢查提供者是否可用
check: false
公共模塊聲明遠程調(diào)用接口
服務提供者實現(xiàn)接口編寫服務業(yè)務
服務消費者使用@DubboReference注入接口,調(diào)用服務方法。
4.踩坑記錄
未發(fā)現(xiàn)提供者
No provider available for the service.dubbo xxxxxxxx
解決方法: 如下圖dubbo在啟動時會默認檢測@DubboReference標注的提供端服務是否可用,不可用則拋出No provider available for the service.dubbo xxxxxxxx. 因此我們只要在consumer禁用檢查即可.
這也是兩個業(yè)務模塊互相調(diào)用的配置項。
類型轉(zhuǎn)化異常
java.lang.ClassCastException: class java.util.HashMap cannot be cast to class com.vector.score.vo.ArtistVO (java.util.HashMap is in module java.base of loader ‘bootstrap’; com.vector.score.vo.ArtistVO is in unnamed module of loader ‘a(chǎn)pp’)
這個原因可能是配置了允許序列化泛化調(diào)用配置引起的.
序列化報錯
This serialization only supports google protobuf objects, current object class is: java.lang.Long
可以通過debug 觀察遠程調(diào)用結(jié)果了解. 該錯誤是強制類型轉(zhuǎn)化錯誤. dubbo默認hession2序列化.基本類型不變.但對象傳輸會變?yōu)閗-v形式.應該轉(zhuǎn)為map.
倘若使用protobuf 也是不支持對象傳輸.需要轉(zhuǎn)為map并引入
柚子快報激活碼778899分享:分布式 Dubbo簡介和配置
好文推薦
本文內(nèi)容根據(jù)網(wǎng)絡資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉(zhuǎn)載請注明,如有侵權,聯(lián)系刪除。