云资讯

继“一部手机游云南”后,抗疫时期,云南在全省范围内的公共场所推广由腾讯云提供技术支持的“云南抗疫情”扫码系

​1.65亿人次扫码登记的背后,是TBase的秒级返回

来源:服务器托管 作者:服务器租用 浏览量:114 更新:2020-03-02

继“一部手机游云南”后,抗疫时期,云南在全省范围内的公共场所推广由腾讯云提供技术支持的“云南抗疫情”扫码系统,实现全体民众出行扫码,全面分析预测确诊者、疑似者、密切接触者等重点人群流动情况

截至2月24日,云南省累计有1.65亿人次扫码登记“云南抗疫情”微信小程序,用户数1325.81万人(数据来自昆明信息港)市民使用起来也极其便捷,在进入公众场所前用微信扫描“入”二维码,离开时再扫描“出”二维码,这两张二维码就是云南打赢新冠肺炎疫情防控阻击战的两杆枪。

如此“简单”的操作背后下的功夫可不“简单”。

PartⅠ 高效处理急速爆发的亿级流量

如果把每天新增亿级数据存放在普通单机数据库里,数据库的查询性能会急剧下降,甚至分析能力也会受影响。同时,急速的增长量受空间限制无法长期存储,即使通过大批量扩容满足了性能要求,随之而来的是极高的成本投入。最重要的是,普通单机数据库数亿数据的查询性能无法满足秒级返回的需求。

因此业务方迫切需要一款支持PB级,且可以应对高速联机分析和高并发的事务处理的云上可伸缩的HTAP分布式数据库系统,经过了微信支付这样严苛业务考验的腾讯自研国产分布式数据库——TBase,可以全方位满足需求。

TBase是腾讯自研的分布式数据库,可以轻松应对亿级数据的存储、分析和查询。集高扩展性、高SQL兼容度、完整的分布式事务支持、多级容灾能力以及多维度资源隔离等能力于一身,采用无共享的集群架构,适用于PB级海量 HTAP 场景。

腾讯云TBase集群架构图

上图是TBase的集群架构图:

Coordinator:协调节点(简称CN),对外提供接口,负责数据的分发和查询规划,多个节点位置对等,每个节点都提供相同的数据库视图;在功能上CN上只存储系统的全局元数据,并不存储实际的业务数据。

Datanode:处理存储本节点相关的元数据,每个节点还存储业务数据的分片,简称DN。在功能上,DN节点负责完成执行协调节点分发的执行请求。

GTM:全局事务管理器(Global Transaction Manager),负责管理集群事务信息,同时管理集群的全局对象,比如序列等。

在这个架构下,TBase集群具有下面几个能力:

多活/多主:每个coordinator提供相同的集群视图,可以从任何一个CN进行写入,业务无需感知集群拓扑;

读/写扩展:数据被分片存储在了不同的DN,集群的读/写能力,随着集群规模的扩大做而得到提升;

集群写一致:业务在一个CN节点发生的写事务会一致性的呈现在其他的CN节点,就像这些事务是本CN节点发生的一样;

集群结构透明:数据位于不同的数据库节点中,当查询数据时,不必关心数据位于具体的节点

在云南抗疫小程序中,为满足业务高并发的入库和业务分析查询,TBase使用高性能分区表功能,根据数据量的大小将人群流动数据按照天或者间隔几天进行分区存放,解决了业务分库分表的痛点,并且可以进行冷热数据分离,为海量数据的处理提供了高效的方案。同时,利用TBase智能扫描快速定位数据的位置,减少人群范围,实现快速定位。另外,TBase采用分布式架构,可根据业务压力大小灵活扩展计算和存储资源,在节省成本的同时帮助业务高效稳定运行。

在数据的读取上,TBase将查询下推,并行执行用户SQL,分布式join执行示例如下:

要实现亿级数据的秒级返回,最重要的是提高数据节点执行效率,这里就需要提到数据重分布技术。

大家都知道,在分布式执行中通用的技术是数据重分布,数据重分布时容易导致数据节点内部资源使用不平衡,从而影响效率。TBase的数据重分布模型进行了业界独一无二的优化,该优化利用了CPU多核并行计算能力,增强了对复杂SQL的执行优化,可以减轻生产者负担,从而大大提高数据重分布时的执行效率和分布式系统中关联和聚合的效率,轻松实现小程序查询业务中亿级数据的秒级返回。

通过TBase的shard算法可以将数据快速均匀的分布到各个数据节点中,提升检索效率的同时也解决了单库的存储压力瓶颈问题。

Part Ⅱ 海量数据智能处理分析与建模

部分文章来源与网络,若有侵权请联系站长删除!