微服务架构 | 超时管理

LSA 级别与全年停机时间速查表

计算公式:60 * 60 * 24 * 365 * (1-LSA) = 31,536,000‬ * (1-LSA)

系统级别LSA级别全年停机时间
0+99.999%5分钟
099.99%52分钟
199.9%8.8小时
299%3.65 天

LSA 级别实战

0+ 级系统是目前业界的普遍努力方向,已有实现了 99.995% 的案例
0 级系统是 涉及核心资金交易的基础服务,需要不间断运行,长时间不可用可能影响名誉、品牌、战略等
1 级系统是 不涉及资金的核心基础服务,需要不间断运行,长时间不可用会影响用户使用产品的核心功能或用户体验
2 级系统是 其他服务、内部服务,长时间不可用只会影响服务自身,或不会对用户产生影响

TP 性能

常见的 TP 性能有 TP99、TP999、TP9999
TP 性能是指,一段时间内,满足 99%、99.9%、99.99% 忘了请求的最小时间。
即:某次统计,服务的 TP99 = 100ms,则意味着 此服务 99% 的网络请求可以在 100 ms 的时间内完成响应
通常计算方式为,统计单位时间内的所有请求,按其相应时间进行排序,计算处于 x 位置的请求,返回其相应时间,如下图
在这里插入图片描述

TP 时间在统计时:

  • 忽略异常毛刺,毛刺大概率是偶发现象,比如网络抖动等,不能用来说明问题
  • 通常从压测数据来,一般使用分钟级压测数据进行统计
  • 通常使用调用方视角,而非服务方视角进行统计

超时时间设计原则

  • 基于服务所属系统级别设置
  • 基于系统对应的 TP 性能设置
  • 符合全链路超时漏斗

常见超时时间设置公式

系统级别超时计算
99.99%TP9999 * 1.2 + 50ms
99.9%TP999 * 1.2 + 50ms
99%TP99 * 1.2 + 50ms
  • 1.2 可以认为是一个 波动系数,通常相对稳定的系统可以稍小,反之可以稍大
  • 50ms 是为 GC 准备的时间,通常一次 GC 需要 20-50ms
  • 这两个数值常基于对生产环境、准生产环境的监控或压测,若 充分压测,可以认为对应的 TP 性能就是考虑了波动的数值,因此 可以忽略波动系数
  • 这两个数值也可以基于架构师团队的预测和调整

超时漏斗
在这里插入图片描述
超时漏斗如上图所示:服务 A 调用服务 B,超时时间 A > 超时时间 B

超时漏斗意义/不满足时的问题
首先可以将一个服务的超时时间可以理解为:服务处理单个请求时,承诺的占用系统资源的最大时间
对于一个请求,若如上图所示调用关系,上游服务应该持有系统资源更长时间,才能完整的收到下游服务的反馈
不满足超时漏斗可能导致两个问题

  • 资源占用上升:
    • 满足漏斗:请求到达服务 B,B 会开辟响应的资源,直到下游返回,服务处理完成,或达到超时时间释放
    • 违反漏斗:服务 B 一定等到超时时间再释放(实际处理时间从 ≤ 变为 =超时时间),增加资源占用
  • 降级不可靠:
    • 满足漏斗:得到基础服务的返回或降级,并继续处理
    • 违反漏斗:没得到基础服务的返回或降级,最后按服务 B 的降级返回
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【资源说明】 1、基于springboot微服务架构的班车预约系统(源码+数据库+项目说明).zip 2、该资源包括项目的全部源码,下载可以直接使用! 3、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 4、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 #### 涉及技术 Java、Springboot、MyBatis、Redis、MySQL、Dubbo、RocketMQ 等。 #### 设计技术 1. 采用 Dubbo 的架构开发,整个项目分为用户、班车、订单、支付四个服务,达到易维护的效果。 2. 基于 JWT 的 SSO 单点登录,并依携带的 Token 可以访问系统中其他服务,采用 Redis 缓存绑 定用户,达到用户登录一次处处能访问各个系统。 3. 采用 Redis 的 list 数据结构缓存班车场次列表,并基于 Spring 定时器优化班车场次到点更新班车 状态的业务,最后配合阿里巴巴开源的 Sentinel 中间件进行接口限流达到高并发、高可用的效果。 4. 下单和支付服务均采用基于阿里巴巴开源的 RocketMQ 消息中间件保持数据的最终一致性,并且 采用 Redis 缓存维持 RocketMQ 消息的幂等性,接着采用 RocketMQ 和 Sentinel 进行接口限流维 护系统的稳定性,最后采用 Redis 的监听 key 键过期事件保证未支付订单超时自动取消业务,达到高 并发、高可用的效果。 5. 分别采用 Dubbo 和 Nginx 提供的负载均衡机制将班车服务、订单服务、网关分配到不同的服务 器上,达到了高性能的效果。 6. 接下来的计划是 MySQL 读写分离、Redis 读写分离、以及分布式唯一 ID、集群管理等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值