Dubbo Gateway基于Java的Dubbo網(wǎng)關(guān)實(shí)現(xiàn)
資料介紹
軟件簡介
Dubbo Gateway是一個(gè)基于Java語言的Dubbo網(wǎng)關(guān)實(shí)現(xiàn)。基于Dubbo注冊中心的元數(shù)據(jù),通過將HTTP請求轉(zhuǎn)換為Dubbo協(xié)議,泛化調(diào)用的方式返回請求結(jié)果。它具有如下的特性:
- 使用簡單,開箱即用,非常適用于一些接口測試場景;
- 靈活可拓展。通過Interceptor的實(shí)現(xiàn),可非常方便實(shí)現(xiàn)熔斷、限流、路由、定制響應(yīng)、用戶授權(quán)等功能。系統(tǒng)也內(nèi)置了部分Interceptor實(shí)現(xiàn);
- 支持僅調(diào)用聲明為對外開放的Dubbo服務(wù),安全保證。(基于Feature:apache/dubbo#7660?);
- 文檔自動(dòng)化生成。基于Javadoc標(biāo)準(zhǔn)的dubbo對外接口生成系統(tǒng),API寫好即可生成文檔,同時(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、添加依賴
新建Springboot工程,添加Dubbo Gateway的核心依賴:
<dependency> <groupId>com.kalman03groupId> <artifactId>gateway-coreartifactId> <version>1.2.0version> dependency>
當(dāng)然,還需要添加Dubbo的注冊中心依賴,以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、訪問目標(biāo)服務(wù)
系統(tǒng)內(nèi)置了PATH路由
與MIX路由
,也同時(shí)支持自定義路由實(shí)現(xiàn)。下面演示如何通過不同的路由規(guī)則訪問對應(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ù)相對于固定不變,且暴露在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路由
專為一些對PATH路由
與MIX路由
都不滿意的開發(fā)者準(zhǔn)備,只需要繼承AbstractRouteHandlerInterceptor?類,即可輕松實(shí)現(xiàn)自定義的路由規(guī)則。
Param Transmission
用戶端通用參數(shù)(諸如請求UA/Referer/IP等)以及Token用戶信息等,需要傳遞到服務(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),通過該Filter可獲取用戶端請求的一些參數(shù)以及自定義攔截器封裝的參數(shù)。當(dāng)然,開發(fā)者也可自行在服務(wù)提供方讀取RpcContext中的傳遞參數(shù)。
更多使用方式,參考:gateway-samples?與?gateway-samples-provider
Attention
Dubbo Gateway對Dubbo服務(wù)提供者提供的對外服務(wù)有一條要求:只能有一個(gè)服務(wù)入?yún)?,且為對象類型(非普通Java數(shù)據(jù)類型)。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
- 虹科TE媒体网关 MEDIA GATEWAY0次下载
- local-data-api-gateway本地数据API网关2次下载
- dubbo-doc-static Dubbo文档镜像2次下载
- 硕士学位论文《家庭智能网关的研究与实现》24次下载
- 虹科PCAN-Wireless Gateway简介0次下载
- 虹科PCAN-Ethernet Gateway网关0次下载
- Java工具软件免费下载5次下载
- 互联网Java工程师的经典面试题免费下载0次下载
- Java程序设计教程之Java语言的基础知识概述36次下载
- 如何使用Myeclipse进行java可视化开发5次下载
- java教程之如何进行Java异常处理?0次下载
- java教程之流式输入输出的原理和实现的资料免费下载1次下载
- Dubbo源代码实现服务调用的动态代理和负载均衡0次下载
- 智能家居和能源网关参考设计原理图33次下载
- 利用Gateway实现上位机监控0次下载
- Kubernetes Gateway API攻略教程 923次閱讀
- Dubbo路由模塊及負(fù)載均衡的優(yōu)化手段 863次閱讀
- 汽車網(wǎng)關(guān)Gateway知識介紹 3131次閱讀
- 網(wǎng)關(guān)GateWay的基本概念和使用詳解 2304次閱讀
- Dubbo負(fù)載均衡策略之一致性哈希 780次閱讀
- Java、Spring、Dubbo三者SPI機(jī)制的原理和區(qū)別 1077次閱讀
- 用Rust語言開發(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ù)語! 6271次閱讀
- 網(wǎng)關(guān)禁用怎么辦?解決辦法是什么? 2w次閱讀
- java實(shí)現(xiàn)的哈夫曼編碼與解碼 5782次閱讀
- java如何實(shí)現(xiàn)打印功能 1.2w次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊
- 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開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊免費(fèi)下載(新編第二版pdf電子書)
- 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ì)》 溫德爾著
- 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語言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評論