flume源码阅读之主启动类

flume 源码阅读之启动类介绍

依赖的基础知识

  • CLI: Apache 旗下的一款开源的命令行解析工具 CLI
  • guava: google 旗下的著名的开源工具

启动步骤

  1. 启动参数例子 : bin/flume-ng agent –conf conf –conf-file conf/test.conf –name a1 -Dflume.root.logger=INFO,console
    其中 –conf-flie 指定 配置文件路径 –name 指定Agent名字 -Dflume.root.logger 指定日志级别

  2. 启动核心类:Package: flume-ng-node: Application.java

  3. 启动步骤:流程图如下
    这里写图片描述

注释(1): 没有指定no-reload参数,那么系统默认会不断的扫描配置文件的更新状态,启动的过程采取的步骤是:
Commponents List中加上配置文件解析组件, 在EventBus 中注册监听器,在后面调用 Application的start方法时会 启动 commponents 这时候就只有 配置文件解析 这一个组件,启动配置文件组件时候会POST一个事件,这样 接受到这个事件后 就会去执行: handleConfigurationEvent 这个方法

注释(2): 直接就会去执行 handleConfigurationEvent 这个方法,调用Application 的start方法其实什么事也没做

涉及到的类

启动主要涉及到 配置文件的解析 将配置文件中配置的 source sink Channel解析为对应的组件,这部分内容在后面的文章中会慢慢分析解析过程

使用到的设计模式

这里面比较明显的一个设计模式就是: 监听者模式 这里是利用了 GUAVA的EventBus来实现,guava中关于EventBus的使用主要涉及到两个方面:
1. 注册监听器,这里主要用到的是 event.register()
2. 通知事件: event.post()

这里比一般的实现方式比较好的一点是: 处理方法只需要加上 @Subscribe 注解,就可以收到事件回调

其他的设计模式在后续分析的时候再做具体分析

注意事项

如果想配置文件不存在的情况下也能正常启动Flume,那么可以配置上这个参数:
SYSPROP_CALLED_FROM_SERVICE: disable fail-fast的行为,这个个参数赋任何值都可以

Flume的默认行为会去不断的检查配置文件有没有被更新过,检查的策略就是看配置文件的LastModifyTime有没有更新过,更新过就会重新加载配置文件. 当然你也可以关闭这一功能: 只要在启动参数中加上 –no-reload-conf 这样就不会去不断扫描配置文件的状态

说明

本篇只是简单的说明一下 Flume的启动,其中的一些细节会在后续的文章中慢慢介绍

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值