当前位置: 首页 > backend >正文

Flume之选择器:复制和多路复用(比喻化理解

Flume 的选择器决定了Source 如何将数据分发到多个 Channel。这就像 “快递员如何分配包裹到不同的运输通道”,有两种策略:复制多路复用

一、复制(Replicating Selector):每个 Channel 都送一份

核心逻辑

将同一个 Event(数据)复制到所有配置的 Channel,就像 “一个快递员同时给多个收件人发相同的包裹”。

应用场景
  • 需要将数据同时写入多个目的地(如同时备份到 HDFS 和 Kafka)。
  • 示例:监控系统日志,同时存储到 HDFS(长期归档)和 Elasticsearch(实时搜索)。
配置示例
# Source配置
a1.sources = r1
a1.channels = c1 c2  # 配置两个Channel# 选择器类型:复制(默认)
a1.sources.r1.selector.type = replicating

二、多路复用(Multiplexing Selector):按规则分配

核心逻辑

根据 Event 的Header 值(类似包裹上的 “地址标签”),将数据路由到不同的 Channel,就像 “快递员按收件地址分区域派送”。

应用场景
  • 根据数据类型拆分(如将错误日志和访问日志分到不同 Channel)。
  • 示例:电商订单数据,按支付方式(微信 / 支付宝)分流到不同 Kafka Topic。
配置示例
# Source配置
a1.sources = r1
a1.channels = c1 c2  # 配置两个Channel# 选择器类型:多路复用
a1.sources.r1.selector.type = multiplexing# 按Header中的"type"字段路由
a1.sources.r1.selector.header = type
a1.sources.r1.selector.mapping.error = c1  # type=error的Event走c1
a1.sources.r1.selector.mapping.access = c2  # type=access的Event走c2
a1.sources.r1.selector.default = c2  # 未匹配的默认走c2

三、对比与记忆技巧

维度复制(Replicating)多路复用(Multiplexing)
数据流向一个 Event 复制到所有 Channel一个 Event 只走一个 Channel(按规则选)
比喻快递员给每个客户都发相同的包裹快递员按地址分区派送包裹
配置关键词replicating(默认,无需显式配置)multiplexing + header + mapping
典型场景数据备份、多目的地存储数据分类、分流处理

四、一句话总结

  • 复制:“一份数据,所有管道都走一遍”(适合备份);
  • 多路复用:“不同数据走不同管道”(适合分类)。

如果还是容易混淆,可以想象:

  • 复制像 “群发消息”(所有人都收到相同内容);
  • 多路复用像 “智能分拣”(根据包裹标签选择不同运输路线)。
http://www.xdnf.cn/news/8392.html

相关文章:

  • 继电保护与安全自动装置:电力系统安全的守护神
  • 设计模式-行为型模式(详解)
  • 一、ZooKeeper:分布式系统中的隐形协调大师
  • 【图像大模型】AnimateDiff:基于扩散模型的视频生成技术解析与实践指南
  • 家政、维修等服务行业整体解决方案
  • PCB行业标准与专利竞争:高频材料与工艺壁垒
  • 大模型 Agent 就是文字艺术吗?
  • COZE工作流全场景变现新路径:小程序/网站封装集成
  • Robust Kernel Estimation with Outliers Handling for Image Deblurring论文阅读
  • 212. 单词搜索 II
  • Pytorch里面多任务Loss是加起来还是分别backward? | Pytorch | 深度学习
  • 数据结构——树
  • 快捷回复预设文本工具
  • Python字符串及正则表达式
  • 【PhysUnits】9 取负重载(negation.rs)
  • el-input宽度自适应方法总结
  • Matlab入门
  • 个人理解 火山引擎的实时对话 AI 如何利用 WebRTC、大模型、语音识别(ASR)、语音合成(TTS)等技术实现低延迟的实时对话功能。
  • PostgreSQL 数据库备份与恢复
  • 学习黑客 tcpdump
  • 服务器为什么会产生垃圾文件
  • 【JS】Vue 3中ref与reactive的核心区别及使用场景
  • 【JVM 02-JVM内存结构之-程序计数器】
  • 提升推理能力会丢失指令跟随的能力?——【论文阅读笔记】
  • 从逻辑学视角严谨证明数据加密的数学方法与实践
  • 多级Cache
  • 城市地下“隐形卫士”:激光甲烷传感器如何保障燃气安全?
  • 使用 kafka-console-consumer.sh 指定时间或偏移量消费
  • 【golang】能否在遍历map的同时删除元素
  • HTTP协议接口三种测试方法之-postman