网站首页 > 开源技术 正文
WormHole是“虫洞”意思。物理界解释为连接黑洞和白洞的时空隧道。它的结构和计算机网络中的网关类似,作为连接两个世界的枢纽。各管各,不用关心中间做了什么。如下:
WormHole是一个简单、易用的api管理平台。目的是为了降低后端服务开发与前端调用的耦合性。通过WormHole这一层使整个项目的开发协作更加完善。客户端开发人员从管理平台查找需要的接口信息进行调用,服务端开发人员定义好接口后同步到管理平台中,管理平台可以统一对接口的访问设置等。
WormHole有两个版本,一个是基于SpringMVC框架、一个是基于原版改造为SpringBoot版本的。
平台特性
- 网关支持Dubbo服务
- 完善的授权管理(接口权限、web操作权限等)
- 安全机制(验签、IP名单设置)
- 流控机制(sentinel限流、熔断、隔离)
- 处理流程、可插拔机制(组件化配置)
- 支持mock功能,设定预期结果加快联调进度
- 支持接口的快速录入测试功能
- 有完善的用户、角色管理,使用shiro框架
- 接口的有效管理,跨环境策略
- 平台的扩展性,可按需调整
平台技术结构
注:server层是指具体的dubbo服务提供方,框架、插件根据实际需求处理
WormHole的SpringBoot版本是 将SpringMVC、Shiro、JSP、Velocity、Servlet等组件与SpringBoot进行整合。部分配置还有优化空间,可按需调整
平台组件逻辑
- contextProcessor 存储上下文信息
- ipProcessor IP黑白名单设置
- userAgentProcessor 浏览器用户代理
- paramProcessor 参数检查验证
- callbackParamProcessor 回调接口参数检查验证
- loginProcessor token信息检查
- flowControlProcessor 流控限制
- signProcessor 签名验证
- authProcessor 权限验证
- mockProcessor mock逻辑处理
- dubboProcessor 泛化调用dubbo服务
## 平台项目结构
1、maven项目结构
wormehole / — wormehole-api 【管理台接口、实体类、传输对象、异常等的定义】 / — wormehole-domain 【客户端信息、用户token、result对象等的定义】 / — wormehole-web 【管理台的页面实现、接口实现业务逻辑】
2、项目目录结构
wormehole-api
/ — com.kaistart.gateway / — api.service 【网关逻辑相关的所有接口定义】 / — domain 【网关逻辑相关的实体对象】 / — dto 【业务传输对象】 / — exception 【自定义异常类、返回码】 / — support 【自定义公共应对象】 / — json 【自定义公共响应对象】 / — page 【自定义公共分页对象】 / — proto 【自定义公共接口】 / — tool 【日期转换工具类】
wormehole-domain
| — com.kaistart.gateway.domain | — pojo 【网关的客户端对象、token信息】 | — response 【网关层的异常、结构定义】
wormehole-web 【JAVA类、配置部分】
src/main/java | — com.kaistart 【主包名】 | — auth 【管理台核心包】 | — controller 【管理台用户、角色、权限、资源等控制层】 | — domain 【管理台相关实体类】 | — interceptor 【管理台拦截器,url、权限等处理】 | — mapper 【管理台相关的mapper对象】 | — service 【管理台相关的service对象与实现】 | — gateway 【网关核心包】 | — common 【网关业务公共包】 | — cache 【缓存工具类】 | — exception 【网关异常类】 | — http 【http请求工具类,支持get请求传body】 | — util 【工具类,zk,md5,executor】 | — controller 【网关业务控制层】 | — config 【网关的必要配置】 | — dubbo 【网关的签名算法及对外服务】 | — mgr 【网关的管理台处理】 | — mapper 【网关相关的mapper对象】 | — service 【网关相关的service定义及实现】 | — processor 【网关逻辑的核心组件】 | — servlet 【网关接口请求的servlet地址】 src/main/resources | — mybatis 【mybatis相关xml文件】 | — auth 【控制台核心功能相关】 | — mgr 【网关功能相关】 | — spring 【核心配置文件】 | — velocity 【velocity编码配置】 | — log4j.xml 【日志文件】 webapp | — common 【公共页面】 | — velocity 【velocity核心资源】 | — config 【配置】 | — image 【图片资源】 | — js 【核心js相关】 | — components 【公用js组件】 | — pages 【对应页面的js引用文件】 | — utils 【分页等工具类】 | — xxx.js 【框架相关js】 | — lib 【引用的三方插件资源】 | — style 【引用的css样式表】 | — WEB-INF | — templates 【页面结构】 | — demo 【样例】 | — layout 【页面框架布局】 | — pages 【管理台页面包】 | — auth 【用户、角色、权限相关】 | — gateway 【网关相关页面】 | — system 【系统查看页面】 | — zookeeper 【zk相关页面】 | — web.xml 【核心web.xml配置页面】 | — 401.jsp 【过渡页面】 | — index.jsp 【主页】 | — login.jsp 【登录页面】
SpringBoot版本的配置文件会少一点。 约定大于配置,应该还有较多优化空间。
平台环境要求
- JDK1.8
- Disconf配套环境【已移除配置】
- Zookeeper
- Tomcat容器等
- Mysql数据库
SpringBoot版本不需要tomcat,
平台运行说明
- 下载项目
- 处理以下几个核心配置
- /gateway.sql 【初始化数据库信息】
- /resources/config.properties 【修改zk、redis、mysql等的连接】
- /com/kaistart/gateway/config/MgrConfig.java 【修改不同环境的ip信息,这里这样写主要为了简化使用,可按需迁移到配置中心去】
- gateway-web的 Context root 为 “/”
- 部署到tomcat容器进行启动, 记得将webcontext-root 改为 '/'
猜你喜欢
- 2024-10-28 成为java微服务架构师的技术学习路线图
- 2024-10-28 Re:从 0 开始的微服务架构:(二)如何快速体验微服务架构?
- 2024-10-28 SpringConfig配置中心学习总结(spring 配置中心原理)
- 2024-10-28 亿级流量网站架构核心技术「笔记」(一)
- 2024-10-28 架构师必懂的——分布式配置中心(Apollo)
- 2024-10-28 那些Java架构师必知必会的技术(那些java架构师必知必会的技术知识)
- 2024-10-28 Dubbo微服务架构下的Kubernetes云平台建设实践
- 2024-10-28 架构学习之路——高可用高并发系统设计原则
- 2024-10-28 配置中心的原理是什么?(配置中心能放哪些内容)
- 2024-10-28 最全的微服务知识科普(服务 微服务)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)