千万级高并发下 看天翼云如何为“健康码”突破技术瓶颈

天翼云开发者社区
• 阅读 547

“一码溃,众难行”短短六个字,却是目前疫情反弹、全国严密防控之下,大众生活的直接写照。毫无疑问,作为此次疫情中产生的“速生品”,在经历两年疫情大考之后,健康码已逐渐演变为国人出行的第二张“身份证”。5月以来,常态化核酸检测成为公众热点话题,在国内疫情多点散发、持续高发的形势下,北京市、上海市、山东省、山西省、江西省等省市纷纷开展常态化核酸检测。

国家卫生健康委新闻发言人、宣传司副司长米锋曾表示:要完善常态化监测机制,省会和千万级人口以上城市建立步行15分钟核酸“采样圈”,方便群众就近就便进行核酸采样。开展核酸定期检测,重点行业和人群加大检测频次,提高早发现能力。 同时,全国常态化核酸检测所引发的流量冲击也造成了“健康码”APP、小程序的访问量陡升,多地健康码系统面临更大挑战。在全民化的流量冲击下,传统健康码平台的升级已然势在必行。

后疫情时代,一“码”背后的难题 简单的扫码,亮码,出示核酸结果几个动作其背后其实隐藏着一套庞大且复杂的数据系统。回想疫情初期,当时各地普遍采取了线下收集、手动排查的人海战术,基层人员需要逐一对辖内人口进行排查,信息填报,而健康码系统的出现则一劳永逸解决了这一困境。从线下到线上、从人工到机器,其背后的运行逻辑其实没有发生任何变化。健康码显示信息的背后,其实有着三套庞大的数据体系在做支撑,来自卫健委疾控中心的病例信息、核酸检测信息,来自公安系统的户籍情况与社会关系情况以及来自运营商的活动轨迹信息。 正如我们在开头所提到的,来自多方庞大且繁杂的数据以及全民化、常态化疫情防控所带来的流量冲击,传统健康码平台的升级事实上是必然的结果。

根据分析,健康码面对的主要挑战包含:短期内访问量过大导致的服务器瘫痪、系统容量不足、网络带宽等硬件问题、本身软件的设计缺陷问题等。总结其原因,我们也能够罗列出传统健康码平台出现的三大典型问题: ·基础设施与业务应用设计割烈 IaaS、PaaS层与业务应用间设计割裂,且未提前进行调测和优化,易出现读写异常等问题,影响健康码正常应用。 ·热备及双活容灾能力有限 系统热备及双活架构设计有限,尤其对于异构容灾双活设计不足,针对多码融合等复杂场景及各类突发状况未做充分准备。 ·突发峰值应对能力不足 疫情爆发时易出现短时间、大规模、高并发两码查询及核酸检测登记、录入情况,面对突发峰值,在系统能力、资源上应对方面能力不足。

健康码的“问”,天翼云的“答” 针对上述问题,国家发布的《健康码和核酸系统安全平稳运行工作指引3.0》文件中针对系统应对尖峰流量冲击能力、系统最大承载能力以及拒绝服务攻击能力提出了全新的要求,文件中更是多次强调了内容分发网络(CDN)、快速扩容、热备双活机制等技术措施的重要性。

作为云计算技术领域的“国家队”,中国电信旗下的云计算服务提供商天翼云自然是不遑多让,在第一时间发现传统健康码系统症结的同时,便迅速开展了技术攻坚,并打造了全新的健康码系统上云建设方案。

为了应对特殊时期庞大流量引发的高并发冲击,天翼云搭建的健康码系统与核酸检查系统QPS(每秒查询率)可达6万以上,每小时可相应2亿人次的健康码查询/核酸检查数据请求。在应对节点故障或性能不足的突发状况下,为保障健康码及核酸系统的正常运行,该方案可支持5分钟内完成快速扩容需求。同时,在底层服务器出现故障时,天翼云搭建的健康码与核酸检测系统能够在35秒内自动完成虚机漂移。通过快速将故障虚机的控制转到集群的另一台控制服务器上,使虚机保持正常运行,从而确保了整体系统的高可用性。

天翼云健康码与核酸检测系统laaS拓扑主要分为3大模块:三线BGP、两个业务资源池。BGP机房主要用于三大运营商之间的互联,BGP的最主要功能在于控制路由的传播和选择最好的路由。使用BGP协议互联后,网络运营商的所有骨干路由设备将会判断到IDC机房IP段的最佳路由,以保证不同网络运营商用户的高速访问。

千万级高并发下 看天翼云如何为“健康码”突破技术瓶颈 天翼云健康码解决方案laaS层面架构图

在资源池数据中心方面,天翼云采用了双活中心的方案架构设计。何为“双活”中心?如同字面含义一样,双活指的便是由两个数据中心并行运行的模式,在双活架构下两个数据中心都处于运行之中,且互为备份。天翼云双活数据中心在资源配比到业务部署皆为1:1配置,且双中心从东西向网络,到核心交换、业务设备的物理链路层面都处于完全隔离的状态。双活中心之间通过OTN专线进行互联,数据通过数据链以及IaaS层面的高可用方案来保证通信。

千万级高并发下 看天翼云如何为“健康码”突破技术瓶颈 天翼云双活中心方案整体架构图

天翼云多中心架构方案使用双节点热备搭建,实现双系统容灾部署模式。正常模式下协同工作,同时可并行提供业务访问服务。在主节点发生故障的情况下,可第一时间实现节点的无感切换,从而支撑业务的连续性。

利用其独有的运营商资源优势,天翼云双活架构选择了与主中心同在一个区域的资源池作为双活中心,通过已建波分环路进行基础网络高速互联,基于负载均衡和分布式集群技术,逐层实现网络双活、应用双活、缓存双活以及数据库双活。

据了解,目前天翼云已在华北、西安、苏州等多地具有3AZ部署。

天翼云SCDN—打破流量瓶颈,重塑安全长城 有果必有因,前文我们介绍了天翼云健康码系统在高并发、高负荷考验下所结出的“果”,接下来我们便要从技术的角度去探索背后的“因”。

在面对每秒数万人次的高并发健康码访问时,无论是双活中心内部数据的高速互联、灾难发生时的业务快速接管亦或是公众用户在边缘端的静态数据访问,传输优化是解决这一系列问题的重中之重,而天翼云SCDN解决方案便是那把关键的“钥匙”。

天翼云SCDN解决方案共分为三个版本:基础版、标准版与旗舰版。在健康码与核酸检测系统的应用场景中,实际上有90%的请求来自于静态文件缓存的处理。SCDN方案基础版实现了将源站的静态数据缓存在边缘节点,用户在发送请求时便可直接在边缘节点上对静态文件做出快速响应。通过提供分布式缓存文件、最近边缘节点加载文件,方案高效解决了集中式文件缓存导致网页加载速度慢的问题。

天翼云SCDN基础版拥有着丰富的回源策略,可以实现通过智能传输路径探测选择性能最优路径进行数据传输。同时天翼云CDN支持主备、轮询、权重等多种策略,支持IPV6/IPV4回源,支持多级缓存收敛。这也使得SCDN方案的出现极大地降低了出示健康码时带来的回源压力,回源带宽约是此前整体访问的10%,回源请求数降低了50%。除此之外,基础版还包含了便捷的内容管理模块,包含了内容刷新、内容预期、一键封禁等便捷功能。

在保障健康码系统的高可用、高可靠运行之外,由于健康码系统所承载的是最为直接的公民个人信息,如若防护不当可能会造成不可挽回的信息泄露影响,安全也是健康码系统构建中必不可少的重要一环。除了对于传输层面的优化外,天翼云SCDN基础版中还有着丰富的Web应用防护与DDoS高防能力。

天翼云Web应用防护服务拥有着遍布全国各个边缘节点的防护能力,能够直接从威胁的源头阻击攻击流量,有效降低源站压力。其WAF引擎能够实时检测恶意请求并及时处理,帮助用户提供应对 OWASP TOP 10攻击,爬虫、域名劫持等网站及 Web 业务安全防护问题。在健康码应用场景中,天翼云Web应用防护服务能够提供亮码防护与实时扩容性能,让安全防护不再成为限制整体系统的“性能枷锁”。

千万级高并发下 看天翼云如何为“健康码”突破技术瓶颈 天翼云Web应用防护架构图

DDoS攻击作为一种常见且高威胁性的网络攻击手段,凭借其低攻击成本、高防御成本的特性一直以来都是政府企业安全部门的重点关注对象。而对于全民化的健康码系统,做好DDoS防护安全自然是系统设计的重要指标。天翼云DDoS高防通过CNAME接入,可在边缘节点对源站的所有请求进行实时检测和清洗,无需牵引。相较于传统的集中式防护,天翼云DDoS通过负载均衡来动态调动资源,就近覆盖用户访问,不存在单点故障风险。而在健康码系统中,天翼云DDoS高防提供了亮码防护,属地防护以及云原生架构快速扩容的功能,保障了业务系统不受大流量攻击影响。

千万级高并发下 看天翼云如何为“健康码”突破技术瓶颈 天翼云DDoS防护效果图

以上就是天翼云SCDN方案基础版的功能分析,在标准版中天翼云增加了源站动态查询结果缓存功能,提供了亮码云端在线的能力;而在旗舰版中天翼云DTS升级研发了DB2CDB能力,实现了源站零请求、亮码永远在线的进阶功能。

总结 中国的健康码数据系统,这个世界范围内拥有最多用户、最多个人数据、可以随时随地掌握疫情个体情况的平台几乎成为了此次国内抗疫的决定性武器。在疫情反复、防控常态化的大背景下,数字化防疫也进入了下半场,健康码系统的升级势在必行。 健康码系统的升级是一场关乎民生的大考,大到系统设计、云网交互能力、安全防护,小到访问方式、业务保障皆需深度考量。在CSDN看来,天翼云健康码解决方案无论是双活中心设计在容灾能力的冗余度上,亦或是SCDN方案在传输与安全性能所带来的变革式优化上,都让我们有足够的信心,去从容应对疫情防控常态化所带来的挑战。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Peter20 Peter20
3年前
mysql中like用法
like的通配符有两种%(百分号):代表零个、一个或者多个字符。\(下划线):代表一个数字或者字符。1\.name以"李"开头wherenamelike'李%'2\.name中包含"云",“云”可以在任何位置wherenamelike'%云%'3\.第二个和第三个字符是0的值wheresalarylike'\00%'4\
Wesley13 Wesley13
3年前
Java获得今日零时零分零秒的时间(Date型)
publicDatezeroTime()throwsParseException{    DatetimenewDate();    SimpleDateFormatsimpnewSimpleDateFormat("yyyyMMdd00:00:00");    SimpleDateFormatsimp2newS
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
9个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
天翼云开发者社区
天翼云开发者社区
Lv1
天翼云是中国电信倾力打造的云服务品牌,致力于成为领先的云计算服务提供商。提供云主机、CDN、云电脑、大数据及AI等全线产品和场景化解决方案。
文章
675
粉丝
15
获赞
40