中间层的应用场景 #
- 代理转发请求
- 多个接口的数据聚合
- 缓存请求的数据
- 限流(针对接口或者路由做请求限制)
- 日志记录操作
- 用作监控检测报警
- 统一鉴权/或者统一认证
- 可以路由转发
- 服务端渲染
代理转发请求 #
代理转发在实际中有很多广泛的应用.
浏览器首先将请求发送给 中间层服务器
,请求收到后 中间层服务器
可以对请求做一些处理,比如将原来的路径变换一下,请求头的信息改变一下,再把修改后的请求发送给远程真实的服务器.
远程服务器计算出响应结果再返回给 中间层服务器
, 中间层服务器
仍然可以对响应做选择性处理再分返回给浏览器.
代理转发可以解决前端日常开发中经常遇到的跨域问题,另外它还屏蔽了远程真实服务器的细节,让浏览器只与中间层服务器
通信。
多个接口的数据聚合 #
比如大部分图标,都是需要对比数据,从不同的接口拿取数据,通过中间层拿取然后缓存。
针对不同的接口数据进行聚合。
数据缓存 #
缓存对于提升系统性能,减小数据库压力起到了无足轻重的作用.一般常用的缓存软件是 redis
,它可以被理解成数据存储在内存当中的数据库.由于数据放在内存中,读写速度非常快,能极快的响应用户的请求.
在 中间层
部署 redis
管理缓存数据,可以提升整体应用性能.但不是什么数据都建议存放在 redis
中,只有那些不经常变动的数据应该设置成缓存.
比如商品的信息数据,浏览器对某个商品发起请求,想查看该商品的详情.请求第一次到达 中间层
, redis
此时是空的.那么 中间层
开始请求 server
层得到响应结果,此时在将响应结果返回给浏览器之前,将该次请求的访问路径作为 key
值,响应结果作为 value
存储到 redis
中.这样之后再有相同的请求发来时,先查看 redis
有没有缓存该请求的数据,如果缓存了直接将数据返回,如果没有缓存再去请求 server
层,把上述流程再走一遍.
redis
还可以对缓存数据设置过期时间和清除,可以根据具体的业务操作。
限流 #
中间层可以对前端无节制的访问做限制.比如有些恶意的脚本循环访问接口,一秒钟访问几十次增大了服务器的负载.
日志记录操作 #
系统没有日志,相当于人没有双眼.日志可以帮助我们发现分析定位线上系统出现的错误.另外通过日志数据也可以进行统计计算得出某些结论和趋势.
中间层
能够承担起管理日志的功能,以接口访问日志为例.在系统中新建一个日志文件夹,每次有请求访问时,首先解析请求的路径、当前的访问时间以及携带的参数和终端数据信息.然后在日志文件夹创建一个txt
文件存放当天日志情况,将上述数据和该请求的响应结果组合成一条记录插入 txt
文件中.下一次访问继续走上面流程往 txt
文件添加访问日志。
用作监控检测报警 #
中间层可以对某个频繁访问的 ip
进行访问限制或者将其提交的数据进行报警,检测漏洞扫描等情况。
针对某个请求资源占用进行检测统计。