Dubbo Gateway基于Java的Dubbo網(wǎng)關(guān)實(shí)現(xiàn)
資料介紹
軟件簡(jiǎn)介
Dubbo Gateway是一個(gè)基于Java語(yǔ)言的Dubbo網(wǎng)關(guān)實(shí)現(xiàn)。基于Dubbo注冊(cè)中心的元數(shù)據(jù),通過(guò)將HTTP請(qǐng)求轉(zhuǎn)換為Dubbo協(xié)議,泛化調(diào)用的方式返回請(qǐng)求結(jié)果。它具有如下的特性:
- 使用簡(jiǎn)單,開(kāi)箱即用,非常適用于一些接口測(cè)試場(chǎng)景;
- 靈活可拓展。通過(guò)Interceptor的實(shí)現(xiàn),可非常方便實(shí)現(xiàn)熔斷、限流、路由、定制響應(yīng)、用戶(hù)授權(quán)等功能。系統(tǒng)也內(nèi)置了部分Interceptor實(shí)現(xiàn);
- 支持僅調(diào)用聲明為對(duì)外開(kāi)放的Dubbo服務(wù),安全保證。(基于Feature:apache/dubbo#7660?);
- 文檔自動(dòng)化生成。基于Javadoc標(biāo)準(zhǔn)的dubbo對(duì)外接口生成系統(tǒng),API寫(xiě)好即可生成文檔,同時(shí)集成了阿里云OSS,全程僅需幾步參數(shù)配置,即可可視化預(yù)覽文檔。
Requirements
服務(wù)提供者Dubbo 版本:Dubbo 2.7.14+ 或 Dubbo 3.x
Java 版本:1.8+
Guides
以Springboot項(xiàng)目方式,啟動(dòng)Dubbo Gateway網(wǎng)關(guān):
1、添加依賴(lài)
新建Springboot工程,添加Dubbo Gateway的核心依賴(lài):
<dependency> <groupId>com.kalman03groupId> <artifactId>gateway-coreartifactId> <version>1.2.0version> dependency>
當(dāng)然,還需要添加Dubbo的注冊(cè)中心依賴(lài),以Zookeeper為例:
<dependency> <groupId>org.apache.zookeepergroupId> <artifactId>zookeeperartifactId> <version>${zookeeper_version}version> <exclusions> <exclusion> <groupId>log4jgroupId> <artifactId>log4jartifactId> exclusion> <exclusion> <groupId>org.slf4jgroupId> <artifactId>slf4j-log4j12artifactId> exclusion> exclusions> dependency> <dependency> <groupId>org.apache.curatorgroupId> <artifactId>curator-frameworkartifactId> <version>${curator_version}version> dependency> <dependency> <groupId>org.apache.curatorgroupId> <artifactId>curator-recipesartifactId> <version>${curator_version}version> dependency>
2、參數(shù)配置
gateway.netty.server.port=80 gateway.netty.server.host=127.0.0.1 gateway.netty.server.connect-timeout=3000 gateway.netty.business.thread-count=50 gateway.dubbo.registry.address=zookeeper://127.0.0.1:2181 gateway.dubbo.openservice=true
3、啟動(dòng)服務(wù)
@SpringBootApplication @EnableAutoConfiguration public class DubboGatewayTest { public static void main(String[] args) { try { SpringApplication.run(DubboGatewayTest.class, args); } catch (Throwable e) { e.printStackTrace(); } } //可選自定義攔截器 @Component @Order(100) @InterceptorRule(routeRuleType = RouteRuleType.PATH, excludePatterns = { "/api/**" }) class CustomInterceptor implements HandlerInterceptor { @Override public boolean preHandle(GatewayHttpRequest request, GatewayHttpResponse response) throws Exception { System.out.println("preHandle"); return true; } @Override public void afterCompletion(GatewayHttpRequest request, GatewayHttpResponse response, Exception ex) throws Exception { System.out.println("afterCompletion"); } } }
4、訪問(wèn)目標(biāo)服務(wù)
系統(tǒng)內(nèi)置了PATH路由
與MIX路由
,也同時(shí)支持自定義路由實(shí)現(xiàn)。下面演示如何通過(guò)不同的路由規(guī)則訪問(wèn)對(duì)應(yīng)的服務(wù)。
-
PATH路由(推薦)
PATH路由是系統(tǒng)內(nèi)置默認(rèn)的路由,也是系統(tǒng)推薦的路由規(guī)則,其擁有較多適用性(既可正常調(diào)用,也可以滿足一些第三方系統(tǒng)的調(diào)用要求,比如支付消息回調(diào)等),路由規(guī)則如下
HTTP URL:
http(s)://{domain}:{port}/{appName}/{interfaceName}/{method}/{group}/{version}
HTTP Body?(payload or form-data):
{ "id": 23, "username": "testUser" }
-
MIX路由
考慮到有些參數(shù)相對(duì)于固定不變,且暴露在URL中不盡友善,系統(tǒng)內(nèi)置了一種MIX的路由規(guī)則,將部分路由參數(shù)以Header的參數(shù)形式進(jìn)行傳遞。
HTTP URL:
http(s)://{domain}:{port}/{interfaceName}/{method}
HTTP Header:
x-app-name={appName} x-group={group} x-version={version} x-route-rule=mix
HTTP Body?(payload or form-data):
{ "id": 23, "username": "testUser" }
-
CUSTOM自定義路由
CUSTOM路由
專(zhuān)為一些對(duì)PATH路由
與MIX路由
都不滿意的開(kāi)發(fā)者準(zhǔn)備,只需要繼承AbstractRouteHandlerInterceptor?類(lèi),即可輕松實(shí)現(xiàn)自定義的路由規(guī)則。
Param Transmission
用戶(hù)端通用參數(shù)(諸如請(qǐng)求UA/Referer/IP等)以及Token用戶(hù)信息等,需要傳遞到服務(wù)提供方。Dubbo Gateway與服務(wù)提供者之間內(nèi)置的參數(shù)傳遞走Dubbo的RpcContext。
Dubbo網(wǎng)關(guān)內(nèi)置了gatewayConsumerFilter
與gatewayProviderFilter
,可作為Dubbo服務(wù)提供者的默認(rèn)Filter實(shí)現(xiàn),通過(guò)該Filter可獲取用戶(hù)端請(qǐng)求的一些參數(shù)以及自定義攔截器封裝的參數(shù)。當(dāng)然,開(kāi)發(fā)者也可自行在服務(wù)提供方讀取RpcContext中的傳遞參數(shù)。
更多使用方式,參考:gateway-samples?與?gateway-samples-provider
Attention
Dubbo Gateway對(duì)Dubbo服務(wù)提供者提供的對(duì)外服務(wù)有一條要求:只能有一個(gè)服務(wù)入?yún)ⅲ覟閷?duì)象類(lèi)型(非普通Java數(shù)據(jù)類(lèi)型)。
- 虹科TE媒體網(wǎng)關(guān) MEDIA GATEWAY
- local-data-api-gateway本地?cái)?shù)據(jù)API網(wǎng)關(guān)
- dubbo-doc-static Dubbo文檔鏡像
- 碩士學(xué)位論文《家庭智能網(wǎng)關(guān)的研究與實(shí)現(xiàn)》 24次下載
- 虹科PCAN-Wireless Gateway簡(jiǎn)介
- 虹科PCAN-Ethernet Gateway網(wǎng)關(guān)
- Java工具軟件免費(fèi)下載 5次下載
- 互聯(lián)網(wǎng)Java工程師的經(jīng)典面試題免費(fèi)下載 0次下載
- Java程序設(shè)計(jì)教程之Java語(yǔ)言的基礎(chǔ)知識(shí)概述 36次下載
- 如何使用Myeclipse進(jìn)行java可視化開(kāi)發(fā) 5次下載
- java教程之如何進(jìn)行Java異常處理? 0次下載
- java教程之流式輸入輸出的原理和實(shí)現(xiàn)的資料免費(fèi)下載 1次下載
- Dubbo源代碼實(shí)現(xiàn)服務(wù)調(diào)用的動(dòng)態(tài)代理和負(fù)載均衡 0次下載
- 智能家居和能源網(wǎng)關(guān)參考設(shè)計(jì)原理圖 32次下載
- 利用Gateway實(shí)現(xiàn)上位機(jī)監(jiān)控 0次下載
- Kubernetes Gateway API攻略教程 923次閱讀
- Dubbo路由模塊及負(fù)載均衡的優(yōu)化手段 863次閱讀
- 汽車(chē)網(wǎng)關(guān)Gateway知識(shí)介紹 3131次閱讀
- 網(wǎng)關(guān)GateWay的基本概念和使用詳解 2304次閱讀
- Dubbo負(fù)載均衡策略之一致性哈希 780次閱讀
- Java、Spring、Dubbo三者SPI機(jī)制的原理和區(qū)別 1077次閱讀
- 用Rust語(yǔ)言開(kāi)發(fā)微服務(wù) 2738次閱讀
- Spring Cloud Gateway服務(wù)網(wǎng)關(guān)的部署與使用詳細(xì)教程 1799次閱讀
- 如何使用Gateway搭建網(wǎng)關(guān)服務(wù)及實(shí)現(xiàn)動(dòng)態(tài)路由 1843次閱讀
- 物聯(lián)網(wǎng)網(wǎng)關(guān)具有的能力及研發(fā)設(shè)計(jì)和功能 3019次閱讀
- Java中間件Spring、Dubbo源代碼跟蹤小技巧 1588次閱讀
- Java底層實(shí)現(xiàn),CPU還有10個(gè)術(shù)語(yǔ)! 6271次閱讀
- 網(wǎng)關(guān)禁用怎么辦?解決辦法是什么? 2w次閱讀
- java實(shí)現(xiàn)的哈夫曼編碼與解碼 5782次閱讀
- java如何實(shí)現(xiàn)打印功能 1.2w次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來(lái)的未來(lái)-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開(kāi)發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊(cè)
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書(shū))
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德?tīng)栔?/a>
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論