- 博客(126)
- 收藏
- 关注
原创 阿里巴巴开源项目: 阿里巴巴去Oracle数据迁移同步工具
背景 08年左右,阿里巴巴开始尝试MySQL的相关研究,并开发了基于MySQL分库分表技术的相关产品,Cobar/TDDL(目前为阿里云DRDS产品),解决了单机Oracle无法满足的扩展性问题,当时也掀起一股去IOE项目的浪潮,愚公这项目因此而诞生,其要解决的目标就是帮助用户完成从Oracle数据迁移到MySQL上,完成去IOE的第一步. 项目介绍名称: yugon...
2016-03-05 18:29:59 633
原创 Canal BinlogChange(mariadb5/10)
背景先前开源了一个开源项目: 【阿里巴巴开源项目: 基于mysql数据库binlog的增量订阅&消费】 本文主要是介绍一下canal支持mariadb协议上的变化. 协议变化mariadb5.5mariadb5.5主要是基于mysql5.5的原型,类型定义基本没啥变化,大体上都保持兼容主要的变化:1. QueryLogEvent增加了status变量....
2014-01-20 17:25:27 429
原创 Canal Client API
快速体验1. 首先需要先启动canal server,可参见:Canal Server的QuickStart2. 运行canal client,可参见:canal client的ClientExample 如何下载1. 如果是maven用户,可配置mvn dependency<dependency> <groupId>com...
2013-10-29 14:45:46 1334
阿里巴巴开源项目:分布式数据库同步系统otter(解决中美异地机房)
项目背景 阿里巴巴B2B公司,因为业务的特性,卖家主要集中在国内,买家主要集中在国外,所以衍生出了杭州和美国异地机房的需求,同时为了提升用户体验,整个机房的架构为双A,两边均可写,由此诞生了otter这样一个产品。 otter第一版本可追溯到04~05年,此次外部开源的版本为第4版,开发时间从2011年7月份一直持续到现在,目前阿里巴巴B2B内部的本地/异地机房的同步需求...
2013-08-22 16:48:06 740
Canal BinlogChange(mysql5.6)
背景先前开源了一个开源项目: 【阿里巴巴开源项目: 基于mysql数据库binlog的增量订阅&消费】 本文主要是介绍一下canal1.0.3支持mysql5.6协议上的变化. 协议变化1. binlog checksum mysql5.6之后,支持在binlog对象中增加checksum信息,比如CRC32协议. 其原理主要是在原先bin...
2013-04-09 00:26:32 250
canal DevGuide
背景 先前开源了一个开源项目: 【阿里巴巴开源项目: 基于mysql数据库binlog的增量订阅&消费】 本文主要是介绍一下如何给canal贡献代码,介绍其设计思路和扩展方式 设计 说明:server代表一个canal运行实例,对应于一个jvminstance对应于一个数据队列 (1个server对应1..n个instance)instan...
2013-04-01 23:33:18 142
原创 Canal AdminGuide
背景 先前开源了一个开源项目: 【阿里巴巴开源项目: 基于mysql数据库binlog的增量订阅&消费】 本文主要是介绍一下如何部署&使用 环境要求1. 操作系统 a. 纯java开发,windows/linux均可支持 b. jdk建议使用1.6.25以上的版本,稳定可靠,目前阿里巴巴使用基本为此版本. 2. ...
2013-03-19 19:43:52 703
github上基于milestone自动生成releaseNotes
背景 最近在做一个项目,代码都已经托管到github上,准备走开源路线。 项目: 一个重大轮子: 基于mysql数据库binlog的增量订阅&消费 使用了github的issue tracker代码,本文记录一下如何使用github管理release notes,希望能给大家玩github的有所帮助。 过程步骤1 (准备issue/milestone素材) ...
2013-02-19 18:19:19 1271
mysql TableMap id递增问题
背景 这两天在线上运行的mysql数据库同步,过个1,2天就爆了一次内存,所以dump了一下jvm内存信息分析了下,发觉就是tablemap对象的cache是一个罪魁祸首,2G的old区,平均被4个同步任务划分掉。 解释下,缓存tablemap的意义: a. insert/update/delete语句操作数据库时,在binlog中会产生两条binary log,...
2013-02-06 16:19:00 179
阿里巴巴开源项目: 基于mysql数据库binlog的增量订阅&消费
背景 早期,阿里巴巴B2B公司因为存在杭州和美国双机房部署,存在跨机房同步的业务需求。不过早期的数据库同步业务,主要是基于trigger的方式获取增量变更,不过从2010年开始,阿里系公司开始逐步的尝试基于数据库的日志解析,获取增量变更进行同步,由此衍生出了增量订阅&消费的业务,从此开启了一段新纪元。ps. 目前内部使用的同步,已经支持mysql5.x和oracle部分...
2013-02-06 00:36:23 1435
原创 Canal ClientExample
Canal介绍 基于mysql数据库binlog的增量订阅&消费 ClientExample依赖配置:(目前暂未正式发布到mvn仓库,所以需要各位下载canal源码后手工执行下mvn clean install -Dmaven.test.skip)<dependency> <groupId>com.alibaba.otte...
2013-02-06 00:29:09 520
原创 Canal QuickStart
Canal介绍 基于mysql数据库binlog的增量订阅&消费 QuickStart几点说明:(mysql初始化)a. canal的原理是基于mysql binlog技术,所以这里一定需要开启mysql的binlog写入功能,并且配置binlog模式为row. [mysqld]log-bin=mysql-bin #添加这一行就okbin...
2013-02-06 00:28:47 142
zookeeper OOM问题排查
背景最近折腾的数据库同步项目中,大量使用了zookeeper(版本3.3.3),可以说是强依赖,但是最近频频出现zookeeper内存使用率达到100%,而且是GC不掉,直接导致整个系统挂起,伤不起阿 分析因为大部分的情况都是无法GC回收,所以很大程度上怀疑出现memory leak。设置了jvm参数,收集了一下OOM导致jvm crash之后的日志文件进行分析 -XX...
2012-12-05 21:33:49 1139
zookeeper watcher使用注意点
背景 项目中使用了zookeeper进行的类似工作流引擎的工作流转,将一次工作请求拆分了4个节点(S/E/T/L)。S阶段做完后,通过zk的watcher触发下一个E节点进行处理,S和E可能为不同的jvm上,所以需要走一个分布式的消息进行通知。思路基于zookeeper做持久化watcher,项目中直接使用zookeeper官方api,大致的工作模型: private sync...
2012-09-26 17:27:04 434
apache oro使用注意细节(并发问题)
背景 距离上一篇文章已经有4个多月了,这4个多月一直在忙着做一个数据库同步产品的代码研发和测试,现在基本运行稳定。 本文主要介绍一下,当时使用apache oro包进行正则过滤时,使用时出现的一个并发问题,排查了好几天才找到原因。希望大家使用时引以为戒,望周知。 过程简单的描述下,我使用apache oro的场景: 进行数据库同步时,我们会根据定义的表名进行匹配,从binlog的...
2012-09-21 11:43:49 250
异步并行加载使用说明(asyncload)
背景 最近资讯asyncload使用的同学越来越多,会有些一些经常性的问题,这里我做一下整理和answer,同时介绍一下asyncload的UserGuide 和一些限制等。 关于asyncload,又名异步并行加载 ,可参见我之前的文章: (业务层)异步并行加载技术分析和设计UserGuide篇几个基本概念:线程池 (定义异步处理的线程池模型,包括线程数,队列大小等)...
2012-04-28 16:43:29 844
BeanMapping发布1.0.2版本
背景 BeanMapping是什么? 请查看我之前的一篇文章: 我也造了个轮子:BeanMapping(属性拷贝) 版本变更内容 convetor包名重构,拼写错误 ScriptExecutor接口重构,加上ScriptContext操作 FiledSetExecutor去除对args的强制匹配依赖 mapping支持name定义 mapping支持嵌套...
2012-04-06 16:10:41 180
mysql number类型引号问题
背景 这几天在做数据自动化同步测试过程,发现一个诡异的现象。一批100条语句的更新过程中,同步到目标库去执行,总会有几条记录出现更新失败。原因1. 查看了同步过程中的执行日志,也米有啥特别明显的问题,单就是update affect = 0 。2. 问题的查找方式也是比较简单,针对底层执行的update语句,挨个字段确认,到底是哪一个字段影响了记录的定位。 最后发现是一个Decim...
2012-03-28 17:33:55 729
java Date.getTime()返回负数异常情况分析
背景 在线上运行的一个数据库同步系统,突然在某一天发现了一条奇怪的数据。 出现了如下异常: SQL state [99999]; error code [17361]; Year out of range.; nested exception is java.sql.SQLException: Year out of range.: 分析其对应的数据内容,就发现了有一个Or...
2012-03-15 13:42:04 1203
BeanMapping发布1.0.1版本
背景 BeanMapping是什么? 请查看我之前的一篇文章: 我也造了个轮子:BeanMapping(属性拷贝) 现状 目前代码经过在一个实际项目中进行试用,该项目为公司的核心业务逻辑(产品页面数据),目前表现良好。 在原先的1.0.0版本基础上修复了几个bug,目前推荐使用1.0.1。 下载url : https://github.com/agapple...
2012-01-31 14:48:06 123
ThreadPoolExecutor几点使用建议
背景前段时间一个项目中因为涉及大量的线程开发,把jdk cocurrent的代码重新再过了一遍。这篇文章中主要是记录一下学习ThreadPoolExecutor过程中容易被人忽略的点,Doug Lea的整个类设计还是非常nice的 正文先看一副图,描述了ThreadPoolExecutor的工作机制: 整个ThreadPoolExecutor的任务处理...
2011-12-06 11:47:39 285
zookeeper学习&使用系列文章
近段时间,因项目需要接触了下zookeeper,通过阅读源码以及项目中的使用总结,慢慢的积累了zookeeper的一系列的学习总结。希望对大家使用zookeeper有所帮助,同时如有描述欠佳的地方尽情拍砖。zookeeper是什么? ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名...
2011-12-05 19:33:06 107
zookeeper学习记录三(session,watcher,persit机制)
背景继续前面的zookeeper学习的专题,这次主要是结合项目中遇到的一些问题,进一步学习了下zookeeper的一些内部机制。 针对以下几个问题:1. zk是否可以保证watcher事件不丢失?2. zk的EPHEMERAL节点的自动过期时间? 3. zk的如何保证节点数据不丢失? 如果你已经非常清楚这以上的几个问题,看官们可以不用往下看了。 persit机制...
2011-12-05 19:02:53 205
mysql几个参数(编码,预编译,批处理)
背景 这两天在做数据同步项目的联调,测试过程中发现针对mysql的一些使用上存在一些问题,比如batch不起效果,编码问题,预编译失效等等。 这里总结一下,做一下记录,希望对遇到类似问题的有所帮助内容编码问题官方文档: http://dev.mysql.com/doc/refman/4.1/en/connector-j-reference-charsets.html网上针对my...
2011-11-22 16:08:01 345
操作database TableMeta几点内容
背景 今天早上,领导给了我一个任务:在老的系统运行中,DBA反馈说获取database TableMeta操作有点慢,让我分析下基于oracle driver驱动是否可以做下优化。由此引出了本文,仅仅做一个记录。内容在补充几点背景知识: 1. 老系统介绍老系统主要负责的业务是做跨机房之间的数据库记录同步,需要获取数据库的table meta信息,进行构造对应的sql...
2011-11-15 19:47:59 487
模拟机预约程序(考驾照)
背景 最近1个多月周末都忙着在练车,准备年前考个驾照。 之前预约了一次模拟机,结果因临时有事没去成。 想再预约,就得排到3个星期之后。 所以无奈写了个自动预约的程序,等着别人取消预约后,模拟进行预约。过程整个代码实现起来不复杂,主要是在一些HTTP请求的模拟上,为了图方便直接用了shell脚本语言进行处理,所以功能上会比较简单,不过挺好用的。 至少我已成功预约到了一个周末 ...
2011-10-24 11:32:30 1887
使用jetty做为server提供多线程文件下载
背景 最近在做的一个项目,两个java进程之间会涉及一个大数据量的传递过程,基本都是图片文件,(做了压缩后还是会比较大,最大的有超过600MB)。其次这两个java进程是在跨机房,比如中国和美国机房,网络待框也就几百kB。 这就是本文的项目背景分析1. 600MB的文件,都是A进程运行时根据需要生成的(下载需要的图片文件)。所以无法预先处理,而且公司总图片文件都是以TB...
2011-10-11 15:35:36 162
基于zookeeper的分布式lock实现
背景 继续上一篇文章:http://agapple.iteye.com/blog/1183972 ,项目中需要对分布式任务进行调度,那对应的分布式lock实现在所难免。 这一周,在基于BooleanMutex的基础上,实现了zookeeper的分布式锁,用于控制多进程+多线程的lock控制 算法可以预先看一下zookeeper的官方文档: http://zoo...
2011-09-30 17:00:15 284
zookeeper项目使用几点小结
背景 前段时间学习了zookeeper后,在新的项目中刚好派上了用场,我在项目中主要负责分布式任务调度模块的开发,对我自己来说是个不小的挑战。 分布式的任务调度,技术上我们选择了zookeeper,具体的整个分布式任务调度的架构选择会另起一篇文章进行介绍。 本文主要是介绍自己在项目中zookeeper的一些扩展使用,希望可以对大家有所帮助。 项目中使用的zookeep...
2011-09-30 15:55:21 359
基于AQS实现互斥信号(BooleanMutex)
背景 最近一个月都在做项目,我主要负责分布式任务的调度的功能,需要实现一个分布式的授权控制。 具体的需求: 1. 首先管理员启动整个任务,并设置执行权限 2. 工作节点收到消息后就会创建对应的线程,并开始执行任务(任务都是由一个管理员进行分配) 3. 运行过程中管理员需要临时中断某个任务,需要设置一个互斥信号,此时对应的工作节点都需要被阻塞,注意不是完全销毁...
2011-09-30 15:02:37 253
网站应用部署介绍(apache,jetty,jboss,tomcat)
先前在部门做的一个分享,主要是介绍一下当前公司网站应用中的一些部署情况。 文档中的主要内容:架构发展过程apache使用情况apache相关配置例子mod_jk配置参数mod_proxy配置参数jboss简单介绍tomcat配置参数jetty介绍&核心配置参数...
2011-08-24 12:40:28 102
常用的linux系统监控命令
记录一下自己常用的linux系统命令,方便以后查阅,发觉记忆越来越不行了找到最耗CPU的java线程ps命令命令:ps -mp pid -o THREAD,tid,time 或者 ps -Lfp pid结果展示: 这个命令的作用,主要是可以获取到对应一个进程下的线程的一些信息。 比如你想分析一下一个java进程的一些运行瓶颈点,可以通过该命令找到所有当前Th...
2011-08-24 12:22:20 221
neo4j简单学习
背景最近在一些论坛或者新闻里看到了neo4j,一种擅长处理图形的数据库。 据说非常适合做一些join关系型的查询,所以抽空也看了下相关文档,给自己做个技术储备。 过程深入学习之前,先在网上找了一下别人的一个学习文档总结,踩在别人的肩膀上总是最快,最有效的学习。 http://blog.csdn.net/gtuu0123/article/details/6384375h...
2011-07-20 20:43:04 261
git/svn diff可视化工具配置
以前一直使用svn diff / git diff,看到的都是console下的对比提示。 今天花了点时间找了一款工具,基于GUI的diff操作。 软件选择的是p4merge , 下载路径: http://www.perforce.com/perforce/downloads/index.html 下载完成后,直接解压缩到 /usr/local/program/p4merge...
2011-07-12 23:18:49 341
googlecode deploy to mvn repo(续)
背景继上一篇,已经成功尝试了deploy到google svn上,接下来尝试deploy到maven central repo过程参考资料:http://maven.apache.org/guides/mini/guide-central-repository-upload.html 我这里选择的是Sonatype Oss Responitory做为目标仓库,由sonatyp...
2011-07-08 18:55:54 147
googlecode deploy to mvn repo
背景 前段时间在整的BeanMapping,功能开发和单元测试已经基本完善,准备release一个新版本。花了点时间找了下,如何deploy到maven central(http://repo1.maven.org/maven2/),方别客户端使用。 在测试过程中,我先找了googlecode自己的svn做为mvn repo进行测试。后续迁移到mvn central repo也只是u...
2011-07-05 19:01:31 213
zookeeper学习记录(二)
背景继上一篇的zookeeper的学习,上一篇主要偏向于zookeeper的总体结构的熟悉和使用层面。 本文主要是记录自己学习其内部的选举算法,一致性处理策略。过程在开始之前,推荐几篇比较不错的文章:http://rdc.taobao.com/blog/cs/?p=162 (选举算法)http://rdc.taobao.com/team/jm/archives/44...
2011-07-01 10:06:54 129
zookeeper学习记录
背景 前段时间看了S4流计算引擎,里面使用到了zookeeper进行集群管理,所以也就花了点时间研究了下zookeeper,不求看懂所有源码,但求了解其实现机制和原理,清楚其基本使用。这也是为后续hadoop,gridgain的分布式计算的产品。学习首先就是收集一些前人的一些学习资料和总结内容,方便自己快速入门。 这里罗列了几篇不错的文章: http://www...
2011-06-30 17:45:46 264
BeanMapping新的功能点(6月22号)
What is BeanMapping ?可以提前看一下原先的帖子: 我也造了个轮子:BeanMapping(属性拷贝) 新增功能(亮点): 1. Convertor转化处理支持(int,long,short,byte,char,boolean,float,double)8种原型和其对应的基本类型 + (BigInteger , BigDecimal) +...
2011-06-22 19:49:17 187
原创 S4分布式流计算引擎
背景 最近花了点时间研究了下分布式计算这一块的内容。领导给的第一个任务,就是学习下S4和GridGain。花了几天的时间把s4的源码看了下,把自己的理解和学习的内容做一个记录。 下一篇会是GridGain的分享学习s4的论文: S4: Distributed Stream Computing Platform s4的官网: http://s4.io/ s4是什么?1....
2011-06-20 18:11:13 370
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人