优化健康码读写速度的面试题

2022-02-18 09:21:33 +08:00
 fyooo

对于一个地区海量用户,有 3 种状态:红码 /黄码 /绿码。

  1. 如果特定地方出现红码,会根据地理位置把附近用户状态设置成黄码
  2. 经过一段时间,清零后,黄码变成绿码

怎么设计后台架构?

昨天在 B 站刷到的推荐,有点意思,跟同行探讨一下

10237 次点击
所在节点    程序员
79 条回复
SurfaceView
2022-02-18 15:44:14 +08:00
我还好奇上面的人在喷谁,多看了几层。。发现早就 block 那个人了。。。
murmur
2022-02-18 16:08:34 +08:00
@banmuyutian 那只能说我的吹牛逼功夫不够,我认为健康码就是社会问题,在安卓和 ios 隐私保护越来越完善的今天,你能不能取到精确定位,甚至有没有定位都是两说

没什么可以吹的,我只能跟你谈业务和社会问题

为什么那么鄙视社会问题,连阿里都想清楚了,双十一一天抢购是个很 sb 的问题,系统压力大,快递压力大,用户体验差,明明促销 2 个月可以轻松解决,为什么要死磕优化
thtznet
2022-02-18 16:19:20 +08:00
健康码这个东西需要优化的不是技术方案,而是行政管理方案。
shmilypeter
2022-02-18 16:23:00 +08:00
其实健康码本身也是个系统设计问题,数据来源有用户的主动上报管理,的对于单个人员的置黄红,不同地方政策不一样所以需要每个地级市都要一个健康码,以及如何从运营商那边获得人员驻留轨迹,如何扛住系统压力。
zhangli2946
2022-02-18 16:31:45 +08:00
SELECT 谁 FROM stream( 谁, 时间, 地点) // "场所码" 了解一下
JOIN table(地点, 开始时间, 前预警期, 后预警期) // 也可以换成流 不过 是 windowed stream
ON 时间 > 开始时间 - 预警期 AND 时间 < 开始时间 + 后预警期

或者 基于设备之间互发现的做法 "apple 暴露通知" 了解一下
joesonw
2022-02-18 16:33:06 +08:00
位置这个数据可不是只记最新的. 一般都会需要有追溯的功能, 根据追溯时间长度精度, 这个存储的难度可大可小.
Level6
2022-02-18 16:38:44 +08:00
这贴都有阴阳怪气的 还有给它点赞的
YvesX
2022-02-18 17:08:28 +08:00
我会提醒他看看我的简历,让他猜猜实际上我们是怎么做的。
v2orz
2022-02-18 17:13:35 +08:00
有点意思,系统设计问题最大的乐趣就是看看大家的思路,与自己的想法的碰撞

无论怎么设计,总是不可能依靠技术解决 100%的问题,但面试只是为了考察能力嘛
undefine2020
2022-02-18 18:07:48 +08:00
最关键的是 地理位置 是从哪里获取的, 如果是运营商提供,那还用费脑筋?
liudaolunhuibl
2022-02-18 18:36:40 +08:00
这种系统设计再加上一个算法题可比八股面试有意思太多了,而且也更能面试出候选人的水平,但是遗憾的是这种水平的面试对面试官的要求也比较高,所以并不好推广
4771314
2022-02-18 18:53:24 +08:00
@liudaolunhuibl 也许面试官也不会[手动狗头]
murmur
2022-02-18 18:57:41 +08:00
@undefine2020 这里有一个很有意思的问题,可能我们都没想到,甚至都不知道答案

如果我 A 地成了密接( A 地因为没有出现大范围传播所以是低风险),但是在我确认密接的时候上了火车,等我下车要检查 B 地的码

如果 AB 两地自行收集数据,那么这个东西就是一坨 shit ,我在 B 地因为没有数据(假设这个地方的火车站马虎到不去看新闻,不知道哪里是需要观察的区域),是绿码,畅通无阻
如果我到 B 地也黄了,那说明国家背后有一套强大的系统共享通行数据,这就不是我们考虑的事了
murmur
2022-02-18 19:01:05 +08:00
有人说我们再抬杠,我想说你一点生活常识没有,八股文背傻了是吧

我同事因为发烧去了一次发热门诊就黄了,至于什么时候黄,谁关心呢,反正在核酸结果出来之前他是不能离开医院的,在这 6 个小时内系统有充足的时间刷新缓存、收集数据

同理,可能你的数据还没刷新,因为你核酸监测异常,疾控中心就会给你打电话让你别动,相关人员就开始封锁你的单元楼,然后大家焦急的等复核结果,这个行动远比健康码快的多

所以这个东西纯技术有什么意义??
undefine2020
2022-02-18 19:01:56 +08:00
@murmur 这个肯定是错杀 1W 的设计原则,上头会有规定的
chi1st
2022-02-18 20:13:31 +08:00
@4771314 这个极海还是挺强的,面试视频干货很多,早就关注了
noparking188
2022-02-18 21:35:24 +08:00
请不要在这里讨论技术问题
-> stack overflow
-> segment fault
-> 掘金
...
uni
2022-02-19 14:38:57 +08:00
我有个朋友就是负责某省健康码的,表示没这么难。。
也就是常见的工程上的解决方式就行了,相反最难的还是跟大数据局的领导开会扯蛋撕逼
clarkli
2022-02-20 10:17:43 +08:00
@humpy 把 yyyyMMddHH 换成 epoch 可以进一步优化查询效率

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/834691

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX