日志收集之flume-ng源码分析

Flume-ng 源码分析简介    近期由于项目需要开发独特的flume-source,因此简单看了下flume的源码。Flume的架构还是比较简单,各个模块功能源码比较清晰。源码目录结构        flume-ng-channels         里面包含了filechannel和jdbcchannel的实现;没有追过早期的flume代码,不过从这目录结构看来,m
摘要由CSDN通过智能技术生成

Flume-ng 源码分析

简介

    近期由于项目需要开发独特的flume-source,因此简单看了下flume的源码。Flume的架构还是比较简单,各个模块功能源码比较清晰。

源码目录结构

        

flume-ng-channels

         里面包含了filechannel和jdbcchannel的实现;没有追过早期的flume代码,不过从这目录结构看来,memorychannel并不在这个目录中,猜测file channel和jdbc channel是后期实现的功能;

flume-ng-clients

         内部就实现了一个log4j相关的几个Appender,使得log4j的日志输出可以直接发送给flume-agent;其中有一个LoadBalancingLog4jAppender的实现,提供了多个flume-agent的load balance和ha功能,采用flume作为日志收集的可以考虑将这个appender引入内部的log4j中;

flume-ng-configuration

         顾名思义,所有的配置均在此目录下。flume的配置设计的还是比较好的,内部在使用上抽象了ComponentConfiguration,多种角色(channel、channelselector、sink、sinkprocessor、source)都有自己的配置,因为flume的设计中在同一个process(flume-agent实例)中,可能会有多个source、sink、channel等角色,当配置多个source时,不同source会有自己的名字(component name)作为区分、会有自己的类型;阅读其他代码前,可以将conf的关系梳理清楚,有助于理解各个角色之间的关系;

flume-ng-core

         flume整个核心框架,包括了各个模块的接口以及逻辑关系实现。其中instrumentation是flume内部实现的一套metric机制,metric的变化和维护,其核心也就是在MonitoredCounterGroup中通过一个Map<key,  AtomicLong>来实现metric的计量。ng-core下几乎大部分代码任然几种在channel、sink、source几个子目录下,其他目录基本完成一个util和辅助的功能。

  channel:

         channel中实现了memorychannel;memory channel不提供数据可靠性,当agent down掉

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值