在战“疫”期间,腾讯与广州市政府合作,在2天内上线了“穗康”小程序口罩预约功能,解决了购买口罩难的问题,上线首日访问量1.7亿,累计参与口罩预约人次1400万+。本文是腾讯云专家产品经理 汤文亮老师在「云加社区沙龙online」分享整理,为大家揭晓其前后端架构及产品设计。
点击视频,查看完整直播回放
一、口罩预约项目背景穗康是广州市政府提供的一个战役小程序,于1月30号上线,最开始版本只有三个功能:个人健康上报、疫情线索上报以及医疗物资上报,后续我们快速迭代了包括口罩预约、在线问诊、健康码等等功能。
说起口罩预约的诞生背景,其实在春节假期前疫情爆发就已经初现端倪。在大年三十那天,我们团队开了电话会议,决定我们要通过互联网工具的方式帮助政府支持疫情的防控。
而小程序具有开发快,门槛低,用户易上手的特点,是最适合做这种工具的渠道。经过沟通后,广州市政府很快决定要做这样的官方战役小程序,并且在1月30号就上线了第1个版本。
广州市政府在全国首次提出用小程序来做口罩预约,这为我们带来了很大的挑战,除了时间紧迫以外,因为口罩的社会关注度非常高,民众的需求很大,对系统的稳定性要求也会很高。
其次,相对于之前第1版上线的三个功能而言,口罩预约功能的业务逻辑更加复杂。这个项目是由市政府去主导,腾讯负责产品研发,广药集团负责口罩物资的提供、调配、以及线上线下的业务运营。
在政府的指导和推进下,三方很快研讨并确认了整个的业务流程,还有初步的产品方案。在两天时间内就完成了从需求设计,到开发、测试、上线的整个过程。
二、由完美体验到有损服务之所以说业务流程相对复杂?是因为存在这样一个线上到线下业务闭环的过程,这里会涉及到多方。
首先,广药集团的线上对接人,会在每天19点前,把当天可以预约的药店以及对应的库存数据给到我们,我们再将数据导进系统,在每天的20点开放预约。预约完之后,在每天的24点前,再把结果数据返回给广药对接人,再由他去分发到各门店,最后群众第2天就可以去门店凭预约码购买。
这就是我们收到的第1个需求版本,可以称得上是一个相对完美的无损体验版本。用户进来首先看到的是购买说明,然后进行注册,可以自动定位到用户当前所在区域,选择对应药店,同时会显示当前药店各个型号口罩的库存状态,进行选购预约。
另外考虑到可能会形成聚集,我们需要把到店购买的人群平均分配到上午和下午,所以这里也提供给用户时间段的选择,提交后会返回一个预约成功或失败的结果给到用户。
这个方案的每个步骤几乎都是实时查询、处理并返回结果的。
但是到1月30日,我们陆续从各个渠道收到反馈,发现口罩预约关注度远超预期,这个时候也开始觉得有点不妙,很多人担心口罩的需求量很大,系统会不会崩掉。
在这种情况下,我们重新调整了产品策略,决定要提升我们的性能,来扛住极有可能出现的大规模并发访问。
新的方案整体有4层缓冲:
第1层,在原来的方案里,要求能实时查询到药店的库存,而现在我们把药店、口罩等基础数据放到CDN里面,同时用户选择药店和型号时也不再做库存校验。
第2层,我们做了分批随机放行的策略,提交时前端分批随机放行,可动态设置阈值。这两个参数都是可配置的,我们可以预判流量的走势,做动态的调整。
这个策略就像我们平时去坐地铁,当遇到高峰期的时候,工作人员会拦住人进行分批放行,等到上一批乘客都已经上车之后,下一批才会放行进来,就类似这样一个策略。
第3层缓冲是在用户提交预约的时候,我们会先去一个缓存里面去判断,当前是不是已经结束预约了?结束预约有两个条件:
可能已经到了之前设定的预约结束时间;
口罩整体的库存已经用完。
所以我们可以在缓存里面做一个标记,预约结束,将状态写入缓存中。