《设计数据密集型应用》番外1 - Apache Omid介绍

1. Omid是什么

Apache Omid的全称是Optimistically transaction Management In Datastores,也就是数据库的乐观事务管理。它是灵活、高可用和高性能和可扩展的事务框架,帮助MVCC的键值NoSQL数据库实现ACID的事务特性。

当前的实现提供了在Apache HBase的多行数据的事务能力,但Omid的设计足够灵活可以支持其他数据库的实现,只要它们的API可以提供MVCC的特性。

2. 为什么用Omid

事务指的是将对数据库的一组操作整合为一个操作单元,因此所有操作要么全部完成(commited),要么都不生效(aborted)。换句话说,事务不允许有部分操作成功,部分失败,因为数据库的状态将因此不可控。

没有事务的支持,开发者就要承担着保证对数据库的分散操作的原子性,特别是在操作出现失败时,以及由多个客户端发起的并发访问的处理。

为了实现事务,数据库提供了一个特殊的组件,称之为事务管理器。事务管理器的目的是为了保证事务所谓的ACID特性:原子性、一致性、隔离性、可见性。然而,当数据库处理海量数据和成千上万的并发用户时,ACID的特性很难实现,因为海量的数据必须是分区的、分布式和多副本的。这也就是为什么NoSQL的大数据存储最初设计是不支持事务性,像HBase、Dynamo、BigTable、PNUTS和Cassandra都是如此。然而,随着NoSQL的大数据存储在越来越多的工业界的使用,对于这些应用来说事务是必须的。

Omid填补了这个空白,并且在HBase上提供了不需要锁的镜像隔离(snapshot isolation)的事务支持,Omid保证了大数据应用可以在利用NoSQL大数据存储的可扩展性的同时,也可以使用事务处理的并发处理和原子性。

Omid的好处

总结下Omid提供的好处:

  1. Omid提供HBase多行和多表的事务;
  2. Omid是无锁的。基于锁的实现,在某个客户端的事务未完成前,会阻止其他客户端操作,如果一个客户端比较慢,会拖累其他客户端。
  3. Omid提供了镜像隔离(Snapshot Isolation)级别的保证;
  4. Omid不需要修改HBase的代码,所有的事务实现逻辑都在框架内部;
  5. Omid不需要修改HBase的表结构,Omid使用HBase的元数据,特别是单元时间戳,保存每个值在插入、更新和删除时的事务时间戳。这保证了并发读时获取正确的时间戳。
  6. Omid具有良好的性能和可靠性。

3. Omid的架构

Omid的架构图如下:

Omid的架构图

Omid有一个中心化的server,称为Transactional Status Oracle(TSO),它负责监控事务修改的rows和cells,用此检查写-写冲突。

用户的应用通过Transactional Clients(TC)发起,提交或中断事务,并发起和TSO的远程通信,允许对数据库中的数据执行事务操作。

当事务创建时,由Timestamp Oracle(TO)分配一个唯一的起始时间戳。这个时间戳作为事务的识别码,当有其他事务同时在写数据时,TSO用此时间戳来保证镜像隔离(SI)。在冲突检测成功完成之后,TSO分配给该事务一个提交时间戳,并将起始时间戳和提交时间戳写入到Commit Table(CT)中,然后再将响应返回客户端。当接收到响应时,TC为事务中每个写cell的操作分配一个Shadow Cell(SC),保证后续的读操作不需要TSO就可以读到正确的镜像版本。

这里主要的组件功能描述如下:

  • Timestamp Oracle(TO):分配起始和提交时间戳来标用定事务的上下文;
  • Transaction Status Oracle(TSO):Omid架构在server端的核心组件,主要用于解决并发事务的冲突;
  • Commit Table(CT):临时保存每个提交事务的起始时间戳到提交时间戳的映射;
  • Transactional Client(TC):允许客户端应用通过事务管理器标定事务的边界,并通过事务表(Transactional Tables)执行事务的读写操作;
  • Shadow Cells(SC):这些特殊的元数据cells和数据存储中的数据cells同时写,允许Transactional Client不通过Commit Table解决读的版本问题,其中包含了写入数据cell的最后一个事务的边界。

进一步阅读请参考:http://omid.incubator.apache.org/omid-components.html

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349

推荐阅读更多精彩内容

  • Zookeeper用于集群主备切换。 YARN让集群具备更好的扩展性。 Spark没有存储能力。 Spark的Ma...
    Yobhel阅读 7,258评论 0 34
  • 本文由厦门大学计算机系教师林子雨翻译,翻译质量很高,本人只对极少数翻译得不太恰当的地方进行了修改。 【摘要】:Sp...
    Jeffbond阅读 3,928评论 1 42
  • 问题导读: 1.如何构建高并发电商平台架构 2.哈希、B树、倒排、bitmap的作用是什么? 3.作为软件工程师,...
    MaLiang阅读 5,115评论 1 70
  • 高并发平台架构 设计理念 1. 空间换时间 多级缓存,静态化前端页面缓存(HTTP Header中包含Expire...
    AkaTBS阅读 3,017评论 0 13
  • 《六项精进》打卡第91天 姓名:严娜 公司.:宁波万尚进出口有限公司/杭州安简创意设计有限公司 组别:反省二组 【...
    NinaYanWellin阅读 184评论 0 0