flume 事务
flume事务的具体工作流程:
put事务:
source 像channel 中推送事件时, 会有一个临时的缓冲区,如果推入事件出现异常失败,会回滚事务,数据回滚给putlist当中,再次进行尝试.推送成功会清楚putlist中缓冲的数据
Take事务:
缓冲区会从channel拉取事件,当拉取失败时,进行回滚,归还给channel. 拉取成功会删除掉channel缓冲区的数据
flume 工作原理解析图:
flume 拓扑结构
①. 简单串联: flume 的数量不易过多,否则, 当某一个flume出现宕机,就会出现问题
②. 复制选择器 (还有多路复用选择器)
Replicating Channel Selector :
这是channels selectors 默认的一种选择器,将数据进行以副本的形式发送给多个channel,
然后再让各自的channel 对应相应的sink来对应需要使用的功能
Multiplexing Channel Selector:
多路复用选择器,需要和自定义拦截器搭配使用, 根据条件进行过滤来发到不同的channel上
③. 负载均衡(故障转移)
负载均衡解析:
让一个channel写出对应到多个sink上,根据轮询或者随机算法,来选择事件由发送到sink上来进行处理,达到负载均衡的目的效果
故障转移解析:
为多个sink配置优先级, 优先级高的sink来处理事情,当这个sink(active) 宕机,系统来比较优先级,选择下一个优先级高的sink来处理,但是当source 到channel出现错误的时候,就没办法了
④日志聚合:
日志一般都是存在于多个服务器, 这时候就可以通过使用日志聚合,将多个服务器的日志聚合到一起上传到hdfs等上,进行日志分析