简述
核酸采集人员用手机扫描用户的核酸码进行信息录入,扫描后迟迟是泛白的界面,这里就简单分析下。
一则消息:http://cd.bendibao.com/live/202292/143899.shtm
整体流程
说明
实际场景中,细节比较多,这里为了便于理解,只分析大体的流程,如有问题,欢迎指正。
对象
● 用户:获取核酸检测码。此时服务器应该插入一条用户数据,核酸检测状态为未检测。
● 核酸采集人员:扫描用户核算检测码。此时服务器应该更新该状态为检测中,表示即将送检。
● 核酸检测和录入结果的人员:将采集到的拭子进行检测,检测结果录入到系统。更新检测结果。
● 查询核酸信息的人员:用户自身,核酸机构人员,相关管理人员等。查询一个或多个用户数据。
● 核酸系统服务器:提供核酸检测码获取,核酸采集,信息查询和存储等。
写数据阶段
即是核酸从采集到检测的过程。
读数据阶段
平时的健康码展示,核酸系统数据查询等。
分析与解决方式
根据上面的过程,出现泛白的界面,很大可能的原因是应用服务被大流量打挂,或者数据库挂了。
这里从整体架构上来说(不涉及应用服务外部),核心解决方式就是要保护服务:
● 服务保护:限流
,舱壁
,请求入MQ
,批量pull队列消息
进行批量处理,以及服务集群
,负载均衡
等。
● 高效写数据:例如可以用ClickHouse集群批量存储或更新数据。
● 查询缓存与数据的弱一致性:Redis
集群做缓存查询,数据容忍度在两小时内,某城市人口2119.2万,每5分钟进行一次100万数据的缓存更新,或者更细的数据或时间粒度,或者更长容忍度时间,具体压测情况具体分析。