资料介绍
软件简介
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 GATEWAY
- local-data-api-gateway本地数据API网关
- dubbo-doc-static Dubbo文档镜像
- 硕士学位论文《家庭智能网关的研究与实现》 24次下载
- 虹科PCAN-Wireless Gateway简介
- 虹科PCAN-Ethernet Gateway网关
- Java工具软件免费下载 5次下载
- 互联网Java工程师的经典面试题免费下载 0次下载
- Java程序设计教程之Java语言的基础知识概述 36次下载
- Java新IO的Web安全网关设计资料说明 1次下载
- 如何使用Myeclipse进行java可视化开发 5次下载
- java教程之如何进行Java异常处理? 0次下载
- Dubbo源代码实现服务调用的动态代理和负载均衡 0次下载
- 智能家居和能源网关参考设计原理图 31次下载
- 利用Gateway实现上位机监控 0次下载
- Kubernetes Gateway API攻略教程 676次阅读
- Dubbo路由模块及负载均衡的优化手段 589次阅读
- 汽车网关Gateway知识介绍 2694次阅读
- 网关GateWay的基本概念和使用详解 1994次阅读
- Dubbo负载均衡策略之一致性哈希 571次阅读
- Java、Spring、Dubbo三者SPI机制的原理和区别 843次阅读
- 用Rust语言开发微服务 2536次阅读
- Spring Cloud Gateway服务网关的部署与使用详细教程 1575次阅读
- 如何使用Gateway搭建网关服务及实现动态路由 1669次阅读
- 物联网网关具有的能力及研发设计和功能 2824次阅读
- 网关协议基础知识你都掌握了没 949次阅读
- Java中间件Spring、Dubbo源代码跟踪小技巧 1508次阅读
- Java底层实现,CPU还有10个术语! 6097次阅读
- 网关禁用怎么办?解决办法是什么? 1.9w次阅读
- java如何实现打印功能 1.2w次阅读
下载排行
本周
- 1ADI高性能电源管理解决方案
- 2.43 MB | 449次下载 | 免费
- 2免费开源CC3D飞控资料(电路图&PCB源文件、BOM、
- 5.67 MB | 136次下载 | 1 积分
- 3基于STM32单片机智能手环心率计步器体温显示设计
- 0.10 MB | 123次下载 | 免费
- 4550W充电机原理图
- 0.13 MB | 2次下载 | 6 积分
- 5USB的PD快充协议电压诱骗控制器FS312A中文手册
- 1.51 MB | 2次下载 | 免费
- 6USB的PD和OC快充协议电压诱骗控制器FS312B中文手册
- 1.35 MB | 2次下载 | 免费
- 7USB Type_C PD快充协议智能触发芯片FS8025B应用手册
- 1.48 MB | 1次下载 | 免费
- 8ADI公司串行端口开发和故障排除指南
- 343.09KB | 1次下载 | 免费
本月
- 1ADI高性能电源管理解决方案
- 2.43 MB | 449次下载 | 免费
- 2免费开源CC3D飞控资料(电路图&PCB源文件、BOM、
- 5.67 MB | 136次下载 | 1 积分
- 3基于STM32单片机智能手环心率计步器体温显示设计
- 0.10 MB | 123次下载 | 免费
- 4使用单片机实现七人表决器的程序和仿真资料免费下载
- 2.96 MB | 44次下载 | 免费
- 53314A函数发生器维修手册
- 16.30 MB | 31次下载 | 免费
- 6美的电磁炉维修手册大全
- 1.56 MB | 22次下载 | 5 积分
- 7使用TL431设计电源
- 0.67 MB | 10次下载 | 免费
- 8感应笔电路图
- 0.06 MB | 10次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935119次下载 | 10 积分
- 2开源硬件-PMP21529.1-4 开关降压/升压双向直流/直流转换器 PCB layout 设计
- 1.48MB | 420062次下载 | 10 积分
- 3Altium DXP2002下载入口
- 未知 | 233084次下载 | 10 积分
- 4电路仿真软件multisim 10.0免费下载
- 340992 | 191367次下载 | 10 积分
- 5十天学会AVR单片机与C语言视频教程 下载
- 158M | 183335次下载 | 10 积分
- 6labview8.5下载
- 未知 | 81581次下载 | 10 积分
- 7Keil工具MDK-Arm免费下载
- 0.02 MB | 73807次下载 | 10 积分
- 8LabVIEW 8.6下载
- 未知 | 65987次下载 | 10 积分
评论
查看更多