双11大考 POLARDB分钟级弹性让企业轻松扩展

POLARDB优点解读系列文章之——分钟级弹性数据库

无处不在的脉冲计算

阿里有双11,中国有春运,高考后有分数出来的那天,歌迷心中有周杰伦演唱会门票在线开售之时。。。。有人的地方就有江湖,有人的地方也有脉冲计算,这些热点事件背后都须要大量的计算资源给予支撑,而这些忽然急需的计算资源就像脉冲同样,急迫而猛烈,咱们称之为脉冲计算。不只ECS服务器,数据库也须要应对这些突如其来的脉冲波动,才能保证整个系统的平滑稳定。后端

存储与计算分离

咱们知道POLARDB一个最大的特色是存储与计算分离,所谓分离就是计算节点(DB Engine)和存储节点(DB Store)在不一样的物理服务器上,任何落地到存储设备的I/O操做均为网络I/O。可能会有人问,走网络,延迟怎么样,性能好很差?在『性价比』这篇文章中简单介绍过借助PolarFS通过网络访问PolarStore的测试效果,与本地单副本SSD几乎持平,这里就再也不赘述。服务器

POLARDB的存储与计算分离的架构,除了能够下降存储成本,保证主备数据强一致、不丢数据以外,还带来了一个巨大的优点,就是让数据库的『弹性伸缩』变得极为简单、便捷。网络

作数据库弹性的挑战

虽然弹性伸缩是云的一大特色,不少人也正是看上这一点,才把本身的IT系统搬迁到云上。但数据库的弹性伸缩一直都是业界难题,不一样于纯粹提供计算服务的ECS,数据库要想作好弹性须要应对这些问题:session

  • 首先,横向扩展难。数据库每每是业务系统的核心。数据必须流动、共享才有价值,所以在规模还不算很大的时候,数据库通常都是集中式部署,这样用起来简单,好比多个业务库的查询,一个SQL就出来了。因此,对于数据库很难经过横向增长服务器数量,达到线性的扩展能力。
  • 其次,0宕机要求。数据库的核心地位决定了一旦数据库故障,真个业务就会瘫痪。所以数据库是必定要作高可用,屏蔽任何的硬件故障,来保障业务不间断。既要保障高可用,又要作弹性伸缩,就好像在高速飞行的飞机上换引擎,难度可想而知。
  • 再次,数据比计算『重(zhong)』。数据库的本质是存数据,但数据本质上是存储在存储设备上的,当你发现存储设备I/O性能不够时,升级存储设备并非一件容易的事。一样,假如数据和计算在同一台物理机时,这台物理机的CPU核数和主频,就决定了计算力的上限,很难扩容。

如今,当突破了存储与计算分离的性能瓶颈后,结合多节点共享同一份数据的架构设计,咱们终于能够在数据库的弹性伸缩领域有了新的进展。多线程

POLARDB的弹性优点

如上图,POLARDB是一个分层架构,从上层的代理PolarProxy提供了读写分离、SQL加速等功能,到中间的数据库引擎节点PolarDB构造了一写多读的数据库集群,再到底层的分布式存储PolarStore为上层提供多节点挂载的数据共享,每一层各司其职,共同构建了POLARDB云数据库集群。架构

从POLARDB产品定义上看,用户购买的节点数和规格大小(好比4核16G)指的是中间这一层PolarDB的配置,上层PolarProxy能够根据PolarDB的配置自适应调整,用户不需购买也不用关心性能和容量。底层PolarStore的容量是自动扩容,只须按照实际使用容量付费。并发

一般意义的扩展性,通常有纵向(Scale up)和横向(Scale out)和两种方式,纵向是指提高配置,横向是指配置不变,但增长节点。对于数据库来讲,都是先纵向,好比4核不够升到8核。但终归会遇到瓶颈,一方面性能提高非线性,跟数据库引擎自身的设计和应用访问模型有关(好比MySQL的多线程设计,若是只有一个session,那么很难体现出多核的优点),另外一方面,计算物理服务器配置有上限,存在天花板。所以终极手段仍是横向扩展,增长节点数。分布式

一句话归纳,__POLARDB横向最多能够到16个节点,纵向最高可到88核 ,存储容量动态扩展,毋须配置。__性能

纵向扩展(升级/降级配置)

得益于存储与计算分离,咱们能够单独升级或降级POLARDB数据库节点的配置,若是当前服务器资源不足,还能够快速地迁移到其余服务器,整个过程只须要5-10分钟(持续优化中),中间不须要任何的数据搬迁,只是若是涉及到跨机迁移,可能会有几十秒的链接闪断(将来,这个影响能够经过PolarProxy消除掉,升级对业务应用彻底无影响)。

由于目前同一集群内的全部节点必须绑定升级,所以咱们会采用很是柔和的Rolling Upgrade滚动升级的方式,经过控制升级的节奏、搭配主备切换来进一步减小不可用时间。

横向扩展(增/减节点)

因为存储是共享的,所以能够快速增长节点,而不须要任何的数据COPY。整个过程也只须要5-10分钟(持续优化中),若是是增长节点,对业务应用没有任何影响,若是是减小节点,那么仅对落到该节点执行的链接有影响,重练便可。

当增长节点以后,PolarProxy能够动态感知并自动加入到读写分离后端的读节点中,对于使用集群访问地址(读写分离地址)链接POLARDB的应用程序能够立马享受到更好的性能和吞吐。

毋须管理的存储空间

POLARDB的存储空间不须要关心,用多少付多少钱,每小时自动结算。

对于I/O能力,目前的设计是跟数据库节点的规格有关系,规格越大,IOPS和I/O吞吐量越高,在节点上对I/O有隔离和限制,避免多个数据库集群之间的I/O争抢。

本质上,数据是被保存在由大量服务器构成的存储池中,因为可靠性要求,每一个数据块复制出3个副本,保存在不一样机架的不一样服务器上。存储池可以进行自我管理,动态扩容、平衡,避免存储碎片和数据热点。

典型场景

某位于北京的在线教育公司在云上部署了一个小学生在线答题考试系统,平时有5万到10万人在线,周末有20万,考试高峰期能达到50万到100万,数据规模500G之内。主要难点在于高用户并发访问,读写争用,I/O较高,若是一直买最高配置,成本又接受不了。经过使用POLARDB,借助快速弹性的能力,在高峰期临时增长数据库配置和集群规模,与以前的方案相比总体成本降低了70%。

原文连接

相关文章
相关标签/搜索