高并发系统设计学习笔记(二十五) API网关系统

一、API网关起到的作用

API网关(API Gateway)不是一个开源组件,而是一种架构模式,它是将一些服务共有的功能整合在一起,独立部署为单独的一层,用来解决一些服务治理的问题。你可以把它看作系统的边界,它可以对出入系统的流量做统一的管控

1.入口网关

部署在负载均衡服务器应用服务器之间

 

  1. 它提供客户端一个统一的接入地址,API网关可以将用户的请求动态路由到不同的业务服务上,并且做一些必要的协议转换工作。在你的系统中,你部署的微服务对外暴露的协议可能不同 有些提供的是HTTP服务;有些已经完成RPC改造,对外暴露RPC服务。API网关可以对客户端屏蔽这些服务的部署地址以及协议的细节,给客户端的调用带来很大的便捷。
  2. 在API网关中,我们可以植入一些服务治理的策略,比如服务的熔断、降级、流量控制和分流等等
  3. 客户端的认证和授权的实现,也可以放在API网关中。不同类型的客户端使用的认证方式是不同的,这些认证方式在API网关上可以得到统一处理应用服务不需要了解认证的细节
  4. API网关还可以做一些与黑白名单相关的事情,比如针对设备ID、用户IP、用户ID等维度的黑白名单。
  5. API网关中也可以做一些日志记录的事情,比如记录HTTP请求的访问日志。

2.出口网关

系统开发中,会依赖很多外部的第三方系统,比如第三方账户登录、使用第三方工具支付等等。我们可以在应用服务器第三方系统之间,部署出口网关,在出口网关中,对调用外部的API做统一的认证、授权、审计以及访问控制。


二、API网关要如何实现

API网关中执行的动作有些是可以预先定义好的,比如黑白名单的设置,接口动态路由;有些则是需要业务方依据自身业务来定义API网关的设计要注意扩展性 也就是你可以随时在网关的执行链路上增加一些逻辑,也可以随时下掉一些逻辑(也就是所谓的热插拔

Zuul就是采用责任链模式 Zuul1中将filter定义为三类:pre routing filter(路由前过滤器)、routing filter(路由过滤器)和after routing filter(路由后过滤器)。每一个filter定义了执行的顺序,在filter注册时,会按照顺序插入到filter chain(过滤器链)中。这样Zuul在接收到请求时,就会按照顺序依次执行插入到filter chain中的filter了。

 

  • Kong是在Nginx中运行的Lua程序。得益于Nginx的性能优势,Kong相比于其它的开源API网关来说,性能方面是最好的。由于大中型公司对于Nginx运维能力都比较强,所以选择Kong作为API网关,无论是在性能还是在运维的把控力上,都是比较好的选择;
  • ZuulSpring Cloud全家桶中的成员,如果你已经使用了Spring Cloud中的其他组件,那么也可以考虑使用Zuul和它们无缝集成。不过,Zuul1因为采用同步阻塞模型,所以在性能上并不是很高效,而Zuul2推出时间不长,难免会有坑。但是Zuul的代码简单易懂,可以很好地把控,并且你的系统的量级很可能达不到Netfix这样的级别,所以对于Java技术栈的团队,使用Zuul也是一个不错的选择;
  • Tyk是一种Go语言实现的轻量级API网关,有着丰富的插件资源,对于Go语言栈的团队来说,也是一种不错的选择

 

 在引入了API网关之后,我们的系统架构就变成了下面这样

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值