服务化框架--网关

以JSF HTTP网关为例

在上文中介绍到:

https://blog.csdn.net/qq_34861102/article/details/80960396

服务化框架--网关


调用

  • 总的流程如下:

服务化框架--网关

  • 实际上存在两个阶段
    • 首先在 GateServer 启动之后
      • 拉取开通网关接口调用的接口信息(权限控制中心
      • 获取JSF服务列表
      • 创建长连接
    • 在调用者向网关发起HTTP请求
      • 网关获取JSF服务接口信息(权限控制中心
      • 网关发起HTTP请求
      • 网关接口接受HTTP响应
      • 调用者返回HTTP响应

导致崩溃的原因

  • 被外部系统调用崩溃

    • 会存在着外部系统调用接口时访问量过大
      • 应该设置超时以及重传次数
    • 对于大数据量的访问,要使用redis
      • 关于缓存可能存在的问题
        • 缓存穿透:即直接存储到了数据库之中,导致数据库承受不了过多的并发访问
        • 缓存雪崩:在下面描述的缓存热点中,在一个集群因为集中的key值只能存储到一个集群中,会导致集群崩溃而会调用集群组中的另外一个集群,进而导致整个缓存直接崩溃
        • 缓存热点:对于应用程序如果使用一个较大的Map,或者是因为代码的问题,导致使用存储到缓存的key值只能存在缓存的一个集群(存在多个集群)之中
  • 被日志打满崩溃

    • 未正确使用日志打印的时候会出现因为访问量过大而导致服务器的物理机出现磁盘占满的情况
    • 解决思路:定时清理磁盘的脚本以及实时监控的崩溃
  • CPU使用率占用崩溃
    • 正常情况的CPU使用率应该保持在:内核数*0.7
    • 并行任务过多的时候会导致阻塞从而出现网关服务器无法承载过大的服务量
  • 网络不佳崩溃
    • 一次调用者请求的时间集中在客户端序列化、客户端网络执行、调用方序列化、调用方网络执行
    • 因为网络的问题会导致调用不通出现网关无用的情况

网关的作用

  • 限流服务
    • 通过设定单个的应用的流量访问上限值在网关层面实现对JSF服务调用次数的限制:
      • 一种可行的方法是在 Gateway Server 中通过 redis 进行该应用的调用次数记录并在一次请求中进行判断是否校验
  • 协议转换
    • 对于真实的服务可能只能在内部网络中使用,或者是外部服务要求序列协议不同等,使用网关可以解决
  • 统一的鉴权服务
    • 通过对调用方进行解析可以判断出是否具有权限,从而决定后续的请求是否会向下一步进行传递
      • 可以为有权限的用户生成特定的keytoken,而后在Tomcat输入参数时进行判断