服务化框架--网关

本文以JSF HTTP网关为例,探讨了服务化框架中的网关调用流程、可能导致崩溃的原因及解决方案。网关在启动后获取服务接口信息,创建长连接,处理调用者的请求,并在遇到外部系统调用压力过大时,需要设置超时和重传策略。此外,还讨论了缓存问题(如穿透、雪崩、热点)以及日志、CPU使用率和网络状况对网关稳定性的影响。网关的主要作用包括限流、协议转换和统一鉴权,确保服务的安全和高效运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以JSF HTTP网关为例

在上文中介绍到:

https://blog.youkuaiyun.com/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输入参数时进行判断
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值