淘宝Oceanbase云存储系统实践

首度公开!OceanBase存储系统架构的演进历程及工程实践 随着用户数据量的不断增长,基于传统共享存储的纵向扩展能力渐渐变得力不从心,分布式存储成为应对用户海量数据的标配。 作为一位架构师,在设计系统的分布式存储架构时,需要关注哪些方面呢?或者我们换句话说,对于客户来说,一个理想中的分布式存储产品应该具有哪些特性呢? 我们认为完善的分布式存储架构应该关注这五个方面: 扩展性:扩展性可谓是分布式存储有别于单机存储的重要特征,分布式存储的扩展性远远好于... 阅读详情

通俗地讲,云计算就是把基础设施以服务的形式打包对外销售,它是一种商业模式,而其中的云存储是技术难点。可以从两个维度分析云存储系统的特性:功能和可扩展性,这是一个“鱼和熊掌”不容易兼得的问题。不同的数据规模,不同的事务和一致性要求,不同的系统故障容忍度,都可能导致不同的存储系统设计。国外的互联网巨头Amazon、Google、Microsoft、Yahoo都有各自的云存储系统,国内的淘宝也研发了自己的云存储系统Oceanbase,并开始应用到联机事务处理OLTP(On-line Transaction Processing)和联机分析处理OLAP(On-line Analytical Processing)业务。

杨传辉

作者杨传辉,花名日照,淘宝存储系统专家,热衷于分布式存储和计算系统设计,对分布式系统理论和工程实践有比较深厚的理解。之前在百度作为核心成员主导或参与MapReduce、BigTable和分布式消息队列等底层基础设施架构工作。

云存储系统数据结构

为了保证存储系统的可靠性,需要将数据复制为多份。当数据规模增加时,我们可能会对传统的数据库分库分表以水平扩展,很多企业还开发了各自的数据库中间层以屏蔽分库分表规则。然而,在传统的分库/分表架构下,每一份数据只能为一组Master-Slave节点服务,这就导致同一组机器节点存放了完全相同的数据,当其中某个节点发生故障时,只能通过所在机器组中的节点进行故障恢复,这样的系统称为同构系统。

云存储系统一般指异构系统,每份数据可以被动态分配到集群中的任意一个节点,当某个节点发生故障时,可以将故障节点原有服务动态迁移到集群中的任何一台机器。只有实现系统异构才能发挥分布式集群的规模优势,减少集群运维成本,适应云存储系统数据量快速增长的需求。

数据结构决定了云存储系统的功能,云存储系统的数据结构主要有两种:分布式Hash表和分布式B+树,如图1所示。分布式Hash表通过比如一致性Hash的方式将数据分布到集群中的不同节点,数据随机分布,不支持范围查询;而分布式B+树的数据连续存放,支持范围查询,但是需要支持分裂和合并,实现相对较为复杂。

图1 云存储系统分类图

图1 云存储系统分类图

常见的Key-Value系统的数据结构一般为分布式Hash表,只支持基本的Put、Get和Delete操作,比如Amazon的Dynamo和S3系统。而Amazon Simpledb按照domain进行数据划分,规定同一个domain数据量不能超过10GB,从而可以存放到一个数据节点,用户只允许在同一个domain内部执行范围查询操作。Amazon的云存储系统看起来不完美,但相当实用。

Google的系统设计之初就强调可扩展性。从最初的GFS到BigTable,再到后来的Megastore、Percolator,Google先将系统的可扩展性发挥到极致,以后再逐步加入分布式事务、SQL支持等功能。这样的设计得益于Google强大的工程师团队和公司一直以来崇尚通用系统的文化。Google的云存储分为两层:分布式文件系统GFS和分布式数据库系统BigTable,GFS是一个带有追加功能的分布式文件系统,BigTable将事务的提交日志追加到GFS中做持久化。数据在BigTable内连续存储,逻辑上构成一棵分布式B+树,Megastore、Percolator又在BigTable的基础上加入分布式事务、索引、SQL支持等功能。Google的系统设计比较贵族化,可以远观,但模仿前请三思,比如将系统分成多层可能会增加用户操作的延时,对工程师的设计编码能力提出了更高的要求。

Microsoft SQL Azure是一个传统数据库厂商在云存储系统设计上给出的答案。当数据量增长时,必然要求牺牲部分功能来换取可扩展性,这对于Microsoft是不愿意看到的。Microsoft直接在原有的关系型数据库SQL Server上进行分布式扩展,尽可能多地支持SQL功能,其功能非常丰富,但系统内部不支持SQL Azure实例的分裂和合并。因此,SQL Azure内部也限制了单个SQL Azure实例允许的最大数据量,如Business Edition的最大数据量不超过50GB。相比Google的系统,Microsoft系统的扩展性较弱,但功能较强。

云存储系统的难点在于状态数据的迁移和持久化,状态数据也就是系统的事务提交日志。Google BigTable通过分布式文件系统GFS持久化提交日志,Microsoft SQL Azure直接将提交日志通过网络复制到数据的多个副本,而PNUTS通过Yahoo!内部的分布式消息中间件Yahoo! Message Broker持久化提交日志。Yahoo!没有对外提供云存储服务,但这样的设计可扩展性也是相当不错的。

淘宝Oceanbase架构设计

淘宝Oceanbase是从2010年5月开始研发的,其定位是解决淘宝内部在线业务的云存储问题。我们在设计系统时,总是考虑现在及今后一段时间的需求。互联网业务大致可以分为OLTP和OLAP两类,对在线存储的需求简单归纳如下。

  • OLTP:今后数据规模为千亿级,数据量百TB,要求几十万QPS和几万TPS。
  • OLAP:支持千万级记录的数据集上进行实时计算。
  • 功能:支持范围查询,支持跨行跨表事务。
  • 其他:5个9的可用性、自动故障处理、自动扩容等。

OLTP和OLAP业务对性能的要求使我们必须采用分布式方案。另外,淘宝的业务发展迅猛,传统的分库/分表方法带来的扩容及运维成本太高,必须构建异构的云存储系统。通过进一步分析在线业务,我们发现互联网在线存储业务有一个特点:数据量虽然很大,但新增数据量比较小,每天新增数据量基本在1TB之内。此外,淘宝的业务面临一些其他挑战,比如需要高效支持跨行跨表事务,需要支持两张几亿到几十亿条记录的大表进行联表操作。淘宝的海量数据以及复杂的功能需求对存储系统的设计提出了新的挑战,关系型数据库在数据量上有点儿力不从心,而云存储系统又不能高效地支持复杂的功能要求。因此,需要融合关系型数据库的功能和云存储系统的可扩展性这两个优点。

如何借鉴已有技术满足淘宝未来一段时间内的云存储需求?如果直接模仿国外的互联网巨头,比如模仿GFS + BigTable,淘宝的团队确实有一定的经验。然而这样的系统在两年之内很难稳定,并且不能满足跨行跨表事务等复杂的功能需求。既然在线业务新增数据量比较小,那是否可以把最新修改的数据和以前的数据分离呢?

答案是肯定的。淘宝Oceanbase将数据分成动态数据和静态数据两部分:动态数据的数据量较小,侧重TPS和QPS,采用集中式的方法存放到单个节点的高品质存储介质,如内存和SSD;静态数据的数据量很大,侧重存储容量,采用分布式的方法将数据分布到多台普通PC服务器的磁盘或者SSD。由于动态数据的存储介质成本较高,需要不断地将动态数据合并到静态数据中,从而分布到多台机器以实现分布式存储。

淘宝Oceanbase系统架构大致如图2所示。从图2可以看出,系统有以下几个主要模块。

图2 Oceanbase架构图

图2 Oceanbase架构图

  • RootServer:负责数据定位、机器管理、负载均衡、全局表Schema信息管理等。
  • UpdateServer:负责存储动态数据,存储介质为内存和SSD。
  • ChunkServer:负责存储静态数据,数据存储3份,存储介质为磁盘或者SSD。
  • Client:Oceanbase提供的胖客户端。

写事务只操作UpdateServer,读事务需要同时读取ChunkServer和UpdateServer。某些操作,比如OLAP分析型操作可能需要涉及多个ChunkServer上的数据,这时将引入一个新的MergeServer模块将请求拆分到不同的ChunkServer,合并每个ChunkServer的返回结果后执行排序、分组、分页等操作。静态数据在ChunkServer中保存三份,UpdateServer通过Linux HA的方式进行双机热备以保证可靠性。RootServer的访问压力很小,一般可以和UpdateServer部署在相同节点上,并采用相同的Linux HA方式。Oceanbase的UpdateServer在同一个IDC机房采用实时同步的方式保证强一致性,这意味着写事务只有等到主机和备机都操作成功后才返回客户端。Oceanbase支持跨IDC机房的异步准实时热备,多个机房之间的数据延迟为秒级。

Oceanbase的静态数据和BigTable类似,数据被分为几十到几百MB不等的子表,每个子表的磁盘存储格式为SSTable,通过bloom filter、block cache、key value cache等方式进行优化。SSTable支持根据column group按列存储,从而高效地支持OLAP分析。动态数据采用copy-on-write的方式实现了单机内存中的B+树,在单写多读的应用场景下不需要加锁。

Oceanbase静态数据构成一棵分布式B+树,动态数据为单机B+树。与线下MapReduce批处理应用不同,在线存储应用的更新量一般比较小,动态数据服务器不会成为性能瓶颈。这也就意味着,淘宝Oceanbase用一种更为简便的方式在底层实现了和其他互联网巨头类似的B+树数据结构,并且能够高效地支持跨行跨表事务。当然,当数据量增长到万亿级或者数据更新更快时,需要考虑将动态数据服务器的方案由集中式修改为分布式。我们也考虑过多UpdateServer方案的设计,但由于短期内看不到明确的需求,暂时没有实现,目前我们认为可以通过硬件的方法,比如万兆网卡、更好的CPU、更大的内存和SSD来解决。

Oceanbase还实现了一些分布式系统中常见的特性,比如自动负载均衡、在线修改Schema、内置压缩解压缩等。另外,Oceanbase系统里面没有随机写操作,因此天然适应SSD存储介质,很好地弥补了磁盘的IOPS不足这个问题。

Oceanbase应用效果和经验

Oceanbase首先应用在淘宝收藏夹并取得了明显的效果。淘宝收藏夹最初采用MySQL分库/分表的方式实现,通过使用Oceanbase,机器数由原来的16台主加上16台备共32台减少到12台静态数据服务器加上2台动态数据服务器,大大节省了机器资源。另外,目前应用的很多问题在Oceanbase中是通过更好的架构来解决,单机层面基本没做优化,相信后续还有很大的提升空间。在这过程中,我们也积累了一些经验教训。

  • 选择合适的技术。云存储听起来比较神秘,但实际上,对于大多数企业,需要设计好系统可扩展性发展的路线图,当数据规模比较小,可以采用传统的分库分表的方式构建同构系统;当数据规模逐步增加时,可以考虑构建符合企业需求的异构系统。
  • 细节决定成败。云存储更多地是一个工程问题,代码质量、优化细节对系统的表现影响至关重要,淘宝Oceanbase的大多数代码都被两个以上的工程师Review,我们也在减少Cache锁粒度、减少上下文切换、减少内存分配和内存拷贝等方面做了很多细粒度的工作。

展望

Oceanbase目前的主要工作是应用推广,根据应用的需求来逐步完善Oceanbase系统,实现互联网数据库的构想。我们已经开始和淘宝的业务团队开展了千万级数据秒级实时分析的OLAP项目。另外,Oceanbase还在考虑整合分布式Blob存储系统。随着应用推广的深入和Oceanbase系统的优化,希望能在合适的时间进行数据库新基准TPC-E的测试。

另外一个振奋人心的消息是:Oceanbase将在合适的时间点开源。相信通过业界同仁一起努力,一定能够将云存储这个问题解决好!

RK3128机顶盒通刷固件全攻略:从原理到救砖的硬核指南 智能电视盒子作为客厅娱乐的普及设备,其核心SoC与固件决定了流畅度与功能边界。针对RK3128等老款芯片,通刷固件成为挖掘存量设备价值的关键手段。固件本质是引导加载器、内核、设备树与系统分区的集合,通刷利用同SoC平台的内核通用性,通过调整DTS和驱动实现跨机型适配。理解分区结构与烧录原理,不仅能安全刷机,还能通过精简预装、优化内存策略显著提升性能。在实际应用中,用户可借助U盘强刷、RKDevTool短接或TTL串口恢复变砖设备,让机顶盒重获新生,甚至改造为下载机或Kodi播放器。掌握这些方法,老盒子也能焕 阅读详情

相关推荐

淘宝千亿级数据解决方案.高并发数据存储解决

淘宝千亿级数据解决方案.高并发数据存储解决

淘宝分布式文件系统存储引擎(一)

文件系统 -一种把数据组织成文件和目录的存储方式,提供了基于文件的存取接口,并通过文件权限控制访问。扇区 - 硬盘的最小存储存储单位(Sector)。一般每个扇区储存512字节(相当于0.5KB) 磁盘的每一面被分为很多条磁道,即表面上的一些同心圆,越接近中心,圆就越小。 而每一个磁道又按512个字节为单位划分为等分,叫做扇区块 - 文件存取的最小单位。"块"的大小,最常见的是4KB,即连续八个 sector组成一个 block。一个块通常是八个扇区,上图只画了四个上图中可以通过stat命令查看创建的de

qq_51654808的博客 480

云存储在淘宝网的实际应用—详解TFS

分布式文件系统在电子交易网站中会有广泛的用途,例如淘宝网,现在的交易额已经超过了600亿/每天,这是一个什么概念,香港一天的消费品市场也就600亿,也就是说一个淘宝已经超过香港了,而要达到这么大的交易量,交易的商业是上百亿件的,这样对商品图片的访问量就会很大。日常照片分享往往集中在几个有限的亲朋好友之间,访问量不会特别高,而淘宝网商铺中的商品照片,尤其是热门商品,图片的访问流量其实是非常大的。而且对于卖家来说,图片远胜于文字描述,因此卖家也格外看重图片的显示质量、上传时间、访问速度等等问题。根据淘宝网的流量分析,整个淘宝网流量中,图片的访问流量会占到90%以上,而主站的网页则占到不到10%。

揭秘淘宝286亿海量图片存储与处理架构

http://news.cnblogs.com/n/73189/

lalala003的专栏 740

【物联网】探索NE555:一款经典的集成电路(超详细)

NE555是一种集成电路,其内部结构包括比较器、RS触发器、电压比较器和输出级三个主要功能模块,外部引脚则提供了与其他电路元件进行连接的接口。NE555的设计目的是为了提供一种简单方便的定时器解决方案,它广泛应用于模拟和数字电路中。NE555作为一款经典的集成电路,具备设计简单、易于使用和稳定可靠的特点,在电子领域发展了广泛的应用。从单稳态模式到多稳态模式,再到振荡器模式,NE555可以满足不同的需求,并且可以与其他电路元件灵活组合,扩展其功能。然而,需要注意的是NE555也有一些限制。

Goforyouqp的博客 6万+

SpringBoot 中 @RequestMapping 及衍生注解的全面解析与实践

本文全面解析Spring Boot中@RequestMapping及其衍生注解的使用,涵盖核心功能、HTTP方法特定注解(@GetMapping/@PostMapping等)、属性详解(路径/参数/头信息等)以及路径变量处理。文章详细介绍了注解的组合使用、继承特性、版本控制策略等高级应用,并针对405/404等常见错误提供解决方案。通过学习这些注解的规范用法,开发者能够构建符合RESTful风格的API接口,提升代码可读性和可维护性。建议优先使用HTTP方法特定注解,合理规划URL结构,并注意避免路径冲突。

Java&AI小吕布的博客 2037

揭秘淘宝286亿海量图片存储与处理架构,海量小文件存储的解决方案

8月27日下午,在IT168系统架构师大会存储与系统架构分论坛上,淘宝网技术委员会主席,淘宝网核心工程师章文嵩向我们详细介绍了淘宝网图片处理与存储系统的架构。章文嵩博士的演讲日程包括了淘宝的整个系统架构、淘宝图片存储系统架构,淘宝网独立开发的TFS集群文件系统,前端CDN系统以及淘宝网在节能服务器方面的应用和探索。 本文侧重介绍淘宝网后台的图片存储系统架构、包括TFS

hzcyclone的专栏 1万+

退火朗之万动力学采样

退火朗之万动力学采样(Simulated Annealing Langevin Dynamics Sampling)结合了退火技术和朗之万动力学,是一种用于分子模拟和统计物理中的计算方法。这种方法可以帮助系统从局部最小值中逃逸,以找到全局最小值或进行有效的配置空间探索。

weixin_39699362的博客 1947

淘宝杨志丰:OceanBase--淘宝结构化大数据解决之道

 淘宝杨志丰:OceanBase--淘宝结构化大数据解决之道 时至今日,“Big data”(大数据)时代的来临已经毋庸置疑,尤其是在电信、金融等行业,几乎已经到了“数据就是业务本身”的地步。这种趋势已经让很多相信数据之力量的企业做出改变。恰逢此时,为了让更多的人了解和使用分析大数据,优快云独家承办的大数据技术大会于今日在北京中旅大厦召开。本次大会汇集Hadoop、NoSQL、数

周红伟讲AI 1636

Abaqus 单元与全局刚度矩阵导出实战指南:从INP修改到结果解析

本文提供了Abaqus中导出单元刚度矩阵和全局刚度矩阵的完整实战指南。通过详细步骤讲解INP文件修改、关键指令插入及结果文件解析,帮助工程师、研究人员和二次开发者深入理解有限元软件内核,实现理论验证、二次开发与深度问题调试。

k8s6orchestrator的博客 898

5分钟搞定CST周期性结构仿真:共面波导色散曲线快速生成技巧

本文提供了一套在CST Studio Suite中快速仿真周期性结构并生成色散曲线的标准化流程。针对共面波导设计,重点解析了周期性边界条件的核心设置、本征模求解器(JDM算法)的优化技巧,以及通过参数扫描与后处理模板实现自动化,旨在帮助射频与微波工程师在5分钟内高效完成关键性能验证。

blue的专栏 1246

[Hadoop in China 2011] 淘宝OceanBase打造结构化NoSQL数据库

http://tech.it168.com/a2011/1204/1283/000001283214.shtml 在今天下午进行的NoSQL系统及应用分论坛中,来自淘宝的核心系统存储组技术专家杨传辉(淘宝花名:日照)发表主题演讲“OceanBase——结构化数据海量存储系统”,介绍了淘宝OceanBase的架构、应用及其后续发展。 ▲淘宝核心系统存储组技术专家杨传辉   据杨传辉介绍,淘宝的...

weixin_34148340的博客 329

TMS320C6678开发笔记1-6---C6678单核烧写程序

第6节 单核烧写加载程序 6.1节 TI参考文档 参考文档:《KeystoneI Bootloader Resources and FAQ》讲的非常好,建议一定要看 https://processors.wiki.ti.com/index.php/KeystoneI_Bootloader_Resources_and_FAQ#Direct_Boot_Examples_.28without_IBL.29 里面有三个工程: C6678 EVM SPI boot example C6657 EVM ..

kunkliu的博客 5692

淘宝的OceanBase

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34029680的博客 153

北斗导航 | SPP、RTK、RTD、PPP-RTK、PPP算法原理,公式及完整matlab代码

开发参考:SPP适合入门学习GNSS定位原理和最小二乘。RTK是工程高精度定位主流方案,但依赖基站。PPP适合无基站区域的广域高精度应用。PPP-RTK是融合两者优点的新一代技术,但系统复杂度最高。· 代码资源:raPPPid(VieVS PPP)是功能完整的MATLAB开源PPP工具箱,支持多系统PPP-AR。MATLAB GPS Toolbox 提供从SPP到PPP的完整功能实现。· 实际应用:农业自动驾驶、无人机航测通常使用网络RTK;大地测量、地壳形变监测常采用PPP事后处理;

尘世冰封的专栏 822

动力学约束下的运动规划算法——Kinodynamic RRT*算法

动力学约束下的运动规划算法——Kinodynamic RRT*算法

慕羽★的博客 6748

淘宝OceanBase系统负载均衡案例

Heroku因“随机调度+Rails单线程处理导致延迟增加的负载均衡失败”的案例之后,我们在思考:在负载均衡测试时发现问题并妥善解决的成功经验有没有?于是,挖掘出“淘宝在双十一压测OB时发现存在严重的随机访问导致负载不均问题,并通过加权算法妥善解决”的成功案例,也就是本文。 编者按: 在优快云云计算频道日前所做的文章《响应高达6秒 用户揭露Heroku私自修改路由

Java海洋 2457

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

2019淘宝:OceanBase分布式系统负载均衡案例分享

摘要:Heroku的问题让我们意识到,在负载均衡测试时发现问题并妥善解决的成功经验有没有?于是,挖掘出“淘宝在双十一压测OB时发现存在严重的随机访问导致负载不均问题,并通过加权算法妥善解决”的成功案例,也就是本文。 在优快云云计算频道日前所做的文章《响应高达6秒 用户揭露Heroku私自修改路由造成高支出》中,网友们认为这是“因随机调度+Rails的单线程处理导致延迟增加的负载均衡失败的案例”。...

353

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

淘宝OceanBase架构笔记

  2011-06-17 原文:http://blog.solrex.org/articles/oceanbase-architecture-note.html   OceanBase架构图(引自 rdc.taobao.com)   OceanBase 是淘宝研发的一套分布式 NoSQL 数据库系统。具体它是什么、怎样实现的,可以参考李震老师(花名楚材)的《Ocea...

SAN_YUN的专栏 417

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

【行业参考】大数据背景下的淘宝核心数据库建设与OceanBase技术探讨

声明:本文为转载(信息来源:三星应用社区-优快云),文章标题为本博自拟,与来源无关。本文仅作参考,如有版权问题,请与博主联系删除。请勿转载本文,因转载导致的版权纠纷,与本博无关。时至今日,“Big data”(大数据)时代的来临已经毋庸置疑,尤其是在电信、金融等行业,几乎已经到了“数据就是业务本身”的地步。这种趋势已经让很多相信数据之力量的企业做出改变。恰逢此时,为了让更多的人了解和使用分析大数

TechRunner 1946
上一篇: FUSE简介
下一篇: MapReduce Hold不住?
peter_cloud
博客等级 码龄15年 24粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值