14.1178亿!扛住了

2021-05-13 15:40:39 浏览数 (1)

*本文转载自腾讯云,点击此处阅读原文

在第七次全国人口普查项目中,腾讯共有40多个部门、超过300人参与其中,封闭周期长达200多天;

人口普查全面“无纸化”背后,腾讯云数据库支持了十亿级用户数据、七百万个终端和百万级峰值TPS(每秒处理量)。

5月11日,第七次全国人口普查结果公布。

普查数据质量是普查统计工作的生命线……利用信息化,对普查方式进行创新:首次全面采用电子化,实时及时上报数据;首次实现普查对象通过互联网自主填报;首次利用行政大数据进行比对核查;首次实现利用互联网云计算云服务实时处理工作;首次用信息化系统对700多万普查员进行线上管理。

——国家统计局总统计师曾玉平在发布会上表示

我国每十年进行一次人口普查:从1953年的算盘,到后续的计算机,数据采集的变迁从未改变纸表录入的形式。

到了第七次全国人口普查,电子化采集全面取代纸表,将数据直接上报到国家统计局。700万普查员、全体中国大陆公民,首次在线上完成了人口普查数据采集

这也意味着,需要开发一套史无前例、触达人群最大的线上系统。

你输入的一条条数据,最终汇成统计结果的汪洋大海:这背后的数据采集、流转、脱敏、处理和分析过程,难度超出所有人想象。

为20亿条数据装上“双引擎”

2020年3月,腾讯正式接到第七次全国人口普查项目时,架构师王飞心里清楚,这意味着要在疫情肆虐之时与他才一个多月的孩子分开。

封闭开发启动。

这个所有普查员同时操作的系统,要保证数据安全和服务稳定,比王飞以往接触的所有项目对性能的要求都更加苛刻,他必须在架构的设计以及后续的压测运维中全力以赴。

整个项目周期的严峻性、交付难度,都需要团队付出更大的心力。

时间紧迫,任务艰巨。700万普查员实际上形成了一个巨大的企业组织,分散流动在全国各处,如何让其保持整齐划一,只能一边不断讨论梳理,一边在摸索中开发产品功能。

第一个任务,是要做一款集合了任务分配、数据采集功能的企业微信小程序,需在一个月之后上线。

这背后需要腾讯云数据库极强的负载能力。“大量的数据要收集上来,同时数据的更新和数据的查询是互相交错的,不仅要应对动态的人口流动,比如一个人今天在深圳而明天在北京,同时要准确对应起人和户、人和人之间的关系。”王飞说。

本次全国人口普查项目,腾讯云数据库提供了擅长OLTP场景能力的版本,和擅长联机分析处理OLAP场景能力的企业级分布式数据库TDSQL,通过“双引擎”设计支撑人口普查工作完成。

前者专门用来做前端生产系统的事务处理,其最大的优点是即时地处理输入的数据,并及时响应,实时保持系统数据处于最新状态;后者负责后期数据联机查询分析处理,支持复杂的分析操作。

双引擎技术能力的融合,完整、平稳、高效地支撑了全国人口普查数据登记及统计分析整个体系化工作。测试中,TDSQL数据库应对高并发场景时可以实现最高250万每秒的吞吐量,这样的吞吐规模已经可以满足目前中国人口2倍的数量。

借此,TDSQL数据库扛住了普查过程中的并发高峰。

同时,为了满足业务实时查询分析的需求,普查员在前端不断录用的数据在TDSQL OLAP能力引擎中进行进一步的数据分析,据了解,在这些庞大的数据中,不乏多张超级大表关联高并发统计查询,其每张表中存放了超过20亿 条记录。如果把其中存放一张超级表的空间用来存放平均50万字的书籍,可以放下超过1000万本,一个人终其一生也读不完。

15天,50万QPS,扛住!

一位普查员站在内蒙古牧区,在飞扬的草场中举着手机,眉头紧皱。

手机里的信号在此处中断了,这也意味没法在此完成在线登记。得知消息后,项目组意识到,必须要想个办法。

离线状态下,数据不能实时上报,更会出现两个普查员在同一个离线区域同时上报的情况,如何实现在恢复信号的情况下,有序采集上报数据,需要在原有的基础上做更精细化的打磨。

全国试点启动后,类似于离线的问题也逐渐被发现、放大。而随着试点范围逐渐增大,从一个街道的七八万人,直接变成了全国31个省市的几千万人,性能要求越来越高,问题越来越多。

人口普查的信息登记,最终需要落到“人”身上——每一个普查员都必须正确理解和使用登记表单。全国32个省/自治区都使用腾讯乐享进行普查员的线上培训,方便普查员获取一手政策资料、参与线上课程学习。通过腾讯乐享,普查员更快速地理解表单指标含义、掌握与居民们沟通的技巧、更精准地记录数据。

腾讯乐享像一张网,连接了所有的普查员,让普查工作顺利高效进行下去

腾讯用户研究和体验设计部(CDC)也深度参与到了普查员登记工具(企业微信小程序)和自主填报小程序的相关工作中。团队多次深入到普查试点地区,进行用户实地调研。为保障老年群体的使用体验,字号的大小比市场上常规产品字号偏大,大大提升了阅读感受。在普查员不易跟进的自主填报环节上,CDC团队为填报用户设计了文字版的「注释」,降低了认知成本,保证填报准确度和效率。

为了兼顾不同人群的不同上门场景与操作习惯。全国试点之前,还需要额外完成自主填报功能的实现。如何在没有普查员在场的情况下自主完成信息填报,需要增加大量的数据审核功能,例如身份证号填错了,就出现提示,让其重新填写。

同时,易用性、便捷性是自主填报小程序的重中之重。

除了繁重的开发工作之外,内外的团队、不同的产品、差异的技术、不熟悉的流程也给项目带来了很多的工作量和难度。

整个人口普查项目部分模块使用了云开发功能,避免了应用开发过程中繁琐的服务器环境搭建及运维,开发人员只需要专注于业务逻辑的实现,让整个开发过程简单又高效。

两个月时间内,项目组基于腾讯云原生容器化的方式进行开发和构建。从业务部署、压力测试到最终上线,全面云原生化,底层的容器技术及TKE提供的新一代容器网络方案带来了极致性能提升,可稳定支撑100万人同时上报。

同时,通过微服务网关、服务鉴权、账户权限等安全体系以及微服务路由等治理手段,有效保障了项目的服务质量和安全性。

在全国试点展开的同时,压测的工作也如火如荼地开展了起来。最终上线时,全国人口信息需要在15天内完成采集,预测将达到50万QPS(每秒查询率)。

这一史上最高的海量并发,势必会对后台带来严峻的考验。技术人员必须提前测出所有风险,不然系统极有可能面临崩溃。

为了不影响白天综合试点的运转,所有的压测都安排在了夜里。那段时间,压测人员几乎没有睡过一个完整的觉。系统一直处于满载状态,随时都需要紧急调优。彼时人手也紧缺,项目组成员经常一测就是一个通宵。

在灾备设计上,整个数据库还采用了一主三从异地灾备的备份方案,在某个数据节点出现故障时,都能保证数据的完整和一致。哪怕出现大规模的突发情况,通过异地灾备,也能够进行数据恢复。

零点行动:没有硝烟的战场

“打扰了,我是人口普查员,现在正要对您家做普查登记。”

47岁的吴景文是沙坪坝天星桥街道的普查员,这是他第二次参与人口普查。一样的红帽子、红马甲,不同的是这一次他的胸前多了本证件,上面印着用于登记的二维码。

摸底阶段,前线的普查员将在正式采集开始前上门摸清全国住户的基本情况,以为正式采集提供参考。

项目组所在的北京泰鹏大厦7楼,成为了唯一7*24小时灯火通明的楼层。从第一条数据,到后续全国用户的上报,一个多月的时间里,现场122人全力投入到了重保工作之中,把泰鹏大厦变成了后方“没有硝烟的战场”。

11月1日零点,在国家统计局的会议室中,举行了一场简短而隆重的开网仪式,宣告了第七次全国人口普查短表登记正式启动。

该阶段,主要采集人口基本信息,而紧随而至的长表采集阶段,则会在短表的基础上,增加更多字段进行采集。

在后方,从上线的那一刻,交付项目总监李欣一直内心忐忑。全国短表数据将在后续的15天里完成采集。从开始第一天起,每秒QPS就猛增到7万,峰值一举达到了11万左右。

这么多的数据,一条都不能丢,系统一秒都不能断

好在此前精心的架构设计、持续的产品优化、密集的性能压测使问题不断得到解决,采集系统始终保持稳定运行。

然而除了数据采集之外,数据处理也面临极大的压力。随着人口普查采集工作正式启动,全国所有的统计人都迎来了不眠夜,各省都在加班加点连轴转。

据不完全统计,在此次第七次全国人口普查项目中,腾讯共有40多个部门超过300人参与其中,封闭周期长达200多天

据新华网报道,与2010年全国第六次人口普查的纸表入户登记方式相比,电子采集的方式将登记时间缩小到了20分钟以内,很大程度上降低了后期数据录入、处理的难度。

0 人点赞