表格存储在QCon2017的分享

        在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架构:
[3]. 打造千万级Feed流系统:
[4]. 演讲PPT下载:http://ppt.geekbang.org/slide/show/1122

时间: 2025-01-02 08:26:28

表格存储在QCon2017的分享的相关文章

阿里云表格存储技术分享

  下面是之前在一个技术群里面分享的阿里云表格存储的内容,因为时间因素,只对[技术分享附件]中的少部分内容进行了分享,下面是分享内容,欢迎下载附件并就里面的内容深入交流.   接下来的内容分为几个方面,第一是背景,就是为什么要做这个东西:第二是几个使用场景,让大家有个感性的认识:第三是系统架构以及该架构如何做到高性能.高可靠.高可用:第四是一些工程经验:我也比较希望大家看看最后的附录中我对垂直和分层两大设计体系的思考,这部分我们可以做更深入的交流.     好,下面正式开始.先介绍为什么要做,大

表格存储技术方案实践及客户案例分享

表格存储是一款2014年10月份正式商业化的NoSQL数据存储服务,在商业化之前,早在2010年就在阿里云内部开始使用,云邮箱和云OS都是表格存储最早的一批用户.到目前,无论是在阿里集团内部还是在公共云环境上,在移动社交.金融风控.电商物流.存储备份.物联网IoT.日志监控.大数据分析报表等领域都有着广泛的用户基础与成熟的实践方案. 为了方便更多的用户了解和使用表格存储,该帖子会将最近非常有参考意义的方案设计.技术实践及相关客户分享的博客文章汇总到这里,大家可以在这里快速查找到和自己业务场景相近

10.11杭州Clouder lab 十分钟搭建共享应用1:函数计算及表格存储操作说明

欢迎大家来到无服务器(Serverless)编程的阿里云clouder lab实验课参与学习. 这几年,共享经济越来越火,大到共享汽车.共享电动车,小到共享雨伞,共享充电宝.人人参与,人人收益是共享经济最大的特点,共享经济提高了社会资源的利用率,也大大方便了我们的生活. 也正式由于人人参与的特点,共享经济给底层的系统架构带来了非常大的挑战.以目前主流的共享单车为例,单车数量达到千万之巨,日订单数以十亿百亿计,访问流量的波峰波谷非常明显,而传统的架构方案很难满足这种业务增长迅速,访问波峰波谷明显的

表格存储在互联网风控和金融数据服务上的应用实践

引言 当前,第三方支付.P2P网贷.宝宝类理财.众筹等金融产品层出不穷,随着金融知识的普及,全民参与又进一步促进了互联网的发展.海量交易数据,实时在线访问,业务快速的迭代变化都对传统金融解决方案提出了更高的要求,而互联网金融本身的开放性,低门槛,征信信息的缺乏,又容易发生各类风险问题,这有给传统金融解决方案带来的新的挑战.借助云计算.大数据.搜索引擎等新一代高新技术,给互联网金融带来了新的机会. 新兴的互联网金融数据主要有以下几个特点: 海量数据 由于参与的人数众多且活跃度较高,日交易单数通常能

如何使用表格存储实现网盘文件的极速秒传

目前不少云备份.网盘等产品都提供了秒传的功能,一方面能够显著的提高了用户的使用体验,另外一方面由于避免了不必要的文件传输,又有效的降低了存储成本与带宽成本. 而实现文件的"秒传",只需要通过客户端从文件中获取一个特征值,比如常用的 MD5 值,然后在服务器上保存所有文件的特征值进行比较,如果有重复的,就无需再上传数据,只需要复制一份文件的存储路径即可.进一步考虑到文件的分享.保存以及后期的清理,我们将文件的特征值与当前引用计数存储在元数据 DB 中. "秒传"机制看

表格存储的Java SDK优化经验

摘要 本文介绍表格存储服务在优化Java SDK性能时的一些经验,作为一个支持海量数据.高并发访问的NoSQL服务,SDK的性能也显得尤为重要.SDK优化这项工作很久之前就已完成,现在将其中的一些经验再在公众号中与大家进行分享. 问题背景 用户通过Java SDK来访问表格存储,在SDK内部也是有开销的,在高并发的场景下这些开销尤其突出.如果SDK的性能很差,用户为了达到更高的QPS,可能就需要使用更高性能的机器或者更多的机器,从而增加用户使用表格存储的成本.我们对SDK进行性能分析,也发现了很

表格存储服务在社交应用场景的实践

阿里云的表格存储服务(http://www.aliyun.com/product/ots)是一款面向PB级结构化/半结构化数据存储和百万级高并发读写访问的NoSQL数据库服务,在移动社交场景中有着非常广发的应用,如今非常火热的钉钉也将后台的消息推送和存储功能从MySQL迁移到表格存储上,以获得更加优秀的高并发和规模扩展能力:同时也有非常多的创业企业将企业自身针对客户的消息推送能力基于表格存储来构建.本文将详细介绍表格存储在移动社交中的技术实践.本文的主要内容已经在2016年云栖大会深圳场的存储论

基于表格存储的高性能监控数据存储计算方案

概述         随着软件架构的愈发复杂,了解系统现状.调查问题的困难度也增加了很多.此时,一套完善的监控方案能够让开发和运维工程师快速排查问题,更好的维护系统的稳定性.        开源监控方案中,Zabbix.Nagios都是不错的监控软件,可以针对数十万的设备监控数百万的指标,强大的功能让开发和运维都很赞叹.但是,网上经常看到的抱怨是其写入和存储能力的不足,以Zabbix为例,文章[1]提到使用NoSQL方案(HBase.Cassandra.Riak)比利用传统RDBMS方案(MyS

表格存储实时数据流:Stream的技术揭秘和应用场景

在2017云栖大会-成都峰会上阿里云存储服务专家周赵锋做了题为<表格存储实时数据流:Stream的技术揭秘和应用场景>的分享.面对应用开发的新挑战和数据库新需求,基于共享存储的高性能.低成本.易扩展.全托管的表格存储能更好支撑互联网和物联网数据的高效计算与分析,并从特性.数据模型和高可用架构方面对表格存储进行简介.表格存储应用场景有即时通讯.安全风控.时序数据,使用表格存储的应用场景可以挖掘数据高附加值,实现存储对接计算.