地  址:江苏省南京市玄武区玄武湖
电  话:4008-888-888
邮  箱:9490489@qq.com
商  务QQ:6759875247
租车网站建设:腾讯云Postgres
作者:管理员    发布于:2020-05-28 02:16   文字:【】【】【
腾讯云Postgres-XZ的数据管理策略 海内数据库技能盛会——2017第八届中国数据库技能大会(DTCC2017)于2017年5月11-13日召开,大会招揽120多位技能专家分享、5000多名IT人士参会,在5月11日的大会中,腾讯云数据库高档工程师,PostgreSQL数据库专家许中清做了腾讯云Postgres-XZ数据管理经验分享。

海内数据库技能盛会 2017第八届中国数据库技能大会(DTCC2017)于2017年5月11-13日召开,大会招揽120多位技能专家分享、5000多名IT人士参会,在5月11日的大会中,腾讯云数据库高档工程师,PostgreSQL数据库专家许中清做了腾讯云Postgres-XZ数据管理经验分享。 

从微信付出在实践案例中,许中清先容了腾讯云散布数据库DCDB for Postgres-XZ在数据管理过程当中面对的数据歪斜、本钱优化、数据迁移等能力,以及在解决这些问题的过程当中Postgres-XZ的一系列优化和内核优化,包含映射关系表(shardmap)、虚构节点组、多维分片策略、不绝机数据搬家等功用。

腾讯云散布式数据库DCDB系列产物,对内支撑腾讯内部事务的开展,对外为企业提供强有力的效劳,现已博得遍及客户的信赖与口碑,积极推进了腾讯云的疾速开展。

一、简介

Postgres-XZ是腾讯自研的,基于MPP架构散布式关系型数据库集群,内部代号为PGXZ。PGXZ是面向OLTP应用,兼容PostgreSQL协定,支撑散布式业务和跨节点杂乱查问的一款散布式数据库。现在现已在微信付出商户体系中运转近3年,治理超过230个节点和400T的数据量,也是寰球最大的PostgreSQL集群之一。

PGXZ的架构如下图,其间GTM负责散布式业务治理,DataNode负责存储数据,Coordinator负责对数据进行分发、聚合等操作,Coordinator自身不负责保存事务数据。Coordinator经过将散布Key上值进行Hash路由到各个DataNode上。

另外,PGXZ引入了逻辑路由层,在Coordinator上完成映射关系表(shardmap)。数据散布要害字(Distribute Key)先被Hash出ShardId,而后用ShardId查问ShardMap表找到数据对应的DataNode。路由过程如下图:

 

二、防数据歪斜

凡是是散布式集群,数据散布不均衡和负载散布不均衡就自然存在,这叫做数据歪斜;数据歪斜导致会负载和数据集中在一两个节点,进而严峻影响集群的扩展乃至正常运转。解决数据歪斜,是数据管理的最主要方针之一。

经过分析,大家发现数据歪斜的主要缘故原由:分片要害字(Distribute Key)自身引入的歪斜:由于事务数据自身的特征,导致在某个散布Key值的记载数特别多,例如生意业务类事务,以账户ID当做要害字,然而某账户ID生意业务量特别大,也会导致数据歪斜。

起首,经过治理shardmap,PGXZ包管数据平均的写入DataNode。同时,经过shardmap的动静治理, PGXZ能够动静将局部数据从负载较高的节点迁移到负载较低的节点,进而保证进一步的均衡。固然,这里的分片策略不只仅是来解决歪斜。

某些不凡状况,例如大大都事务存在2/8原则,即前20%商户可能发生超过80%的生意业务和数据,银行事务、社保事务、电商事务都存在相似状况,大家实践应用中也发现,微信付出体系中的京东账户,采用动静迁移数据自身现已无奈解决数据歪斜的问题了,由于京东账户的数据量和负载要求乃至超出一个DataNode物理上限。PGXZ为了解决这种问题,引入了虚构节点组技能,即由多个DataNode合成一个(或多个)虚构的DataNode(组),来承载那仅有20%商户发生的80%的生意业务和数据(如下图Huge Key Group)。

三、冷热数据分离

在数据管理过程当中,本钱始终是大家重视之处。因为散布式集群自身设施采用x86效劳器,相对于于某些方案,本钱现已很低了。但PGXZ其实不成全,由于腾讯内部PGXZ集群范围还在疾速增长,大家能够预感打破1000台设施之日可待;而这么大范围,悉数采用高端x86设施,本钱也黑白常惊骇的;因而,大家提出了在数据库层的冷热数据分离,贬低存储本钱的方案。

在大局部数据库体系中,数据有显着的冷热特征。显然其时的订单被拜访的概率比半年前的订单要高的多。依据经验来讲,越是数据量增长快的体系,这种冷热特征越显着。将冷数据存储到带有大容量磁盘的效劳器上,将热数据放在价格更贵重的ssd上显着更正当。传统方案是经过拆解体系,但PGXZ经过将冷热数据散布存储到Cold Group/Hot Group来大幅度贬低硬件本钱。

以下图架构是一套完整的架构举例,大家将PGXZ将DataNode从冷/热、大Key/小Key 两个维度分红四个:

Group:Small Key Group(Hot):存储小Key、热数据;

Small Key Group(Cold):存储小Key、冷数据;

Huge Key Group(Hot):存储大Key、热数据;

Huge Key Group(Cold):存储大Key、冷数据

每个DataNode Group都有独立的ShardMap空间(shard到datanode的映射表);每个DataNode Group都有差别的Hash策略。好比,关于每个record,Coodinator(CN)起首会依据DistributedKey和create time判断该record路由到哪个group。而后采用这个group内的hash策略、并搜索这个group的shardmap进一步路由到某一个DataNode。

Coordinator起首依据record的create time判断是冷数据仍是热数据,而后查问Huge Key List(PGXZ也提供接口由用户指定)判断record是属于Small Key Group仍是 Huge Key Group。最后在指定的Group里边经过hash和搜索ShardMap找到对应的DataNode。

为什么每一个Group采用差别的Hash策略?最间接的缘故原由就是2/8原则让要害字(Distribute Key)自身引入的严峻的散布不平均。因而在Big Key Group大家经过(distribute key, create time)复合列将大商户的数据hash到差别的shard,保证超大商户可以存储到集群中。那么,为什么小商户不统一利用这种多列的hash策略呢?由于关于数据量小的商户,路由到一个DataNode能够防止对个别账户写操作时的散布式业务和读操作时的跨接点查问。最后,Small Key Group(Hot/Cold)的Hash策略彻底一样,Huge Key Group(Hot/Cold)的Hash策略也彻底一样,只是他们各自属于差别的shardmap空间。

四、在线迁移能力

解决了歪斜问题,大家看看看主动扩容/缩容,越是开展快的事务,越是关注如果不影响事务运转疾速扩容/缩容。当集群范围不足以支持事务量的增长时,需要添加新的节点,PGXZ会主动将一局部shard从本来的Datanode无缝迁移到新节点上。或者当节点数据呈现歪斜时,体系主动将shard从负载较高的节点迁移到负载较低的节点。那这是如何做到的呢?

经过以上形容了PGXZ集群中的数据散布策略,大家分析可得到在PGXZ中,有三品种型的数据迁移:

热数据变冷,迁移到Cold Group。这是跨Group迁移

小账户变大,签到 Huge Key Group。这也是跨Group迁移

扩容或者由于均衡的缘故原由,在一个Group内部的节点之间进行迁移。

而对PGXZ数据迁移的方针是:

不影响事务。

保证数据彻底共鸣。

综合上述要求,PGXZ提出了一系列解决方案。关于扩容来说,加节点操作很简单,但真实的难点和重点是,再保证高可用和数据共鸣性的根底上,不绝机就可以实现数据的迁移。PGXZ的解决方案是依据迁移方针,设定一系列使命(Shard Moving Task)要害点,并对这些要害点进行拆解分析并加以完成。

一个散布式迁移使命(Shard Moving Task)由一个三元组(源source, 方针target, 分片Shards)来界说:从源节点迁移分片中的数据到方针节点。整个流程总共分红5个大步骤:迁移存量数据、迁移增量数据、数据查验、切换路由、清理(如下图):

迁移存量:望文生义,就是将需要搬家的分片的存量数据从源节点搬家到方针节点。此时事务仍然在写,为保证二者存量数据迁移不会存在反复或遗失的数据?PGXZ的方案是是将初步导出存量数据和初步记载增量这两个动作利用同一个数据库快照(Snapshot)。这里要讲解下,在路由切换之前,这些方针节点中的数据对外不可见。

追增量:为包管重做增量数据的同时,新的增量数据写入顺畅,PGXZ采取多轮迭代的方式来追增量数据。每一轮的增量数据会愈来愈少(搬家的速度比新增的速度快),因而每一轮迭代的重做工夫逐轮收敛,直到收敛到某一个可配置的阈值,大家就进入下一个步骤数据校验。

数据校验:PGXZ支撑严厉的数据校验,要求迁移后,不只数据条数一要致,并且内容也有必要彻底共鸣。可是传统的校验需要破费大量的工夫,并且,为了保证源节点数据再也不新增,有必要有一个加锁(只读)的过程。PGXZ的方案是,不是比及源节点统计实现之后才解除堵塞,而是统计校验语句获取快照解除堵塞;因而,以是这个加锁的工夫其实不长,通常在5ms以内

再追变更:如果数据校验的工夫较长,这段工夫源节点上又会发生较多增量数据,因而流程需要再次追变更,过程与第二步中的追变更彻底一样,在某一轮迭代的重做工夫达成某个阈值时,初步进入下一步:切换路由。

切换路由:切换路由需要加锁,也就是堵塞源节点上对这些迁移的分片的写操作,事务在这些分片上的写操作会落空。在路由切换完之后再解除源上的写堵塞。需要注意的是,在堵塞写的这段工夫,切换路由之前,另有最后一轮增量迭代需要在方针节点上重做。依据大家在现网中经验,这段堵塞局部shard上写的工夫绝大局部状况在20ms以内,通常能够做到小于10ms。,并且因为扩容时,并不是所有节点数据都去做迁移,因而这个影响也有限。

清理:解锁、静止源节点上的记载增量数据的过程,清理源节点上的反复数据。

最后依据大家在微信付出多次扩容操作中的统计,主要重视每次迁移锁读写的工夫,大家总共进行了135个迁移使命。每一次切换路由时锁事务的工夫主要散布在20ms~25ms之前,均匀堵塞工夫时15.6ms。总的来说,我们感遭到的微信付出等一系列效劳简直是全年无休的继续效劳的,也注意证实,大家PGXZ的迁移等运维操作,简直是对事务没有影响的。

依据大家的经验来看,在一个散布式机器的运维过程当中,除了日常巡检和故障扫除以外,大局部的主动运维事件都在数据迁移上;好比扩容搬家、冷热数据搬家等等;因而,如果能利用,例如腾讯云的关系型数据库CDB,散布式数据库DCDB等,这类事件极大的简化,不只晋升每个事务的功率,还能让我们愈加专心于事务开发,晋升事务代价。

以上就是PGXZ数据管理策略的主要内容。


2019-07-30 16:41:16 大数据技能 城云科技: 深耕城市大数据,打造“城市之云” 智能辨认牌照,间接抬杆放行,“便捷停车·先退场后付费”的落地让杭州1800余个开通场库均匀单辆车退场收缩到2-3秒,仅占此前扫码付费模式的非常之一,乃至更少。
2019-07-30 09:13:10 云资讯 微软采购BlueTalon 增强云核算数据类效劳 据外洋媒体报导,日前,微软公司发表采购数据有关专业公司BlueTalon。
Copyright © 2002-2020 网站制作系统_360免费建站官网_网站制作推广_医院网站建设_网站制作免费 版权所有 (网站地图
地址:江苏省南京市玄武区玄武湖 电话:4008-888-888
邮箱:9490489@qq.com QQ:6759875247