皮皮(Q4): OceanBase第一个应用是收藏夹。最近,听说支付宝交易也用到了OceanBase。能否结合阿里的应用谈谈OceanBase的优势。

杨传辉(A4):相比传统的关系数据库,谈及OceanBase的最大亮点,当属可自动扩展的特点,它不仅仅可以扩展到一个数据中心,乃至同城,在未来,OceanBase能成为跨地域多数据中心的全球数据库。当然,OceanBase还有一些特性,比如强一致性,能够自动容忍一台服务器甚至是整个数据中心故障,而不会丢失一条记录。值得强调的是,支付宝交易之所以会选择OceanBase而不是开源的MySQL,正是因为只有OceanBase能够做到完全不丢数据。

另外,随着OceanBase不断优化,OceanBase用武之地将会越来越多,比如支付宝交易的性能已经超越了所有的开源数据库,以后还会超越商业数据库。这就是自主研发的优势,等到渡过了积累期,相信OceanBase的后劲会很足。

皮皮(Q5): 我们知道,很多电商面对双十一带来的压力,都会在双11前对数据库集群进行扩容,相信阿里也不例外。我们常见的扩容有两种,一种是读写分离,通过增加备库提供读服务来提升集群的能力;另一种是水平扩容,将数据重新分布,拆分到更多台服务器上,达到扩容数据库集群的目的。能否谈谈OceanBase是如何扩容的?

杨传辉(A5):双十一大促这样的应用场景很有中国特色,技术人员都知道,整个后台系统只有数据库容量最难提升。传统数据库的运维人员需要花费大量的时间来做数据库扩容,包括读写分离、垂直拆分、水平拆分等等。不过,对于OceanBase运维人员来说,扩容是一件非常淡定的事情,我们唯一要做的事情就是加入更多的服务器。加入服务器,容量就提升了,OceanBase系统内部可以实现自动扩容,解决了我们的燃眉之急。

<IGNORE_JS_OP>

2014-11-25 15:01 上传

下载附件 (81.94 KB)

 

皮皮(Q6):在分布式系统中存在着著名的“短板理论”,一个集群如果出现了负载不均衡问题,那么负载最大的机器往往将成为影响系统整体表现的瓶颈和短板。那么OceanBase在阿里双十一的大战中是如何做到负载均衡的呢?

杨传辉(A6):OceanBase内部会自动把数据切分为一个个比较小的分片,每台机器服务若干个分片,当某台服务器的分片成为热点时,会自动触发迁移操作,将分片从负载较高的服务器迁移出去,这样,就避免了“木桶效应”。这也是OceanBase的一个优势,无论双十一之前热点怎么变,OceanBase都可以很快把热点数据均衡到整个集群,而不是因为一两台服务器把整个集群压垮了。

皮皮(Q7):在分布式系统中存在着著名的“CAP理论”,很多NOSQL系统都会为了提升性能而牺牲一致性。OceanBase是如何做的呢?

杨传辉(A7):确实是这样,很多NOSQL系统为了实现简便,牺牲了一致性来提升性能。然而,对于电商、支付这样的业务,根本没法使用弱一致系统。OceanBase是真正的分布式关系数据库,不仅仅支持分布式,还支持SQL、事务、并发控制这样的关系数据库特性,用户使用起来和MySQL没有任何差别。

和MySQL的不同点在于,MySQL主备同步是有丢数据风险的,而OceanBase通过Paxos选举协议实现强一致性。无论是一台服务器,还是数据中心整体故障,OceanBase都能够自动恢复,而且做到完全不丢数据。OceanBase的这种做法和Google、Microsoft以及Amazon云存储系统的底层原理都是共通的。

皮皮(Q8):在双十一中,我们经常会遇到比如热点商品更新库存,秒杀,红包等场景。当同时大量更新数据库中的同一行时,就会产生大量的锁等待,数据库的性能就会急剧下降。那OceanBase是如何做到并发控制的呢?

杨传辉(A8):热点行是数据库里面的一个经典难题。热点应用的场景很多,比如双十一抢购小米手机。首先,OceanBase的事务引擎面向内存设计的,它的特点就是快,而且避免了传统数据库的写入放大问题,这样,OceanBase的锁等待天生就要更少。另外,OceanBase还提出并第一个实现了提前解锁、排队等待等优化思想,这些思想后来也应用到集团MySQL数据库的patch中,成为阿里双十一应对热点问题的标配。

最新文章

  1. 关于Jquery中ajax介绍
  2. ssh注解整合
  3. beanstalkd----协议
  4. String和包装类Integer\Double\Long\Float\Character 都是final类型
  5. istView的项移除
  6. 第三章:Javascript类型、值和变量。
  7. sssssssss
  8. InLineHookSSDT
  9. SDUT2191Calendar
  10. 11-UIKit(Storyboard、View的基本概念、绘制图形、UIBezierPath)
  11. 一加3T 误清除data 恢复数据
  12. [Swift]LeetCode922.按奇偶排序数组 II | Sort Array By Parity II
  13. jenkins+gitlab配置
  14. IIS 一键安装及卸载
  15. labview使用了报表模块,在生成exe时需要添加以下内容,否则打包后不能开启excel功能
  16. MVC5 Controller构造方法获取User为空解决方法
  17. 洛谷P4774 屠龙勇士
  18. Java EE之Form的get与post方法
  19. spring boot配置druid数据源和监控配置
  20. 关于VUE调用父实例($parent) 根实例 中的数据和方法

热门文章

  1. HDU 3641 Pseudoprime numbers(快速幂)
  2. 史上最全的Angular.js 的学习资源
  3. springcloud(七) feign + Hystrix 整合 、
  4. C++异常处理基本句法测试
  5. Rhythmk 学习 Hibernate 09 - Hibernate HQL
  6. leetcode507
  7. XML解析的二种方法之Sax解析
  8. node.js中实现同步操作的3种实现方法
  9. hive 建表导入数据
  10. 最全最详细的用JS过滤Emoji表情的输入