个人随笔
目录
架构设计学习:网关系统的设计相关知识点
2025-06-04 22:03:12

网关系统是指处于系统架构中,作为应用程序和外部系统之间的接口,负责协调和转发请求和相应的系统。

是位于客户端与后端之间的一种中间层系统,简单来说就是请求要在这里过一遍水,本质就是过滤器,一个复杂的if else.

一、网关系统的功能

1、路由转发

将来自客户端的请求按照预先定义的路由规则进行转发,使请求能够到达正确的后端服务。

要实现一个路由转发的逻辑,需要进行如下几个步骤
a、先定制路由规则,比如/a请求进来的,后台转发到/g-a/a
b、对请求的url进行分析判断,可用正则匹配
c、根据分析判断的结果,结合路由规则进行转发
d、转发的时候可以进行负载均衡
e、还可以对请求进行监控管理

2、协议转换

网关系统应该支持多种协议,比如HTTP,WebSocket,RPC等,并进行协议的转换。比如后台服务是RPC,但是我们可以通过网关暴露http的接口出去,客户端可以通过HTTP调用,网关再转成RPC调用。

公司内部之间的调用可能是http,但是外部会是https,以及http和dubbo的转换这些,

3、安全控制

根据定义的安全策略对请求进行控制,比如对请求进行身份验证,加解密,黑名单,限流,鉴权等。

  1. 对于鉴权,主要是对用户合法和数据合法,对于用户合法可以进行用户认证,对于需要进行鉴权的请求,网关系统可以调用具体业务的用户系统来实现,让用户系统给网关进行反馈。对于数据的合法,这个一般都会建议在具体业务系统中来实现,而不会在网关来实现。
  2. 对于网关的黑名单,作用是用来限制特定的请求,黑名单可以存储在数据库,配置文件,内存,或者缓存中,存在数据库和配置文件因为涉及磁盘的IO读写,可能会比较慢,这个要看业务系统对性能的要求高不高,要结合具体的业务场景来,存在内存中的话,可能需要考虑重启内存失效的问题,可以重启的时候从数据库或者配置文件加载这些。
  3. 还需要考虑黑名单实时更新的问题,可以直接修改数据库或者配置,也可以用消息队列,还有钩子webhooks来,比如管理端添加了一个黑名单,会回调网关系统的一个黑名单更新接口进行更新,或者登记消息队列让后台消费程序更新。
  4. 黑名单的实现主要是通过request请求获取ipurl,用户,body信息等来处理,可以通过日志和监控进行动态调整,比如某个ip访问频率异常就可以自动加入黑名单中。

4、流量控制

对请求进行限流,熔断,降级等操作,保证系统的稳定性。还可以对用户进行优先级调度,比如vip会员优先等这些逻辑。

对于限流,主要是根据ip或者设备进行限流,有些会对用户进行限流,以及对内的api接口调用进行限流,可以使用固定时间窗口,滑动时间窗口,令牌桶,漏桶等算法来实现。

5、缓存

对热点数据进行缓存,减轻后端服务的压力,提高系统的性能。

比如访问频繁的接口,相应时间比较慢的接口,需要频繁访问的静态资源。

二、网关的部署

网关通常是多个节点,我们可以通过Nginx的upstream进行部署,但是nginx又会有单点的问题,当然可以通过lvs来解决nginx单点的问题。

我们还可以通过DNS来对网关进行负载,还有F5硬件负载均衡,或者用keepalived来实现一个虚拟IP(VIP)来漂移到多个实际的ip。

 6

啊!这个可能是世界上最丑的留言输入框功能~


当然,也是最丑的留言列表

有疑问发邮件到 : suibibk@qq.com 侵权立删
Copyright : 个人随笔   备案号 : 粤ICP备18099399号-2