WormHole是“虫洞”意思。物理界解释为连接黑洞和白洞的时空隧道。它的结构和计算机网络中的网关类似,作为连接两个世界的枢纽。各管各,不用关心中间做了什么。如下:
WormHole是一个简单、易用的api管理平台。目的是为了降低后端服务开发与前端调用的耦合性。通过WormHole这一层使整个项目的开发协作更加完善。客户端开发人员从管理平台查找需要的接口信息进行调用,服务端开发人员定义好接口后同步到管理平台中,管理平台可以统一对接口的访问设置等。
WormHole有两个版本,一个是基于SpringMVC框架、一个是基于原版改造为SpringBoot版本的。
注:server层是指具体的dubbo服务提供方,框架、插件根据实际需求处理
WormHole的SpringBoot版本是 将SpringMVC、Shiro、JSP、Velocity、Servlet等组件与SpringBoot进行整合。部分配置还有优化空间,可按需调整
## 平台项目结构
wormehole / — wormehole-api 【管理台接口、实体类、传输对象、异常等的定义】 / — wormehole-domain 【客户端信息、用户token、result对象等的定义】 / — wormehole-web 【管理台的页面实现、接口实现业务逻辑】
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版本的配置文件会少一点。 约定大于配置,应该还有较多优化空间。
SpringBoot版本不需要tomcat,
下载项目
处理以下几个核心配置
部署到tomcat容器进行启动, 记得将webcontext-root 改为 '/'
运行的时候,DEBUG模式查看日志,比较容易处理问题。
开始刷USACO了,开始的题还是比较easy的吧,但是还有不足,主要是旗神说的把代码写简单这方面。其实想想,把暴力题写得优雅也是需要功力的事情,而且也不光是娱乐性质的。代码能力这东西,直接影响速度和准度,兑换到比赛上就是题数和罚时,不可谓不重要。所以多写多学大牛的代码还是很有意义的。 以上废话。 题意:给N个点,两两配对成wormhole,完成blink操作,不改变方向。每头牛都向右走,由于wor
过滤器其实是路由转发+过滤器 自定义过滤器 首先创建一个类继承下边两个类,实现过滤器 然后在启动项中通过创建bean的方式创建路由器 @Component public class TimeFilter implements GatewayFilter, Ordered { private static final Logger logger = LoggerFactory.getL
The Web Server Gateway Interface (WSGI) is a specification for simple and universal interface between web servers and web applications or frameworks for the Python programming language. 注: WSGI是为 pyth
Server/gateway 接受HTTP请求和提供并发。每当接收HTTP请求,就会调用callable object: 1.接收HTTP请求,不关心HTTP method,url等 2.为environ提供必要的参数 3.实现回调函数start_response,并传递给callable object 4.多线程调用callable object # application/framework
——by A Code Rabbit Description 所谓虫洞就是穿过去,可以回到过去! 这种牛逼的东西,大家天马行空开始幻想。 输入一张宇宙图,图中某些边权值为负,即为虫洞。 输出有木有办法不停穿过某些路,无限回到过去!!! Type Graph Algorithms Analysis 求图中权值为负的回路。 可以用深搜,经过的位置标记一下,并且计算自己所处的时间,再次到达某点时,看看是
父工程 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.a
搭建网关服务 1.创建新的moddule,引入SpringCloudGateway的依赖和nacos的服务发现依赖 <!--nacos服务发现依赖--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifac
Wormholes While exploring his many farms, Farmer John has discovered a number of amazing wormholes. A wormhole is very peculiar because it is a one-way path that delivers you to its destination at a t
https://blog.csdn.net/jiangyu1013/article/details/79415369 假设你的名字叫小不点(很小),你住在一个大院子里,你的邻居有很多小伙伴,父母是你的网关。当你想跟院子里的某个小伙伴玩,只要你在院子里大喊一声他的名字,他听到了就会回应你,并且跑出来跟你玩。 但是你家长不允许你走出大门,你想与外界发生的一切联系,都必须由父母(网关)用电话帮助你联系。
我刚开始使用API和Python获取数据。我想从我的交易平台中提取数据。他们提供了以下说明: http://www.questrade.com/api/documentation/getting-started 我可以完成步骤4,并有一个访问令牌。我需要第五步的帮助。我如何翻译这个请求: 进入Python代码?我已经试过了 我读了这个后尝试:Python请求与身份验证(access_token)
本文向大家介绍sea.js常用的api简易文档,包括了sea.js常用的api简易文档的使用技巧和注意事项,需要的朋友参考一下 本文罗列了seajs常用的api和代码示例,下面话不多说,来看看详细的介绍,有需要的朋友们可以参考借鉴。 一、seajs.config alias 别名配置,配置之后可在模块中使用require调用 require('jquery'); paths 设置路径,方便跨目录调
本文向大家介绍Android编写简易文件管理模块,包括了Android编写简易文件管理模块的使用技巧和注意事项,需要的朋友参考一下 最近在做一个将word文档导入到SQLite的程序。对于文件选择问题,经过再三考虑决定写一个简易的文件管理模块,用来选择需要导入的文件文件 先看下效果图: 思路: 获取存储器接口 遍历当前目录 利用ListView显示文件文件夹 先是布局 用于加载文件的Item布局
Wormhole 是一个能识别命名空间的由 Socket 激活的隧道代理。可以让你安全的连接在不同物理机器上的 Docker 容器。可以用来完成一些有趣的功能,例如连接运行在容器本机的服务或者在连接后创建按需的服务。 例如要连到容器中的 MySQL 服务: 连接方法: mysql=`docker run -d wormhole/mysql`./wormhole create url :3306 d
问题内容: 我有一个应用程序,当用户要求过滤图像时会生成一个新线程。 这是我唯一要做的任务,所有任务都同等重要。 如果我请求太多并发线程(我最多希望有9个),则线程管理器将抛出 RejectedExecutionException 。 在那一刻我要做的是; 只需将被拒绝的任务添加到队列中,下次启动线程时,将检查队列以查看是否存在积压。 显而易见的问题是,如果最终任务在第一次尝试时被拒绝,它将永远不
Gateway是一个使用go实现的基于HTTP的API 网关。 特性: API 聚合 流控 熔断 负载均衡 健康检查 监控 消息路由 后端管理WebUI 能做什么: 规划更友好的URL给调用者。 聚合多个API的结果返回给API调用者,利于移动端,后端可以实现原子接口。 保护后端API服务不会被突发异常流量压垮。 提供熔断机制,使得后端API Server具备自我恢复能力。 借助消息路由能力,实现灰度发布,AB测试。