Android · System Design / 设计追问

Android健身房心率监控:实时展示、离线补传与告警

约100名学员的设备上报,为教练提供状态和异常提示。

题目重点:约100名学员的设备上报,为教练提供状态和异常提示。

题意与假设

这道练习题保留了面经中值得训练的核心约束,并将需要澄清的条件单独列出。现场拿到变体时,先和面试官确认这些条件。

  • 约100人是给定场景;训练假设每人1秒一条,采样频率、阈值和保留期需确认。
  • 系统展示传感器数据及预先批准的提醒策略,阈值由业务/专业人员配置,不从题面臆定医学结论。

解题路线

  1. 设备上报绑定sessionId/traineeId/deviceId、seq、eventTime、值和质量状态,后端同时存receiveTime。seq去重,设备断连与低质量值有独立状态。
  2. 移动端维持短期本地队列,断网批量重传;服务器写入后ACK,再删除本地记录。大盘按每人最新有效数据聚合,显示最后更新时间和掉线状态。
  3. 告警用策略版本、持续窗口与迟滞减少抖动,告警事件有ID、确认与升级状态。后台长连接断开后凭cursor补漏,不能只靠实时推送。

手动走一遍

设备t=10值上报后ACK丢失,再发同seq:只落一条;t=9延迟值不能覆盖t=10的最新展示,但可补入历史曲线。100×1Hz=100条/秒;若每条原始载荷200B约20KB/s,不含协议开销。一天约864万条,历史不能无限保存在手机内存。

规模与取舍

写入规模约人数×采样率;最新快照O(人数),历史O(采样率×保留期)。关注端到端延迟、离线比例、数据质量与告警漏发/重复。

易错点与追问

容易失分的边界

  • 没有数据不等于数值0;掉线要独立标记。
  • 客户端时钟不可当绝对可信排序,应结合session/seq与时钟校准。

继续深挖

  • 多设备替换和同一学员两设备读数冲突如何裁决?
  • 教练权限、租户隔离和历史导出需要哪些访问控制与审计?
✓已复制微信号!