扩展性定义

按照实现不同,可分为两类:

  • 数据处理自定义,比如Extract , Transform的数据处理. 目前Select/Load不支持数据自定义处理
  • 组件功能性扩展,比如支持oracle日志获取,支持hbase数据输出等.

数据处理自定义

Extract模块:

  • EventProcessor : 自定义数据处理,可以改变一条变更数据的任意内容
  • FileResolver : 解决数据和文件的关联关系
    目前两者都只支持java语言编写,但都支持运行时动态编译&lib包载入的功能。

  • 通过Otter Manager直接发布source文件代码,然后推送到node节点上即时生效,不需要重启任何java进程,有点动态语言的味道

  • 可以将class文件放置到extend目录或者打成jar包,放置在node启动classpath中,也可以通过Otter Manager指定类名的方式进行加载,这样允许业务完全自定义。(但有个缺点,如果使用了一些外部包加入到node classpath中,比如远程接口调用,目前EventProcessor的调用是串行处理,针对串行进行远程调用执行,效率会比较差. )
    Otter扩展性 - 图1

EventProcessor接口示例:

  1. /**
  2. * 业务自定义处理过程
  3. *
  4. * @author jianghang 2012-6-25 下午02:26:36
  5. * @version 4.1.0
  6. */
  7. public interface EventProcessor {
  8. /**
  9.  * 自定义处理单条EventData对象
  10.  * 
  11.  * @return {@link EventData} 返回值=null,需要忽略该条数据
  12.  */
  13. public EventData process(EventData eventData);
  14.  
  15. }

扩展代码开发

1. 自定义维护

依赖配置:

  1. <dependency>
  2. <groupId>com.alibaba.otter</groupId>
  3. <artifactId>shared.etl</artifactId>
  4. <version>x.y.z</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>com.alibaba.otter</groupId>
  8. <artifactId>node.extend</artifactId>
  9. <version>x.y.z</version>
  10. </dependency>

a. 创建mvn标准工程

  1. mvn archetype:create -DgroupId=com.alibaba.otter -DartifactId=node.code

b. 修改pom.xml,添加依赖
c. mvn eclipse:eclipse导入工程

d. 代码开发完成后,使用的有两种选择:1. manager上选择source,直接粘帖源码 . 2. 将该代码打成jar包,放到node工程的lib目录下,在manager上选择clazz后,写上对应的类名即可

2. 基于otter.extend工程维护

a. 下载otter源码包, https://github.com/alibaba/otter

b. 导入工程.

  1. mvn clean eclipse:eclipse install -Dmaven.test.skip

c. 代码开发完成后,使用的有两种选择:1. manager上选择source,直接粘帖源码 . 2. 整个otter编译打包,发布后,在manager上选择clazz后,写上对应的类名即可

扩展示例代码:

组件功能性扩展

目前这块扩展性机制不够,设计时只预留了接口,但新增一个功能实现,需要通过硬编码的方式去进行,下载otter的源码,增加功能支持,修改spring配置,同时修改web页面,方便使用。

基于manager的灵活扩展性的实现,暂没有想到很好的办法,如果你有好的思路和实现方式,也可以告知我们,谢谢。

比如举增加hbase load实现为例,需要扩展的内容:

  • 增加hbase数据源的抽象
  • 增加hbase表的抽象,比如column,columnFamily
  • 增加hbase transform的实现
  • 增加hbase loader的实现

原文: https://github.com/alibaba/otter/wiki/Otter%E6%89%A9%E5%B1%95%E6%80%A7