简单易用的 API 管理平台 GATEWAY-WormHole

MIT
Java JavaScript
跨平台
2019-03-21
deathearth

    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版本的配置文件会少一点。 约定大于配置,应该还有较多优化空间。

平台环境要求

      
  1. JDK1.8
  2.   
  3. Disconf配套环境【已移除配置】
  4.   
  5. Zookeeper
  6.   
  7. Tomcat容器等
  8.   
  9. 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 改为 '/'

      

运行的时候,DEBUG模式查看日志,比较容易处理问题。

的码云指数为
超过 的项目
加载中

评论(0)

暂无评论

暂无资讯

暂无问答

WormHole是一个简单、易用的api管理平台,支持dubbo服务调用

WormHole服务网关管理平台 相关快速链接 管理台操作说明 C端对接网关及签名说明 回调接口使用说明 多环境配置使用说明 网关错误码说明 WormHole更新说明 配置好即可运行 GitHub地址:https:/...

03/20 21:28
14
0
基于BitBox的Wormhole SDK 已迭代至1.0.0版本

Wormhole协议自推出以来,官方开发团队一直在进行开发工作。早在8月份开发团队推出v0.1.0客户端,正式上线BCH主网。目前,Wormhole协议已经是BCH网络中能够发行Token的较为成熟代币方案。一周...

2018/10/15 09:59
5
0
VIAT——虫洞星辰大海里程碑

昨日,全球第三大矿池ViaBTC矿池发布公告称,将于10月8日(HKT)上线ViaBTC Token(VIAT)。同时ViaBTC旗下交易所品牌CoinEx也发布公告称,ViaBTC Token已在CoinEx加速器开启公示。 ViaBTC T...

2018/10/08 10:02
29
0
Wormhole大数据流式处理平台五大功能

导读:在上一篇文章「Wormhole 大数据流式处理平台之设计思想」中,我们介绍了Wormhole的设计思想,并给出了Stream、UMS、Flow、Namespace等相关概念的具体定义,从文章中我们得知,Wormhol...

07/08 17:20
17
0
Wormhole 大数据流式处理平台之设计思想

导读:互联网的迅猛发展使得数据不再昂贵,而如何从数据中更快速获取价值变得日益重要,因此,数据实时化成为了一个大趋势。越来越多的业务场景需要实时分析,以极低的延迟来分析实时数据并给...

06/28 13:52
391
2
EOS安全漏洞再发,BCH将如何兼顾智能合约效率与安全?

  SDK是Software Development Kit的缩写,中文意思就是“软件开发工具包”。在智能合约开发中,SDK 为不同平台的交易提供了统一的支付接口,开发者在Dapp页面中可以通过浏览器插件钱包、手机...

2018/07/31 10:28
3
0
如何设计实时数据平台(技术篇)

敏捷之歌 我抽数故我存在 | DBus 人人玩转流处理 | Wormhole 就当吾是数据库 | Moonbox 颜值最后十公里 | Davinci 导读:实时数据平台(RTDP,Real-time Data Platform)是一个重要且常见的大...

06/21 13:42
3.2K
7
漫谈BCH Token方案

Token是什么? Token是什么,Token有必要存在吗?如果说公链的币就是钱的话,那么Token就是票(或者说“通证”)。生活中处处需要钱,而有的时候,钱要换一种方式存在,那就是“票”。比如:...

2018/11/02 10:03
11
0
如何基于日志,同步实现数据的一致性和实时抽取?

7月25日晚8点,线上直播,【AI中台——智能聊天机器人平台】,点击了解详情。 一、背景 事情是从公司前段时间的需求说起,大家知道宜信是一家金融科技公司,我们的很多数据与标准互联网企业不...

07/17 13:58
1K
1
通过Docker容器连接代理Wormhole

Wormhole 是一个能识别命名空间的由 Socket 激活的隧道代理。可以让你安全的连接在不同物理机器上的 Docker 容器。可以用来完成一些有趣的功能,例如连接运行在容器本机的服务或者在连接后创...

2018/11/19 14:33
21
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部