Skip to content

java实现api gateway网关(限流+熔断降级+黑白名单+泛化调用+RSA对称加密)

Notifications You must be signed in to change notification settings

zs-neo/FastGateway

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FastGateway网关

GITHUB

网关定位

  • 支持http调用(未实现)和rpc调用(已实现)
    • 请求到来时执行:限流-黑白名单验证-签名验证解密body-通过code获取请求的api信息
      • 如果请求的是内部http接口(无code)执行:请求转发,调用结果加密,返回响应
      • 如果请求的是内部rpc的接口(有code)执行:检查api参数,泛化调用,结果加密,返回响应
  • image-20200613220111614

数据库设计

  • 整体设计 在这里插入图片描述
  • gw_api表结构 在这里插入图片描述
  • gw_api_param表结构 在这里插入图片描述
  • gw_ip_bwlist表结构 在这里插入图片描述

责任链模式

  • 接口限流:使用guava令牌桶实现
  • 服务降级,服务熔断:业务方接口不可用的时候或者业务方处理速度变慢,进行熔断降级
  • 黑名单:哪些ip不可访问
  • 白名单:可以从结合业务背景从不同维度进行白名单验证,比如从商户维度或从业务维度
  • 数字签名验证,解码body数据:RSA对称加密解密保证安全性
  • 检查api信息,检查api参数:是否存在对应api,并将api参数拼接
  • 远程调用对应的接口(zookeeper,dubbo)
  • 响应加密:RSA私钥加密
  • 返回响应

请求示例

  • RPC(已实现
  • HTTP(暂未实现

快速上手

  • 启动一个zookeeper集群,这里用了三个zk组成zk集群 在这里插入图片描述
  • 启动项目 在这里插入图片描述
    • 这里一共两个项目,一个是网关的核心代码,一个是RealServer项目(用户系统)
      • 启动gateway-core
        • 控制台会打印公钥信息,保存一下(每次启动项目都不一样)在这里插入图片描述
      • 启动gateway-realserver
    • 打开front里的前端页面index.html,粘贴公钥信息过来在这里插入图片描述
    • 点击submit,下面就会生成body信息,复制一下。可以使用postman发送post请求,也可以使用test.rest去测试请求。需要把请求的body信息缓换成刚刚复制的json串在这里插入图片描述
  • 得到code=200的响应就说明成功请求并拿到数据了
  • 最后让我们来看下调用日志吧~ 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

About

java实现api gateway网关(限流+熔断降级+黑白名单+泛化调用+RSA对称加密)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages