logoProsperBao

中间层能做啥

2022-03-01 03 · 6min

中间层的应用场景

  1. 代理转发请求
  2. 多个接口的数据聚合
  3. 缓存请求的数据
  4. 限流(针对接口或者路由做请求限制)
  5. 日志记录操作
  6. 用作监控检测报警
  7. 统一鉴权/或者统一认证
  8. 可以路由转发
  9. 服务端渲染

代理转发请求

代理转发在实际中有很多广泛的应用.

浏览器首先将请求发送给 中间层服务器 ,请求收到后 中间层服务器 可以对请求做一些处理,比如将原来的路径变换一下,请求头的信息改变一下,再把修改后的请求发送给远程真实的服务器.

远程服务器计算出响应结果再返回给 中间层服务器, 中间层服务器 仍然可以对响应做选择性处理再分返回给浏览器.

代理转发可以解决前端日常开发中经常遇到的跨域问题,另外它还屏蔽了远程真实服务器的细节,让浏览器只与中间层服务器 通信。

多个接口的数据聚合

比如大部分图标,都是需要对比数据,从不同的接口拿取数据,通过中间层拿取然后缓存。

针对不同的接口数据进行聚合。

数据缓存

缓存对于提升系统性能,减小数据库压力起到了无足轻重的作用.一般常用的缓存软件是 redis ,它可以被理解成数据存储在内存当中的数据库.由于数据放在内存中,读写速度非常快,能极快的响应用户的请求.

中间层部署 redis管理缓存数据,可以提升整体应用性能.但不是什么数据都建议存放在 redis中,只有那些不经常变动的数据应该设置成缓存.

比如商品的信息数据,浏览器对某个商品发起请求,想查看该商品的详情.请求第一次到达 中间层, redis 此时是空的.那么 中间层 开始请求 server 层得到响应结果,此时在将响应结果返回给浏览器之前,将该次请求的访问路径作为 key 值,响应结果作为 value 存储到 redis 中.这样之后再有相同的请求发来时,先查看 redis 有没有缓存该请求的数据,如果缓存了直接将数据返回,如果没有缓存再去请求 server 层,把上述流程再走一遍.

redis 还可以对缓存数据设置过期时间和清除,可以根据具体的业务操作。

限流

中间层可以对前端无节制的访问做限制.比如有些恶意的脚本循环访问接口,一秒钟访问几十次增大了服务器的负载.

日志记录操作

系统没有日志,相当于人没有双眼.日志可以帮助我们发现分析定位线上系统出现的错误.另外通过日志数据也可以进行统计计算得出某些结论和趋势.

中间层 能够承担起管理日志的功能,以接口访问日志为例.在系统中新建一个日志文件夹,每次有请求访问时,首先解析请求的路径、当前的访问时间以及携带的参数和终端数据信息.然后在日志文件夹创建一个txt文件存放当天日志情况,将上述数据和该请求的响应结果组合成一条记录插入 txt 文件中.下一次访问继续走上面流程往 txt 文件添加访问日志。

用作监控检测报警

中间层可以对某个频繁访问的 ip 进行访问限制或者将其提交的数据进行报警,检测漏洞扫描等情况。

针对某个请求资源占用进行检测统计。