登录
免费注册 / 登录

ADR

编号:ADR-0000-006
决策人:张伟
日期:0000-00-00
状态:已接受
主题:请假列表改读只读副本

一、决定

行政协同平台的「我的请假」列表改为读取只读副本。创建、审批和撤销仍写主库。决定于 9月20日由张伟接受,计划在 9月26日 21:40 的索引变更完成后切换。切换前列表继续读主库。总部 420 名员工的请假查询是这条路径的全部流量,工作日峰值约 12 QPS。

二、背景

请假列表按员工工号过滤并按创建时间倒序。9月16日两个残留测试工号各有 2,000 条以上记录,把列表 P99 打到 1.6 秒,主库 CPU 到 46%。清掉测试数据后恢复到 190 毫秒,但六地开放后列表会和预订写操作抢主库。李莉评估:加上工号与创建时间的联合索引后,列表仍适合放到副本,使主库专注于写入。

三、考虑过的做法

四、落地方式

  1. 9月26日 21:40 先在主库建立联合索引,从库自动同步该索引。
  2. 索引可用后,把列表查询的数据源改为副本。配置保存后 30 秒内两台应用一起生效。
  3. 副本延迟超过 1 秒时,列表自动改回主库,连续回切不超过 10 分钟,超时由值班人通知李莉。
  4. 员工刚提交的请假若 1 秒内在列表看不到,页面提示刷新。审批写主库,主管打开的是单据详情而不是列表缓存。

五、后果

正常延迟在 200 毫秒以内时,员工几乎感觉不到差别。副本维护由李莉负责,应用切换由周敏执行,查询语句由刘洋修改。王芳在切换当夜抽 20 个工号,列表条数要与主库一致。若抽查不一致,立即把数据源改回主库。本决定不改变请假的状态流转,只改变列表的读取位置。

六、确认

张伟于 9月20日接受。陈静在场确认员工提示文案。若六地开放后列表峰值超过 70 QPS,再开一次评审,讨论是否增加第二台副本。在那之前,本决定保持有效。