APIGateway设计的思路

简述一下APIGateway的设计思路,准备从头写一个网关。

API网关的职能

  • 请求接入,承接所有外部请求。

  • 中介策略,承担了外部请求和实际服务中间的功能,比如:鉴权、验签、路由、流控、缓存、黑白名单过滤等等。

  • 业务聚合,所有后端业务服务都可以在这里聚合,通过某种方式将业务服务都聚集到这里。

  • 统一管理,提供管理工具、后台服务等等,可以对服务进行注册、修改以及各种配置。

API网关需要实现的功能

  • 流控,控制流量,针对同一个ip在指定的时间段内访问次数做限制

  • 验签解密,校验参数、验证签名信息、将加密的信息解密

  • 接口验证,验证接口是否存在、接口信息是否是当前调用者的接口

  • 接口权限验证,调用的ip是否在白名单内

  • 业务参数验证,校验业务接口参数是否正确

  • 调用业务接口,可以使用dubbo泛化调用

  • 熔断降级,业务方接口不可用的时候或者业务方处理速度变慢,考虑进行熔断降级

  • 加密返回,将调用结果封装、加密、返回

  • 管理控制台,负责接口服务注册、配置等

实现要点

  • 实现方式使用责任链模式,链中每个模块负责一个功能

  • 本地缓存和分布式缓存配合,需要考虑本地缓存的更新,可以使用zookeeper通知或者MQ通知

  • 异步处理请求,使用Jetty容器部署应用

  • 线程池隔离,请求接收、请求处理、服务调用可以使用不同线程池进行隔离

  • 日志记录,请求以及处理等日志记录,方便问题查询

  • 数据统计,接口的调用信息统计,方便直观查看接口调用情况

  • 报警监控,针对异常或者其他错误选择报警

源码:https://github.com/dachengxi/APIGateway

原文链接:https://cxis.me/2020/04/06/APIGateway%E8%AE%BE%E8%AE%A1%E7%9A%84%E6%80%9D%E8%B7%AF/

参考

  • https://www.infoq.cn/article/EeE1xZeic4UdpbmR*03t

  • https://tech.youzan.com/api-gateway-in-practice/

  • http://www.zhikestreet.com/content/p/22.html

你可能感兴趣的:(APIGateway设计的思路)