作者:闲鱼技能——九七

1. 导言

闲鱼作为C2C电商交易平台,音讯体系是导购链路上关键的一环。用户依靠谈天树立买家与卖家的信任,进一步获取商品信息。闲鱼音讯的稳定性直接影响到闲鱼用户体会,成交功率。 为强化闲鱼音讯体系的稳定性,保证用户体会。闲鱼音讯团队在2022年8月份对音讯体系稳定性进行了体系化管理。本文将从闲鱼音讯团队视角出发,讲讲咱们怎么做稳定性管理。

2. 问题界说

咱们的方针很清晰:减少线上问题。 咱们通过剖析体系现状、回忆历史问题,将问题分为两类,一类是高风险高概率,需求要点突击处理的首要问题,包括改变风险、弱依靠风险。另一类是存在潜在风险,但管理本钱高,需求长期投入建设的深水区问题,包括强依靠风险,体系规划。 咱们针对问题,拟定了对应的管理办法。包括:灰度、监控告警、自动化回归、强弱依靠管理、演练、重构等。因篇幅有限,本文将聚集于首要问题的管理办法。

闲鱼消息稳定性治理的背后

3. 问题管理

3.1 灰度

安全出产环境是由集团层面为保证线上稳定性的灰度流量出产环境。通过接入层网关的流量控制为环境供给1%线上流量+100%办公网流量,复原线上环境为体系验证供给场所。

闲鱼消息稳定性治理的背后
咱们以安全出产环境为根底展开一系列管理:

  • 安全出产流量闭环

常规场景下,安全出产流量能保证从入口到后续全链路都在安全出产环境闭环。但在闲鱼音讯场景里,强依靠MQ做流量的负载均衡,而安全出产流量通过MQ之后会被均匀打散,逃逸到线上,失去灰度调查才能。 针对该问题,咱们通过spring的Conditional条件注入才能,将线上和安全出产的MQ bean阻隔,从而将线上和安全出产MQ topic阻隔,使流量能够在安全出产环境完好闭环。

闲鱼消息稳定性治理的背后

  • 安全出产独立的监控告警,监控大盘

安全出产环境和出产环境的监控基线不同,告警阈值不同,为了能及时发现灰度问题,咱们以安全出产环境的水位独自装备了监控告警。掩盖调用量、RT、过错量、音讯延迟等多个方针维度,掩盖发送音讯、创立会话等一切中心链路场景。咱们将安全出产监控聚合成监控大盘,实时和线上监控水位做对比,不仅能发现改变引起的问题,还能发现改变对性能方针的影响。

  • 安全出产独立的离线监控报表

监控告警是实时的反常方针监控,而离线报表是更长时间窗口的方针聚合。咱们针对安全出产环境装备独立的离线监控报表,它不仅能发现纤细波动的反常方针,也能发现改变对事务方针(例如音讯抵达率、点击率)的影响。

  • 安全出产的自动化回归

自动化回归保证体系的底线,中心场景回归能防止引起严峻的问题。咱们将自动化回归与CICD集成,当发布到安全出产环境时自动履行自动化回归。

  • 发布标准

在完善安全出产建设后,假如没有标准去标准化流程,树立行为准则相同达不到保证稳定性的方针。咱们结合音讯本身的事务特点,约好了音讯团队内部的发布标准:发布必须在安全出产逗留一晚,第二天灰度放量。保证:1. 掩盖时间相关的代码逻辑。2. 满足久的灰度观测。3. 产出t+1的离线监控报表

3.2 监控告警

监控告警的生命周期可以分为监控数据准备、监控装备、监控验证、告警装备、告警验证五个环节。

闲鱼消息稳定性治理的背后
监控数据准备环节咱们有完善的根底设施。根据这个根底,咱们对监控告警进行掩盖率、及时性、有用性管理:

  • 监控掩盖率管理

管理的第一个方针是要保证监控掩盖全,不遗失。咱们分为三步保证掩盖完好:1. 整理出体系的中心场景链路,链路上的中心观测方针,查缺补漏监控告警。2. 通用的监控告警作为兜底,掩盖资源水位、接口调用、中间件性能等根底方针。3. 最后,通过监控告警离线报表整体性review监控告警掩盖率。

  • 告警及时性/有用性管理

管理的第二个方针是能及时发现问题、有用发现问题。告警的及时性与有用性是互斥的联系,为到达告警及时性与有用性的最佳平衡,咱们依照从严到松的方法逐步调整告警条件。一起为了继续维持告警及时性有用性,咱们树立监控告警离线报表,守时review告警记载,对告警调优。

  • 供给长效机制继续保鲜监控告警

监控告警管理需求继续投入,继续保鲜。咱们搭建了监控告警离线报表,它包括一切的监控告警装备,告警历史流水,供给告警历史的聚合试图。为咱们掩盖率管理、有用性管理供给大局视图,支撑咱们守时对监控告警调优。

闲鱼消息稳定性治理的背后

3.3 自动化回归

自动化回归的方针是保证底线,保证中心链路场景的稳定性。

  • 端到端等级的自动化回归

端到端等级的自动化回归能从真实运用角度去验证稳定性。咱们规划端到端的自动化回归用例,掩盖软件从安装、运用、卸载的完好生命周期,掩盖音讯中心场景链路。咱们将自动化回归与CICD集成,每天守时自动化回归,在发布流程做自动化回归卡口。

闲鱼消息稳定性治理的背后
闲鱼消息稳定性治理的背后

  • 接口等级的流量回放

凤凰回放东西是根据JVMTI实现的流量回放测试东西。咱们运用凤凰回放东西录制RPC流量,回放流量,diff结果,验证接口等级的稳定性。

3.4 依靠管理

依靠管理的方针是强弱依靠联系合理,并且弱依靠具备降级快恢才能。咱们进行了以下管理:

  • 依靠整理,代码等级review依靠的合理性,review是否具备降级快恢才能
  • 依靠改造:对不合理的强依靠降级为弱依靠,完善弱依靠的监控告警,降级快恢预案
  • 依靠演练:依靠演练是对依靠管理的验收环节。意图是验证强弱依靠联系和预期共同,防止出现“我认为”但“实践是”的问题,一起验证弱依靠的问题发现才能,降级快恢才能。

4. 总结思考

写这篇文章的时分,距离稳定性管理已通过去6个月。通过半年的实践,能体会到以上管理确实能有用处理问题。从片面来说,做线上改变时,灰度的逗留标准+独立的监控告警让人心里有底。从进程来看,灰度环境的建设也确实帮咱们规避了多起线上问题。从结果来看,这半年的线上问题趋近于0。 稳定性管理咱们阅历了从一开始的无从下手,到后来逐步找到思路,再逐步找到确定性的途径,清晰的处理了一些问题。对稳定性也有了几点思考:

  1. 问题是消除不完的,不要焦虑管理完还会出现问题,尽力减少问题
  2. 稳定性管理需求结合实践情况找到要点,网上大而全的管理经历不一定适用
  3. 稳定性管理需求继续投入,继续保鲜。例如告警问题跟进、告警降噪
  4. 最重要的还是要时刻绷紧一根弦,敬畏每次线上改变