資料介紹
軟件簡介
Dubbo Gateway是一個基于Java語言的Dubbo網關實現。基于Dubbo注冊中心的元數據,通過將HTTP請求轉換為Dubbo協議,泛化調用的方式返回請求結果。它具有如下的特性:
- 使用簡單,開箱即用,非常適用于一些接口測試場景;
- 靈活可拓展。通過Interceptor的實現,可非常方便實現熔斷、限流、路由、定制響應、用戶授權等功能。系統也內置了部分Interceptor實現;
- 支持僅調用聲明為對外開放的Dubbo服務,安全保證。(基于Feature:apache/dubbo#7660?);
- 文檔自動化生成。基于Javadoc標準的dubbo對外接口生成系統,API寫好即可生成文檔,同時集成了阿里云OSS,全程僅需幾步參數配置,即可可視化預覽文檔。
Requirements
服務提供者Dubbo 版本:Dubbo 2.7.14+ 或 Dubbo 3.x
Java 版本:1.8+
Guides
以Springboot項目方式,啟動Dubbo Gateway網關:
1、添加依賴
新建Springboot工程,添加Dubbo Gateway的核心依賴:
<dependency> <groupId>com.kalman03groupId> <artifactId>gateway-coreartifactId> <version>1.2.0version> dependency>
當然,還需要添加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、參數配置
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、啟動服務
@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、訪問目標服務
系統內置了PATH路由
與MIX路由
,也同時支持自定義路由實現。下面演示如何通過不同的路由規則訪問對應的服務。
-
PATH路由(推薦)
PATH路由是系統內置默認的路由,也是系統推薦的路由規則,其擁有較多適用性(既可正常調用,也可以滿足一些第三方系統的調用要求,比如支付消息回調等),路由規則如下
HTTP URL:
http(s)://{domain}:{port}/{appName}/{interfaceName}/{method}/{group}/{version}
HTTP Body?(payload or form-data):
{ "id": 23, "username": "testUser" }
-
MIX路由
考慮到有些參數相對于固定不變,且暴露在URL中不盡友善,系統內置了一種MIX的路由規則,將部分路由參數以Header的參數形式進行傳遞。
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路由
都不滿意的開發者準備,只需要繼承AbstractRouteHandlerInterceptor?類,即可輕松實現自定義的路由規則。
Param Transmission
用戶端通用參數(諸如請求UA/Referer/IP等)以及Token用戶信息等,需要傳遞到服務提供方。Dubbo Gateway與服務提供者之間內置的參數傳遞走Dubbo的RpcContext。
Dubbo網關內置了gatewayConsumerFilter
與gatewayProviderFilter
,可作為Dubbo服務提供者的默認Filter實現,通過該Filter可獲取用戶端請求的一些參數以及自定義攔截器封裝的參數。當然,開發者也可自行在服務提供方讀取RpcContext中的傳遞參數。
更多使用方式,參考:gateway-samples?與?gateway-samples-provider
Attention
Dubbo Gateway對Dubbo服務提供者提供的對外服務有一條要求:只能有一個服務入參,且為對象類型(非普通Java數據類型)。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
- 虹科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攻略教程1023次阅读
- Dubbo路由模块及负载均衡的优化手段968次阅读
- 汽车网关Gateway知识介绍3315次阅读
- 网关GateWay的基本概念和使用详解2481次阅读
- Dubbo负载均衡策略之一致性哈希901次阅读
- Java、Spring、Dubbo三者SPI机制的原理和区别1219次阅读
- 用Rust语言开发微服务2814次阅读
- Spring Cloud Gateway服务网关的部署与使用详细教程1989次阅读
- 如何使用Gateway搭建网关服务及实现动态路由1936次阅读
- 物联网网关具有的能力及研发设计和功能3072次阅读
- Java中间件Spring、Dubbo源代码跟踪小技巧1637次阅读
- Java底层实现,CPU还有10个术语!6360次阅读
- 网关禁用怎么办?解决办法是什么?20512次阅读
- java如何实现打印功能12691次阅读
下載排行
本周
- 1山景DSP芯片AP8248A2數據手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論