简述一下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/
网友评论