`
agapple
  • 浏览: 1583003 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论
文章列表
Canal介绍       基于mysql数据库binlog的增量订阅&消费   QuickStart 几点说明:(mysql初始化) a.  canal的原理是基于mysql binlog技术,所以这里一定需要开启mysql的binlog写入功能,并且配置binlog模式为row.  [mysqld] log-bin=mysql-bin #添加这一行就ok binlog-format=ROW #选择row模式 server_id=1 #配置mysql replaction需要定义,不能和canal的slaveId重复 b.  canal的原理是模拟自己为my ...
背景 最近折腾的数据库同步项目中,大量使用了zookeeper(版本3.3.3),可以说是强依赖,但是最近频频出现zookeeper内存使用率达到100%,而且是GC不掉,直接导致整个系统挂起,伤不起阿   分析 因为大部分的情况都是无法GC回收,所以很大程度上怀疑出现memory leak。 设置了jvm参数,收集了一下OOM导致jvm crash之后的日志文件进行分析   -XX:+HeapDumpOnOutOfMemoryError leak分析:    从leak分析来看,比较明显,99%的内存都被Leader类的observingLearners给吃光了,所以 ...
背景  项目中使用了zookeeper进行的类似工作流引擎的工作流转,将一次工作请求拆分了4个节点(S/E/T/L)。S阶段做完后,通过zk的watcher触发下一个E节点进行处理,S和E可能为不同的jvm上,所以需要走一个分布式的消息进行通知。 ...
背景   距离上一篇文章已经有4个多月了,这4个多月一直在忙着做一个数据库同步产品的代码研发和测试,现在基本运行稳定。 本文主要介绍一下,当时使用apache oro包进行正则过滤时,使用时出现的一个并发问题,排查了好几天才找到原因。希望大家使用时引以为戒,望周知。   过程 简单的描述下,我使用apache oro的场景: 进行数据库同步时,我们会根据定义的表名进行匹配,从binlog的数据流中提取出我们关心的表,然后进行解析,压缩,传输,写入目标库等一系列动作。  然而在线下测试环境中,冒出一个比较异常的情况,数据没有被正常的同步到目标库(概率发生的比较小,每次jvm重启后才可能出 ...
背景  最近资讯asyncload使用的同学越来越多,会有些一些经常性的问题,这里我做一下整理和answer,同时介绍一下asyncload的UserGuide 和一些限制等。   关于asyncload,又名异步并行加载 ,可参见我之前的文章: (业务层)异步并行加载技术分析和设计 UserGuide篇 几个基本概念: 线程池 (定义异步处理的线程池模型,包括线程数,队列大小等) 匹配信息 (定义哪些方法需要实施,包括超时时间等) 匹配主体 (比如常见的service,dao等,需要进行异步并行加载处理的对象) 声明式: 常规配置(半侵入) 基本步骤: 1.  配置 ...
背景   BeanMapping是什么? 请查看我之前的一篇文章:  我也造了个轮子:BeanMapping(属性拷贝)  版本变更内容   convetor包名重构,拼写错误   ScriptExecutor接口重构,加上ScriptContext操作   FiledSetExecutor去除对args的强制匹配依 ...
背景  这几天在做数据自动化同步测试过程,发现一个诡异的现象。一批100条语句的更新过程中,同步到目标库去执行,总会有几条记录出现更新失败。 原因 1. 查看了同步过程中的执行日志,也米有啥特别明显的问题,单就是update affect = 0 。 2. 问题的查找方式也是比较简单,针对底层执行的update语句,挨个字段确认,到底是哪一个字段影响了记录的定位。 最后发现是一个Decimal(19,8)的字段类型。 3. debug跟踪了下对应的mysql driver代码,发现针对setBigDecimal类型数据处理时,多了个单引号,字段内容就变成了 '1234.12312'. ...
背景   在线上运行的一个数据库同步系统,突然在某一天发现了一条奇怪的数据。 出现了如下异常:   SQL state [99999]; error code [17361]; Year out of range.; nested exception is java.sql.SQLException: Year out of range.:    分析其对应的数据内容,就发现了有一个Oracle的Date类型的数据字段,返回了-235316004988000L.    EventColumn[index=0,columnType=93,columnName=RESERVED_TIM ...
背景   BeanMapping是什么? 请查看我之前的一篇文章:  我也造了个轮子:BeanMapping(属性拷贝)  现状   目前代码经过在一个实际项目中进行试用,该项目为公司的核心业务逻辑(产品页面数据),目前表现良好。      在原先的1.0.0版本基础上修复了几个bug,目前推荐使用1.0.1。  下载 url : https://github.com/agapple/mapping4java/tags mvn仓库: <dependency> <groupId>com.googlecode.mapping4java</grou ...
背景 前段时间一个项目中因为涉及大量的线程开发,把jdk cocurrent的代码重新再过了一遍。这篇文章中主要是记录一下学习ThreadPoolExecutor过程中容易被人忽略的点,Doug Lea的整个类设计还是非常nice的   正文 先看一副图, ...
近段时间,因项目需要接触了下zookeeper,通过阅读源码以及项目中的使用总结,慢慢的积累了zookeeper的一系列的学习总结。 希望对大家使用zookeeper有所帮助,同时如有描述欠佳的地方尽情拍砖。 zookeeper是什么?  ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。    目前zookeeper被应用于hadoop/hbase中进行节点的管理,通过zookeeper你可以很方便的开发出一些分布式控制的工具,比如分布式lock, barrier,coun ...
背景 继续前面的zookeeper学习的专题,这次主要是结合项目中遇到的一些问题,进一步学习了下zookeeper的一些内部机制。   针对以下几个问题: 1. zk是否可以保证watcher事件不丢失? 2. zk的EPHEMERAL节点的自动过期时间?  3. zk的如何保证节点数据不丢失?   如果你已经非常清楚这以上的几个问题,看官们可以不用往下看了。  persit机制 zookeeper中的persit机制主要是通过本地disk进行持久化,在本地disk上会有个memory数据对象保持同步。   持久化实现: ZKDatabase   DataTree ...
背景  这两天在做数据同步项目的联调,测试过程中发现针对mysql的一些使用上存在一些问题,比如batch不起效果,编码问题,预编译失效等等。 这里总结一下,做一下记录,希望对遇到类似问题的有所帮助 内容 编码问题 官方文档: http://dev.mysql.com/doc/refman/4.1/en/connector-j-reference-charsets.html 网上针对mysql的中文编码问题,已经有不少文章进行介绍,大概步骤如下:   1.  设置my.cnf中, 设置default-character-set=utf8 2.  创建表时指定编码,create t ...
背景    今天早上,领导给了我一个任务:在老的系统运行中,DBA反馈说获取database TableMeta操作有点慢,让我分析下基于oracle driver驱动是否可以做下优化。由此引出了本文,仅仅做一个记录。 内容 在补充几点背景知识:   1.  老系统介绍 老系统主要负责的业务是做跨机房之间的数据库记录同步,需要获取数据库的table meta信息,进行构造对应的sql。将源数据的columns变化,通过sql方式更新到目标库上。 table meta信息分析时,需要获取table的字段,主键,需要支持视图,同义词等表查询 2.  table meta操作原理 ...
背景  最近1个多月周末都忙着在练车,准备年前考个驾照。 之前预约了一次模拟机,结果因临时有事没去成。 想再预约,就得排到3个星期之后。 所以无奈写了个自动预约的程序,等着别人取消预约后,模拟进行预约。 过程 整个代码实现起来不复杂,主要是在一些HTTP请求的模拟上,为了图方便直接用了shell脚本语言进行处理,所以功能上会比较简单,不过挺好用的。 至少我已成功预约到了一个周末   代ssn="自己的身份证号" xm=`urlencode 自己的姓名` xcjxbh="HJG021" jd=`urlencode 阶段一` sjds ...
Global site tag (gtag.js) - Google Analytics