一款低延迟的分布式数据库同步系统--databus
每次看到马路对面摩托罗拉的大牌子,都想起谷歌125亿美元收购摩托罗拉移动,后来又以29亿美元卖给联想的事情。谷歌所做的决策都比较考虑长远利益,在这串交易中,谷歌获得了摩托罗拉最有价值的几千项专利,稳健了Android的生态。谷歌曾经在美国一个地区占用巨大的面积建立了太阳能发电站,人称“烤鸟”项目。因为鸟儿从此地飞过会因为太热而从天上掉下来变成熟鸟。而产生的电能仅够一个小村庄使用。但是正是这种愿意去尝试才推动了科技的发展。让谷歌这么多年屹立不倒。
Databus是LinkedIn开源的一款低延迟的分布式数据库同步系统(a source-agnostic distributed change data capture system),它提供可靠的数据捕获、流转和数据处理功能。
应用场景:
主要应用场景:跨部门之间或者跨机房之间进行数据库的数据订阅。同类产品有阿里的canal。支持Oracle和Mysql数据库。
Databus和canal一样,数据都是基于数据库日志挖掘来做的。我之前的博客也提到了,当今的数据处理大致可以分为两类:联机事务处理OLTP(OnLine Transaction Processing)和联机分析处理OLAP(OnLine Analytical Processing)。
OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。但是平常所说的OLTP是集成到SQL Server中的数据库引擎组件,因为微软有个白皮书《SQL Server In-Memory OLTP Internals Overview》。但是OLTP实际上可以称之为:面向交易的实时处理系统。性能指标是TPS。
OLAP是快速响应多维分析的一种解决方案。面向的数据源是数据仓库。支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。
再回来说Databus,Databus最重要的特点是其无限回溯功能。当消费者完整数据拷贝,或者消费者的已有数据和主OLTP数据库相差很大时能够低延时的进行同步。
核心组件:
Databus的核心组件是Databus Relay。主要负责两个工作:
1>从Databus源数据库中读取变化行,并序列化为事件流保存至内存中。
2>接受客户端的请求,并将数据变化事件流返回给客户端。
实现原理:
databus使用了open-replocator作为获取数据库变更事件的组件。功能是实时获取mysql的binlog日志,并封装成Event对象,然后调用已注册的listener进行处理。
技术架构:
- Event Producer:用来读取数据库的变化事件,转化为AVRO类型并存储至内存中。
下面说说AVRO. Apache Avro是一个独立于编程语言的数据序列化系统,该项目由Hadoop之父牵头创建。它可以提供:丰富的数据结构类型,快速可压缩的二进制数据形式,存储持久数据的文件容器,远程过程调用,同动态语言的简单集成。读写数据文件和使用RPC协议都不需要生成代码,而代码生成作为一种可选的优化只值得在静态类型语言中实现。
- Circular Buffer:Relay有一个或多个环形的缓冲池用来保存按递增的系统变化号(SCN)为顺序的变化事件。
细心的读者会发现每个中间件都有自己比较独特的缓冲策略,这种缓冲策略很大成熟决定了此中间件的好坏。
- SCN Writer/Reader:用来读取和吸入SCN号至硬盘。
- RESTFUL interface:它暴露一个restful接口,用来推送数据变化事件至客户端。
源码:
Databus是用java开发的。github地址是:https://github.com/linkedin/databus。
跑题时间:
自从毕业后上班开始就时不时自己能够感觉到一些问题。比如:比较着急的时候我眉头是紧锁着的,说话客气不起来了。再比如我说话的方式也是技巧不足的。这些看起来不是核心的问题现在却是我的第一要务。因为之前有问题没关系,我不做管理,我就管我自己。那么这些小毛病顶多影响我自己。现在我的很多决定都直接影响到我们团队。
所以,在实际影响范围可控的情况下,我反而会将问题更明显出来,自己制造些小矛盾。为什么这么做呢,因为我从来不做“大家都说这样做是对的”的事情。我只做自己心里完全接受的事情。
之前认识我的人都知道我嗓门很大。现在好一点了,虽然也有时会忘了降低嗓门。我娘家在我们镇上最繁华的地段,后面是菜市场。每天早上3点就很吵了。我屋的窗户正好对着市场。所以我从小练就了“再吵和我没关系”的本事,所以我对噪音很不敏感。所以我是花了很大力气才让自己心里完全接受了“这样会打扰别人,最好的音量是不要太大,震到别人耳朵,也不要太小,别人听不清”
我现在需要让自己了解到自己的问题会产生什么样的后果,确实是有问题的。但是这样做确实是很笨的方法。聪明人是自己完全可以预见到的,人生会走很多弯路。
我工作十年,实质性的提高是没有的。刚毕业的时候,我的学历差不多就是目前所在这个级别的公司。人人,乐视,新美大。并没有级别上的提升,反而职级上比同届的要低。
跟别人相比,可能我一年过了日语1级,去过日本。后来去过美国硅谷。也有上百个专利。我在想这些为什么都没能给我带来实实在在的好处。
我学语言能力确实很强,但是我单纯只想做技术。自己的任性是要有代价的。代价就是语言能力没有用武之地。
去过日本和硅谷,这是工作机遇,并不是什么能力。应该给我带来的是气质,谈吐。但是我的气质和谈吐并没有上去。也就是我白去了,去了没学到东西。素养没提高。
专利是要真正给公司带来利益才有价值的,和数量没有关系。我并没有哪个专利特别好,发挥了特牛逼的作用。
总的来看,我是一个非常普通,还有1个半月就过31岁生日的老技术。完全没有优势。并且,我还有点浮躁。
去乐视之前,我的每一次努力都发生在不得不努力的时候。升学前,因为担心,考不上怎么办呀,于是努力成绩上去了。危机没了又回到原来。上班有任务压我,我就努力干。因为干不完怎么办呀,这是我的责任。然后基本就是忙一个月两个月闲个半年。
去乐视的时候,我有个好开头。为什么呢,因为去乐视之前,我自己趟了趟浑水,当然不是工作上的。但是我在乐视的时间自己都很郁闷。直到最后我在自己脸上身上刻了好几个疤,近1年才好,这段时间我都在郁闷自己身上的疤,原来因为什么事情郁闷完全都不记得了。所以这是我最不浮躁的一段时间。不过,我觉得和别人相比,也挺浮躁的。
现在来说,我觉得起点是很低的。突然觉得自己一无所有。但是好歹各个阶段该做的事情都做了,该试的错也实实在在试过了。我得到了我真正想得到的东西。放弃的,都是自己觉得不值得。就剩一件事了,我想在工作上达到我应该达到的高度。因为IT行业对年龄和女孩子都是很残酷的。我不图名,不图利,不爱权利,但是我想工作。
现在的公司,大家都有我很多我值得学习的地方。不跟着别人学,自身的成长也需要很多的提高。方法论方面,架构方面。我还不能拖的时间很长来适应,我需要尽快能够有一些时间,每天写点代码,根本的东西不想放下。
一直以来都不喜欢被别人叫老。也一直以来都没成熟大方得体。有时候头发很乱,有时候不经考虑。这是年轻,希望别人喜欢自己原本的样子。现在,越来越多的考虑怎么把事情做好。静儿的文章哪有不秀恩爱的。今天我只想说谢谢男神在我还年轻的时候遇到我,一心做事情的人恐怕不会再爱上谁。
一款低延迟的分布式数据库同步系统--databus的更多相关文章
- 阿里巴巴开源项目:分布式数据库同步系统otter(解决中美异地机房) - agapple - ITeye技术网站
阿里巴巴开源项目:分布式数据库同步系统otter(解决中美异地机房) - agapple - ITeye技术网站 阿里巴巴开源项目:分布式数据库同步系统otter(解决中美异地机房)
- kafka高吞吐,低延迟的分布式消息队列
核心概念 broker是kafka的节点,多台broker集群就是kafka topic消息分为多个topic partition分区,topic划分了多个partition分区,存在负载均衡策略 每 ...
- LinkedIn实时低延迟数据抓取系统Databus开源
http://www.infoq.com/cn/news/2013/03/linkedin-databus
- 学界| UC Berkeley提出新型分布式框架Ray:实时动态学习的开端—— AI 应用的系统需求:支持(a)异质、并行计算,(b)动态任务图,(c)高吞吐量和低延迟的调度,以及(d)透明的容错性。
学界| UC Berkeley提出新型分布式框架Ray:实时动态学习的开端 from:https://baijia.baidu.com/s?id=1587367874517247282&wfr ...
- 云时代的分布式数据库:阿里分布式数据库服务DRDS
发表于2015-07-15 21:47| 10943次阅读| 来源<程序员>杂志| 27 条评论| 作者王晶昱 <程序员>杂志数据库DRDS分布式沈询 摘要:伴随着系统性能.成 ...
- 跨时代的分布式数据库 – 阿里云DRDS详解(转)
原文章地址:https://www.csdn.net/article/a/2015-08-28/15827676 跨时代的分布式数据库 – 阿里云DRDS详解 发表于2015-08-28 18:39| ...
- 全球分布式数据库:Google Spanner(论文翻译)
本文由厦门大学计算机系教师林子雨翻译,翻译质量很高,本人只对极少数翻译得不太恰当的地方进行了修改. [摘要]:Spanner 是谷歌公司研发的.可扩展的.多版本.全球分布式.同步复制数据库.它是第一个 ...
- 在分布式数据库中CAP原理CAP+BASE
本篇博文的内容均来源于网络,本人只是整理,仅供学习! 一.关系型数据库 关系型数据库遵循ACID规则 事务在英文中是transaction,和现实世界中的交易很类似,它有如下四个特性: 1.A (At ...
- 从NoSQL到NewSQL,谈交易型分布式数据库建设要点
在上一篇文章<从架构特点到功能缺陷,重新认识分析型分布式数据库>中,我们完成了对不同"分布式数据库"的横向分析,本文Ivan将讲述拆解的第二部分,会结合NoSQL与Ne ...
随机推荐
- MySQL (六)--外键、联合查询、子查询
1 外键 外键:foreign key,外面的键(键不在自己表中),如果一张表中有一个字段(非主键)指向另外一张表的主键,那么将该字段称为外键. 1.1 增加外键 外键可以在创建表的时候或创建表之后增 ...
- dnsmasq一次成功的配置
第一次用这个小软件,感觉还不错,因为没有像bind那样配置起来繁琐,并且我们也不需要去配置很多文件,内外网访问互不干涉. 我是在centos6.5下进行配置的: 先说说自己的理解: dnsmasq先去 ...
- Coding使用方法
首先在码市coding.net上创建账号 基础配置 1. 首先,下载安装git客户端和tortoisegit(就是小乌龟,本地右键使用的,跟SVN一样的那个小乌龟). git下载官网:https:// ...
- 201521123091 《Java程序设计》第10周学习总结
Java 第十周总结 第十周的作业. 目录 1.本章学习总结 2.Java Q&A 3.码云上代码提交记录及PTA实验总结 1.本章学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异 ...
- 201521123052《Java程序设计》第1周学习总结
1. 本周学习总结 1.认识Java,了解JVM.JRE与JDK,并下载与安装JDK: 2.设置好eclipse并使用eclipse完成简单的Java编程: 3.使用博客.码云与PTA,这些对Java ...
- Python[小甲鱼009了不起的分支和循环3]
for语句语法: for 目标 in 表达式: 循环体 例子1: favourite = 'Idmask' for i in favourite: print(i, end= ' ') 上面的输出结果 ...
- 视频转GIF图
1.工具 PS6.0(其他版本也可以) 视频一个(具体格式应该无所谓) 2.步骤 (1)打开PS,点击导入->视频帧到图层 (2)选择视频打开 (3)进行范围选择.由于每隔2帧导入一张图片,每秒 ...
- StringBuffer的替换和反转和截取功能
A:StringBuffer的替换功能 * public StringBuffer replace(int start,int end,String str): * 从start开始到end用str替 ...
- Ubuntu16.04.1上搭建分布式的Redis集群
为什么要集群: 通常为了,提高网站的响应速度,总是把一些经常用到的数据放到内存中,而不是放到数据库中,Redis是一个很好的Cache工具,当然了还有Memcached,这里只讲Redis.在我们的电 ...
- SAP Gateway简介
SAP Gateway在S4/HANA时代的ABAP开发模型中有着重要的地位.SAP Gateway是什么?它对ABAP开发有怎样的影响?可以为我们提供哪些方便?这篇译文将浅要地讨论这些话题. SAP ...