简述

核酸采集人员用手机扫描用户的核酸码进行信息录入,扫描后迟迟是泛白的界面,这里就简单分析下。

一则消息:http://cd.bendibao.com/live/202292/143899.shtm

整体流程

说明

实际场景中,细节比较多,这里为了便于理解,只分析大体的流程,如有问题,欢迎指正。

对象

用户:获取核酸检测码。此时服务器应该插入一条用户数据,核酸检测状态为未检测
核酸采集人员:扫描用户核算检测码。此时服务器应该更新该状态为检测中,表示即将送检。
核酸检测和录入结果的人员:将采集到的拭子进行检测,检测结果录入到系统。更新检测结果。
查询核酸信息的人员:用户自身,核酸机构人员,相关管理人员等。查询一个或多个用户数据。
核酸系统服务器:提供核酸检测码获取,核酸采集,信息查询和存储等。

写数据阶段

即是核酸从采集到检测的过程。

读数据阶段

平时的健康码展示,核酸系统数据查询等。

分析与解决方式

根据上面的过程,出现泛白的界面,很大可能的原因是应用服务被大流量打挂,或者数据库挂了。

这里从整体架构上来说(不涉及应用服务外部),核心解决方式就是要保护服务:
服务保护限流舱壁,请求入MQ批量pull队列消息进行批量处理,以及服务集群负载均衡等。
高效写数据:例如可以用ClickHouse集群批量存储或更新数据。
查询缓存与数据的弱一致性Redis集群做缓存查询,数据容忍度在两小时内,某城市人口2119.2万,每5分钟进行一次100万数据的缓存更新,或者更细的数据或时间粒度,或者更长容忍度时间,具体压测情况具体分析。