表格存储在QCon2017的分享

本文涉及的产品
表格存储 Tablestore,50G 2个月
日志服务 SLS,月写入数据量 50GB 1个月
简介:         在QCon2017的基础设施专场,笔者以表格存储为基础分享了分布式系统设计的几点考虑,主要是扩展性、可用性和性能。每个点都举了一个具体的例子来阐述。这里对这次分享做一次简单的总结。        首先,说到了表格存储产生的背景,大规模、弱关系数据,对灵活schema变动的需求,传统数据库无法很好的满足,

        在QCon2017的基础设施专场,笔者以表格存储为基础分享了分布式系统设计的几点考虑,主要是扩展性、可用性和性能。每个点都举了一个具体的例子来阐述。这里对这次分享做一次简单的总结。

        首先,说到了表格存储产生的背景,大规模、弱关系数据,对灵活schema变动的需求,传统数据库无法很好的满足,NOSQL的出现是一个很好的补充。NOSQL不是为了取代SQL,也无法取代SQL,是已有数据库生态的很好补充。我认为未来会出现更多种类的数据库,面向不同的业务,使用不同的硬件,数据库市场将迎来更多的成员。

        然后介绍了表格存储的功能、生态、架构以及数据模型,有了这些基础才能更好的理解后面的内容。

        在论述扩展能力的时候,笔者举了个例子。HBase在一次分裂之后,需要做Compaction才能继续分裂,Compaction时间可能数个小时,而表格存储支持连续分裂。那么,为什么表格存储要支持连续分裂呢?主要原因在于多租户服务和企业内产品的不同。对于表格存储而言,用户点点鼠标就可以开通,业务访问随时可能大幅上涨,用户不会提前告诉我们,即使告诉了也人力也没那么多。而访问量上涨有很大的可能导致分区内访问热点,这些热点需要系统能够快速的处理,1个分裂成2个,2个分裂成4个...。而在企业内部,业务一般可以预期的,很难出现运维不期望的巨量上升,所以对于HBase而言,连续分裂的必要性就降低了。这个不同,看似技术的不同,实际则是用户不同、产品形态不同带来的的不同选择。

        在论述可用性的时候,特别讲了一个例子,就是谷歌BigTable和开源HBase都采用的在worker层聚合日志以提高性能。这个思路很好理解,就是将多个分区的日志聚合在一起,写入文件系统中,这样就能减少文件系统的IOPS,提高性能。但是,这对可用性是个很大的伤害,因为一旦机器发生failover,意味着日志文件需要被读出来按照分区进行分割,这些分割完的日志文件再被相应的分区replay,然后相应分区才能提供服务。显然,上面这个过程会使得机器failover时候分区不可用的时间变长(想想看谁来分割日志呢?这是否会成为瓶颈?)。如果考虑到全集群重启,或者交换机down导致较多机器失联,那么其对可用性的影响将十分可观。这里是一个可用性和性能的权衡,表格存储在设计之初,是选择了可用性的,也就是每个分区有独立的日志文件,以降低在机器failover场景下不可服务时间。但是这是否意味着性能的下降?是的,但是我们相信可用性优先级更高,而性能总会被解决,后来我们也找到了非常不错的办法,见下。

        上面说到可用性和性能的权衡,表格存储选择了可用性,而放弃了性能。但是性能显然十分重要,于是我们重新思考了这个问题。BigTable和HBase的核心思想是聚合以减少IOPS,从而提高性能;那么聚合是否一定要做在table这一层呢?是否可以下推做到分布式文件系统层?结论当然是可以,而且效果更好,受益方更多。具体架构见附件里面的说明,我们通过将聚合下推到文件系统、RPC层小包聚合、Pipeline传输等大幅改进了性能,在可用性和性能之间取得了很好的平衡。
        继续向下,我们说到了,作为一个平台,如何向用户学习。附件中给出了PK自增列用于消息推送系统的例子,这方面我们写过不少文章,见[2][3]。


[1]. QCon 2017资料:  http://ppt.geekbang.org/qconsh2017 
[2]. 高并发IM架构: https://yq.aliyun.com/articles/66461
[
3]. 打造千万级Feed流系统: https://yq.aliyun.com/articles/224132
[
4]. 演讲PPT下载: http://ppt.geekbang.org/slide/show/1122

相关实践学习
消息队列+Serverless+Tablestore:实现高弹性的电商订单系统
基于消息队列以及函数计算,快速部署一个高弹性的商品订单系统,能够应对抢购场景下的高并发情况。
阿里云表格存储使用教程
表格存储(Table Store)是构建在阿里云飞天分布式系统之上的分布式NoSQL数据存储服务,根据99.99%的高可用以及11个9的数据可靠性的标准设计。表格存储通过数据分片和负载均衡技术,实现数据规模与访问并发上的无缝扩展,提供海量结构化数据的存储和实时访问。 产品详情:https://www.aliyun.com/product/ots
相关文章
|
SQL 存储 监控
水滴筹基于阿里云 EMR StarRocks 实战分享
水滴筹大数据部门的数据开发工程师韩园园老师为大家分享水滴筹基于阿里云EMR StarRocks的实战经验。
6255 3
水滴筹基于阿里云 EMR StarRocks 实战分享
|
4月前
|
存储 SQL 分布式计算
|
存储 SQL NoSQL
表格存储 Tablestore 十年发展总结
这篇文章接下来会先整体介绍下表格存储 Tablestore,之后会分享下在技术层面产品这几年的功能演进、技术架构演进以及稳定性优化相关的工作,以及在业务层面我们定义的核心应用场景和一些典型案例。
66796 7
表格存储 Tablestore 十年发展总结
|
数据挖掘 OLAP
北京 Meetup 邀你来|阿里云 × StarRocks 云上StarRocks极速湖仓
4月19日(周三)下午,水滴筹、猿辅导、阿里云 EMR 团队和 StarRocks 社区的技术专家,将针对开源 OLAP 技术架构、 StarRocks 产品硬核技术及 EMR StarRocks 实战经验等一系列超干货内容,为大家带来诚意满满的技术盛宴。
832 0
北京 Meetup 邀你来|阿里云 × StarRocks  云上StarRocks极速湖仓
|
存储 搜索推荐 NoSQL
带你读《云存储应用白皮书》之37:3. 表格存储在推荐系统中的应用
带你读《云存储应用白皮书》之37:3. 表格存储在推荐系统中的应用
191 0
|
消息中间件 分布式计算 Kafka
《MaxCompute技术公开课第四季 之 如何将Kafka数据同步至MaxCompute》电子版地址
MaxCompute技术公开课第四季 之 如何将Kafka数据同步至MaxCompute
98 0
《MaxCompute技术公开课第四季 之 如何将Kafka数据同步至MaxCompute》电子版地址
|
分布式计算 运维 数据可视化
阿里专家干货20讲!玩转一站式实时数仓Hologres训练营(限量免费)
Hologres年度发布,训练营实操演练,技能掌握更进一步
阿里专家干货20讲!玩转一站式实时数仓Hologres训练营(限量免费)
|
存储 SQL 人工智能
《玩转 Tablestore 入门与实战》重磅来袭! 架构、原理及场景全方面解读
表格存储 Tablestore 是阿里云自研的面向海量结构化和半结构化数据的 Serverless 多模型数据存储,采用与 Google Bigtable 类似的宽表模型,天然的分布式架构,能支撑高吞吐的数据写入以及 PB 级数据存储。 表格存储 Tablestore于 2009 年阿里云成立之初即立项研发,基于底层飞天平台从零开始构建,在 2014 年正式商业化面向公有云提供服务。历经 10 年多的打磨,目前已在阿里巴巴集团、阿里云公共云以及专有云内得到广泛应用,涵盖电商、金融风控、物联网、人工智能、大数据、社交媒体等不同业务领域,支撑钉钉、优酷、手淘、IoT、计算平台等多个内部核心 BU
17270 0
《玩转 Tablestore 入门与实战》重磅来袭! 架构、原理及场景全方面解读
|
存储 SQL 人工智能
干货满满!【数据湖 JindoFS+OSS 实操干货36讲】 直播预告来袭!
扫描海报上的钉钉群二维码入群,线上观看直播,每周二16:00 准时开播!
干货满满!【数据湖 JindoFS+OSS 实操干货36讲】 直播预告来袭!
|
存储 分布式计算 DataWorks
玩物得志:效率为王 基于DataWorks+MaxCompute+Hologres 构建大数据平台
为了支撑业务的快速发展,玩物得志极少自己造轮子,会大量采用云平台提供的 SaaS、PaaS 服务。比如大数据体系是在阿里云 MaxCompute+DataWorks 框架体系上建设起来。使用了其核心存储、计算等组件,上层的可视化以及业务查询部分,在使用过程中也会有大量的定制化需求,玩物得志在开源方案的基础上进行了一些二次开发。
14990 0
玩物得志:效率为王 基于DataWorks+MaxCompute+Hologres 构建大数据平台