写点什么

国内酒店稳定性治理实践之内部资源治理

2021 年 1 月 15 日

国内酒店稳定性治理实践之内部资源治理

背景


之前介绍了国内酒店稳定性治理实践之系统间依赖治理,我们对系统间的依赖进行了专项治理,涉及通用的限流、缓存、Dubbo、Http、DB、MQ 等。但是光治理系统间的依赖是不够的,我们还对系统内部资源进行了分析和治理。



本篇文章重点讲述对系统内部资源的治理,主要包含使用降级、熔断、隔离、同步转异步等手段控制流程(限流在上篇已经介绍,本篇就不重复了),以及对线程池等核心资源进行治理。


治理手段及方案


降级、熔断


这个主要应对的是外部接口或资源出现问题的场景。提前考虑一些处理方案,保证主流程不会因为异常情况中断。比较典型的是 P1 应用接口调用的 P3 应用接口,要保证 P3 接口出任何问题都不会影响 P1 应用接口的核心流程处理。


1)核心接口内部涉及的外部调用做好降级调研及处理,优先无损降级,核心调用准备好有损降级的手段。

2)非核心场景查询外部接口做熔断处理(主要根据失败率和响应时间),这里要注意熔断后的处理,提前定义好返回的默认值或者定义的异常。

3)关于熔断,推荐提前准备熔断后的替代接口、替代资源或默认值返回,并且能动态调节熔断阈值。

4)规范(不强制):新需求及重构支持降级回修改之前,新增功能支持下线,这样能大幅度降低发布的风险。




隔离


这个主要应对的是相同资源中部分资源出问题影响其他资源的场景。


1)线程池隔离:这个出问题影响很大,主要涉及 dubbo 线程池、自定义的业务线程池、jdk8 并发流使用的线程池(jdk8 的 parallelStream 默认共用的同一个线程池)。

2)数据存储隔离:主要指核心数据与非核心数据隔离,核心数据也可以考虑分片。

3)核心接口与非核心接口隔离:可以通过使用不同应用、不同 group、不同线程池、不同的 client 等,根据业务需要使用隔离手段。

4)只要有核心与非核心的区分,都可以考虑隔离。



同步转异步,串行变并行


这个主要应对同步操作出问题时阻塞整体流程的场景。


1)主流程一般选择同步处理,涉及的辅流程考虑异步处理。辅流程要做好异常和兜底处理,出问题不要影响主流程。

2)核心接口相关流程考虑并行处理,降低接口返回的时间。

3)dubbo、http 等接口也考虑异步调用及处理。



线程池治理


系统中线程池的资源是非常宝贵的,也需要被管控和治理。


1)所有自定义线程池要有相关的线程池监控(活跃线程数、队列内 task 数量、已完成任务数量等)。通过监控,可以查看线程池的资源使用情况,方便提前治理,新需求做资源评估时也会更准确。

2)核心线程池允许动态调整核心参数(核心线程数、最大线程数、工作队列长度等)。这样可以在线程池线程不够用或者线程池占用资源过多时,动态在线上进行调整,而不需要通过发布修改,大幅度降低影响的时间。

3)核心业务建议使用不同的线程池,参考上面介绍的隔离策略。



JVM 及硬件指标治理


1)fgc 次数监控,设置合理的单机报警,比如 5min 内 fgc 次数不能大于等于 2 次。

2)ygc 次数监控,设置合理的单机报警,比如 1min 内 ygc 次数不能超过 10 次。

3)gc 时间监控,比如每次 ygc 时间不可以超过 0.7sec,个别应用可设置更符合自己的指标值。

4)普通虚机上 tomcat 应用的活跃连接数不要超过 300,个别应用可设置更符合自己的指标值。

5)I/O 密集型的应用 cpu 使用率不要超过 60%,个别应用可设置更符合自己的指标值。

6)监控 blocked 状态的线程,配置报警并打印堆栈。防止个别线程持续占着资源无法释放,影响应用对外服务能力。

日常运维


1)报警治理(长期):控制应用每日报警次数,优化报警指标配置,尽可能保证报警就是有问题的、需要人工处理的。

2)异常治理(长期):持续关注核心应用 top5 报警及偶发的 RuntimeException,不断优化与修正。

3)服务巡检:每天高峰期后、每次发布后做好服务检查,对异常指标要确认原因并尽快优化。

4)故障自动定位:目前我们正在基于应用的监控报警、异常及 trace 链路分析等做故障自动定位,已经取得一些进展。当故障原因可以直接被自动定位,结合我们准备好的处理手段,对于同样的故障,故障的影响就可以越来越小了。

5)定期对核心系统进行压测,根据实际流量情况做好机器扩容和缩容的评估。目前 Qunar 内部可考虑使用流量调权压测系统 。



总结


本次稳定性治理已经告一段落,从日常运维和治理手段做下回顾:


日常运维方面,提前做好核心应用的跨机房部署、相关组件的高可用及服务冗余,发布及高峰期后做好服务巡检,通过定期的压测及故障演练去验证应用的健壮性及相关工具的可用性,并尝试引入 AIOps 自动定位故障原因。


治理手段方面,借助降级、熔断、限流、隔离、多通道、多副本等手段对核心资源进行治理。



想让一个应用永远不出故障很难,但是提升应用高可用的手段很多,这些手段的合理使用对应用的稳定性特别重要。同时,稳定性单独治理一次也是不够的,需要组内每个成员不断提高这方面的意识和能力,并在日常工作中将这些治理项及注意点落实。


最后,希望这次实践能对更多的人有指导作用。


头图:Unsplash

作者:郑吉敏

原文:https://mp.weixin.qq.com/s/4A3f6zejTiVI_ECgnBndBw

原文:国内酒店稳定性治理实践之内部资源治理

来源:Qunar 技术沙龙 - 微信公众号 [ID:QunarTL]

转载:著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

2021 年 1 月 15 日 23:171

评论

发布
暂无评论
发现更多内容

GitHub上120K Stars国内第一的Java多线程PDF到底有什么魅力?

你看起来很好吃

Java 程序员 并发编程 多线程 架构师

2. Bean Validation声明式校验方法的参数、返回值

YourBatman

参数校验 Hibernate-Validator Bean Validation 方法校验

疫情对在线教育的影响

anyRTC开发者

在线教育 直播 RTC 安卓

架构师培训十二周练习

小蚂蚁

云小课 | 一份超实用的勒索病毒自救预防指南

华为云开发者社区

勒索病毒 弱密码 云小课 企业主机安全 病毒云查杀

数字货币交易系统应用开发,区块链交易所app

13530558032

全网都在跪求的阿里Java修炼开发技术笔记,终于开放下载了

你看起来很好吃

Java 编程 架构师 后端开发

Redis问的太深入,面试官说:你先回去等通知吧

你看起来很好吃

Java redis 编程 程序员 架构师

阿里P8大牛力荐:Java程序员进阶必读的书籍清单(附电子版)

Java成神之路

Java redis 编程 程序员 JVM

除了方文山,用TA你也能帮周杰伦写歌词了

华为云开发者社区

AI 数据 周杰伦 modelarts 歌词

架构师训练营第 0 期第 12 周作业

无名氏

膜拜!京东T9大牛沉淀三年终于整理出了这份架构核心修炼之道

你看起来很好吃

Java 编程 程序员 架构师 计算机

TCP/IP协议族(第四版)已出,不愧是世界计算机优秀畅销精选书籍

你看起来很好吃

Java 编程 架构师 TCP/IP 协议族

架构师训练营第十二周作业

叮叮董董

如何实现特定列脱敏?这两种方法你都要会

华为云开发者社区

postgresql 数据 脱敏 匿名 视图

架构师培训 -12 hadoop

刘敏

图解图库JanusGraph系列-一文知晓“图数据“底层存储结构(JanusGraph data model)

洋仔聊编程

janusgraph 图数据库 存储结构 图解源码分析

使用 Next.js , Nexus, Prisma 构建全栈项目

夏木

nextjs prisma graphql fullstack

Spring+多线程+集合+MVC+数据结构算法+MyBatis源码学习笔记分享

Java成神之路

Java spring 编程 程序员 多线程

我们从Kubernetes发展中学到了什么(1)

华宇法律科技

Kubernetes 容器 k8s

LeetCode题解:155. 最小栈,使用链表代替栈,JavaScript,详细注释

Lee Chen

LeetCode 前端进阶训练营

不按套路出牌的阿里面试官:“刁难”面试者常用套路,你中招了吗

周老师

Java 编程 程序员 架构 面试

区块链USDT支付系统,USDT承兑支付软件开发

13530558032

GitHub上的今年第一本《Java异步编程实战》美团T9亲荐,太赞了

你看起来很好吃

Java 程序员 架构师 异步编程

收藏!一篇教会你写90%的shell脚本!

洋仔聊编程

Shell shell脚本编写 收藏教程

真香警告!手绘172张图解HTTP协议+703页TCP/IP协议笔记

你看起来很好吃

Java 程序员 架构师 计算机

易观郭炜:流动水系数造未来

易观大数据

一文说透"静态代理"与"动态代理"

洋仔聊编程

源码分析 动态代理 静态代理

京东T9今年首发的一份Spring Boot实战,让开发像搭积木一样简单

你看起来很好吃

Java 编程 程序员 架构师 计算机

Github下载即将破百万的PDF:双十一高并发亿级流量秒杀顶级教程

你看起来很好吃

Java 编程 程序员 秒杀 计算机

架构师训练营十二周作业

方堃

InfoQ 极客传媒开发者生态共创计划线上发布会

InfoQ 极客传媒开发者生态共创计划线上发布会

国内酒店稳定性治理实践之内部资源治理-InfoQ