分布式服务架构- Java服务的线上应急和技术攻关

6.1 海恩法则和墨菲定律

海恩法则

  • 每一起严重事故的背后,必然有29次轻微事故和300起未遂先兆以及1000起事故隐患。

墨菲定律

  • 需要我们对线上服务产生的任何征兆,哪怕是一个小问题,也要刨根问底
  • 问一下:为什么发生?发生了怎么应对?怎么恢复?怎么避免?

6.2 线上应急的目标、原则和方法

6.2.1 应急目标

  • 快速恢复服务,避免或者减少故障造成的损失,避免或减少对客户的影响。

6.2.2 应急原则

  • 快速止损。
    应第一时间恢复系统,而不是彻底解决问题。
    有明显的资金损失时,要在第一时间升级。
  • 应急SOP
    快速启动应急过程和快速决策止损方案
  • 问题升级
    如果当前应急负责人在短时间内不能解决问题,则必须进行升级处理
  • 保留现场
    应急过程中,在不影响用户体验的前提下,要保留部分现场和数据

6.2.3 线上应急的方法和流程

  • 引言:总体目标是恢复问题
    在任何阶段首先想到的应该是恢复问题。
    恢复问题不一定能定位问题,也不一定有完美的解决方案,但这些都可以通过留底后续分析复盘。

  • 6个阶段
    发现问题、定位问题、解决问题、消除影响、回顾问题、避免措施

  • 1.发现问题
    通常通过自动化的 监控和报警 系统来实现。
    通常会对以下3个 层面进行监控:
    系统层面(cpu、io等)、
    应用层面(tp99响应时间、接口成功率等)、
    资源层面(DB、缓存、MQ等)

  • 2.定位问题
    常见的需要考虑的问题:
    问题系统最近是否进行了上线?
    依赖的系统最近是否有上线?
    业务最近是否有运营变动,业务量是否有波动?
    等等

  • 3.解决问题
    切记:在没有明确原因前,不要使用各种可能的办法来尝试修复问题,这样可能既没有解决问题,还会引出新的问题。

  • 4.消除影响
    除了技术、运营的修复外,还要想好 话术 来安抚客户。

  • 5.回顾问题

  • 6.避免措施

6.3 技术攻关的方法论

首先要考虑的3个问题

  • 最近是否有 变更、升级和上线?
  • 之前是否遇到过相同或者类似的问题?
  • 是否有相关领域的专家?如 安全 性能 数据库 大数据 业务

针对第 1 个问题

  • 上线过程中导致的问题占所有线上问题的 30% 以上
  • 要能够第一时间降级、回滚。每一次上线都要有回滚措施。

针对第 2 个问题

  • 沉淀SOP
  • 积累技术经验

6.6 JVM 提供的监控命令

  • jad
    反向编译

  • btrace

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 对于一个老社工来讲,困难群体见怪不怪。早上七点出门,倒了两趟地铁两趟公交,9点半终于到了昌平。路途的曲...
    木兮日记阅读 1,079评论 0 0
  • 今天注册了简书。 在关注猫叔一年后,我决定去践行,2018年果断加入猫叔的读书营。也是猫叔的影响,让我了解了简书。...
    若心21阅读 1,176评论 0 1
  • 最近,漫威第一部黑人主角超人英雄电影《黑豹》上映,很多观众对《黑豹》的背景故事不是很了解。幸运的是,改编自漫威经典...
    小伙伴TV阅读 3,865评论 0 2