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媒体网关 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次下载
- 工业智能网关实现的功能是602次阅读
- Kubernetes Gateway API攻略教程1018次阅读
- Dubbo路由模块及负载均衡的优化手段966次阅读
- 汽车网关Gateway知识介绍3309次阅读
- 网关GateWay的基本概念和使用详解2477次阅读
- Dubbo负载均衡策略之一致性哈希899次阅读
- Java、Spring、Dubbo三者SPI机制的原理和区别1218次阅读
- 用Rust语言开发微服务2813次阅读
- Spring Cloud Gateway服务网关的部署与使用详细教程1985次阅读
- 如何使用Gateway搭建网关服务及实现动态路由1933次阅读
- 物联网网关具有的能力及研发设计和功能3071次阅读
- Java中间件Spring、Dubbo源代码跟踪小技巧1636次阅读
- Java底层实现,CPU还有10个术语!6360次阅读
- 网关禁用怎么办?解决办法是什么?20503次阅读
- java如何实现打印功能12687次阅读
下載排行
本周
- 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)論