Flume HTTPSource 与 HTTP Sink 实践:构建实时数据接收网关与推送端点
Flume HTTPSource 与 HTTP Sink 实践构建实时数据接收网关与推送端点Flume HTTPSource 与 HTTP Sink 概述Apache Flume 是一个分布式、可靠、可扩展的服务用于高效地收集、聚合和移动大量日志数据。在实时数据处理场景中Flume 的 HTTPSource 和 HTTP Sink 组件提供了通过 HTTP 协议进行数据接收和推送的能力。HTTPSource 允许 Flume 接收来自外部 HTTP 请求的数据适用于将 Web 应用、移动应用等产生的日志实时接入数据管道。HTTP Sink 则使 Flume 能够将处理后的数据通过 HTTP 协议发送到外部服务如 Elasticsearch、Kafka 或其他自定义 API 端点。这两种组件的结合使用可以构建灵活的数据处理网关实现数据的实时采集、转换和分发满足现代分布式系统中对实时数据流处理的需求。HTTPSource 实践构建实时数据接收网关HTTPSource 是 Flume 的一个内置 Source 组件通过 HTTP 协议接收数据。配置和使用 HTTPSource 接收 HTTP 请求需要以下步骤a. 在 Flume 配置文件中定义 HTTPSourceproperties# 定义源a1.sources r1a1.sources.r1.type org.apache.flume.source.http.HTTPSourcea1.sources.r1.bind 0.0.0.0a1.sources.r1.port 8080a1.sources.r1.handler org.apache.flume.source.http.JSONEventServleta1.sources.r1.handler.type jsona1.sources.r1.channels c1以上配置创建了一个监听在 0.0.0.0:8080 的 HTTPSource使用 JSONEventServlet 处理请求并将数据发送到通道 c1。b. 启动 Flume 代理bashflume-ng agent --conf ./conf --conf-file ./http-source.conf --name a1 -Dflume.root.loggerINFO,consolec. 使用 curl 或其他 HTTP 客户端发送数据bashcurl -X POST -H Content-Type: application/json -d {timestamp:2023-05-01T12:00:00, event:user_login, user:testuser} http://localhost:8080d. 验证数据是否被接收和处理配置一个 Memory Channel 和 Logger Sink 来验证数据流properties# 定义通道a1.channels c1a1.channels.c1.type memorya1.channels.c1.capacity 1000a1.channels.c1.transactionCapacity 100# 定义接收器a1.sinks k1a1.sinks.k1.type loggera1.sinks.k1.channel c1通过以上配置HTTPSource 接收到的数据将被发送到 Memory Channel最终通过 Logger Sink 输出到控制台。在实际应用中可以将 Logger Sink 替换为 HDFS、Kafka 或其他 Sink将数据持久化或进一步处理。HTTP Sink 实践构建实时数据推送端点HTTP Sink 是 Flume 的一个内置 Sink 组件通过 HTTP 协议发送数据到外部服务。配置和使用 HTTP Sink 需要以下步骤a. 在 Flume 配置文件中定义 HTTPSinkproperties# 定义源a1.sources r1a1.sources.r1.type execa1.sources.r1.command tail -F /var/log/flume/test.loga1.sources.r1.channels c1# 定义通道a1.channels c1a1.channels.c1.type memorya1.channels.c1.capacity 1000a1.channels.c1.transactionCapacity 100# 定义接收器a1.sinks k1a1.sinks.k1.type org.apache.flume.sink.http.HttpSinka1.sinks.k1.channel c1a1.sinks.k1.httpEndpoint http://localhost:8081/eventsa1.sinks.k1.httpMethod POSTa1.sinks.k1.contentType application/jsona1.sinks.k1.connectTimeout 30000a1.sinks.k1.requestTimeout 30000a1.sinks.k1.connectRetryDelay 10000a1.sinks.k1.defaultBackoff truea1.sinks.k1.maxBackoff 10000a1.sinks.k1.serializer org.apache.flume.sink.http.HttpServletRequestSerializer以上配置创建了一个 HTTPSink将数据通过 POST 请求发送到 http://localhost:8081/events使用 JSON 格式。b. 启动 Flume 代理bashflume-ng agent --conf ./conf --conf-file ./http-sink.conf --name a1 -Dflume.root.loggerINFO,consolec. 创建一个简单的 HTTP 服务来接收数据使用 Node.js 创建一个简单的 HTTP 服务javascriptconst http require(http);const server http.createServer((req, res) {if (req.method POST req.url /events) {let body ;req.on(data, chunk {body chunk.toString();});req.on(end, () {console.log(Received data:, body);res.writeHead(200);res.end(OK);});} else {res.writeHead(404);res.end(Not Found);}});server.listen(8081, () {console.log(Server running at http://localhost:8081/);});d. 验证数据是否被发送和接收向 /var/log/flume/test.log 文件中添加内容观察 Flume 是否将数据发送到 HTTP 服务以及 HTTP 服务是否接收到数据。完整实例构建实时数据流处理系统结合前面的 HTTPSource 和 HTTP Sink我们可以构建一个完整的实时数据流处理系统该系统接收来自 Web 应用的日志数据经过处理后将数据发送到 Elasticsearch 进行存储和分析。a. 配置 Flume 代理properties# 定义源a1.sources r1a1.sources.r1.type org.apache.flume.source.http.HTTPSourcea1.sources.r1.bind 0.0.0.0a1.sources.r1.port 8080a1.sources.r1.handler org.apache.flume.source.http.JSONEventServleta1.sources.r1.handler.type jsona1.sources.r1.channels c1# 定义通道a1.channels c1a1.channels.c1.type memorya1.channels.c1.capacity 1000a1.channels.c1.transactionCapacity 100# 定义接收器a1.sinks k1a1.sinks.k1.type org.apache.flume.sink.http.HttpSinka1.sinks.k1.channel c1a1.sinks.k1.httpEndpoint http://elasticsearch:9200/logs/_doca1.sinks.k1.httpMethod POSTa1.sinks.k1.contentType application/jsona1.sinks.k1.connectTimeout 30000a1.sinks.k1.requestTimeout 30000a1.sinks.k1.connectRetryDelay 10000a1.sinks.k1.defaultBackoff truea1.sinks.k1.maxBackoff 10000a1.sinks.k1.serializer org.apache.flume.sink.http.HttpRequestBodySerializerb. 启动 Flume 代理bashflume-ng agent --conf ./conf --conf-file ./flume.conf --name a1 -Dflume.root.loggerINFO,consolec. 使用 curl 发送数据bashcurl -X POST -H Content-Type: application/json -d {timestamp: 2023-05-01T12:00:00,level: INFO,message: User login,user: testuser,ip: 192.168.1.100} http://localhost:8080d. 验证数据是否被存储到 Elasticsearch使用 Elasticsearch 的 REST API 或 Kibana 检查数据是否被正确存储bashcurl -X GET http://elasticsearch:9200/logs/_search?pretty注意事项与最佳实践在使用 Flume 的 HTTPSource 和 HTTP Sink 时需要注意以下几点a.性能优化合理配置通道容量和事务大小避免数据丢失或性能瓶颈对于高并发场景考虑使用多通道或多个 Flume 代理实例b.错误处理配置适当的重试机制和超时设置实现监控和告警机制及时发现和处理数据流异常c.安全考虑对 HTTPSource 启用 HTTPS 和基本认证对敏感数据进行加密处理d.数据格式统一数据格式便于后续处理和分析考虑使用 Schema Registry 管理数据结构变更e.扩展性使用 Load Balance Channel 或 Fanout Channel 实现数据分流考虑使用 Flume NG 集群部署提高可靠性最小示例与注意事项HTTPSource 配置文件 (http-source.conf):# 定义源 a1.sources r1 a1.sources.r1.type org.apache.flume.source.http.HTTPSource a1.sources.r1.bind 0.0.0.0 a1.sources.r1.port 8080 a1.sources.r1.handler org.apache.flume.source.http.JSONEventServlet a1.sources.r1.handler.type json a1.sources.r1.channels c1 # 定义通道 a1.channels c1 a1.channels.c1.type memory a1.channels.c1.capacity 1000 a1.channels.c1.transactionCapacity 100 # 定义接收器 a1.sinks k1 a1.sinks.k1.type logger a1.sinks.k1.channel c1启动命令:flume-ng agent --conf ./conf --conf-file ./http-source.conf --name a1 -Dflume.root.loggerINFO,console发送数据:curl -X POST -H Content-Type: application/json -d {event:test} http://localhost:8080注意事项:确保防火墙开放了 Flume 监听的端口检查 Flume 版本HTTPSource 和 HTTP Sink 的类名可能随版本变化对于生产环境应考虑配置多个通道和备份接收器以提高可靠性监控 Flume 的内存使用情况避免内存溢出大数据量场景下考虑增加 batch-size 参数提高吞吐量数据流程图:POST请求接收事件传输数据HTTP请求HTTP客户端HTTPSourceChannelHTTPSink外部服务

相关新闻

8款专业AI写作辅助软件横向实测,本硕博避坑必备指南

8款专业AI写作辅助软件横向实测,本硕博避坑必备指南

前言:AI 写论文乱象频发,实测 8 款工具理清适配边界 每到毕业季,本科生、硕博生都会集中寻找 AI 论文辅助工具,市面各类写作软件层出不穷,但普遍存在几类硬伤:虚假参考文献、无法匹配本校格式、不支持公式代…

2026/8/31 0:59:30 阅读更多 →
少走弯路:盘点2026年深得人心的AI论文网站

少走弯路:盘点2026年深得人心的AI论文网站

一天写完毕业论文在2026年已不再是天方夜谭。2026年AI论文网站正以惊人的速度革新学术写作,覆盖选题构思、文献整理、内容生成、降重润色等全流程,实测提速效果炸裂,助你高效搞定论文。 一、全流程王者:一站式搞定论文全链路&…

2026/8/31 0:59:30 阅读更多 →
写作压力小了!盘点2026年顶流之选的AI论文平台

写作压力小了!盘点2026年顶流之选的AI论文平台

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂的AI论文平台,实测提速效果惊人,覆盖选题、写作、查重、排版全流程,让你高效搞定论文不再难。 一、全流程王者:一站式搞定论文全链路(一天定稿首选&#xff09…

2026/8/31 0:59:30 阅读更多 →

最新新闻

AI测试面试指南:从数据模型到Agent落地的核心能力拆解

AI测试面试指南:从数据模型到Agent落地的核心能力拆解

最近好几个做测试的朋友都在问同一个问题:现在AI测试岗位的面试,到底要准备到什么程度才敢去面? 这个问题不是"多刷几道面试题"能解决的。因为整个测试行业正在经历一轮底层变化:测试对象从规则明确的软件系统&#xf…

2026/9/1 3:08:46 阅读更多 →
基于51单片机Proteus仿真的多功能热量计设计与实现

基于51单片机Proteus仿真的多功能热量计设计与实现

简介:本资源是一套面向电子类专业学生与单片机初学者的完整课程设计实践包,聚焦热量计量这一典型嵌入式应用场景,解决流速、流量、比热与热量多参数协同测量与显示的工程实现问题。资源包含Proteus仿真工程(含可运行电路图&#x…

2026/9/1 3:08:46 阅读更多 →
小说作者副业:用知漫剧把作品做成漫剧

小说作者副业:用知漫剧把作品做成漫剧

知漫剧(zz.jiaxunai.cn)价格实惠,一键生成漫剧,对新手非常友好。平台提供全流程教学,角色、声音、场景一致性都能解决。这篇内容写给小说作者,聊聊怎么把作品变成漫剧,多一条副业路子。 一、小说…

2026/9/1 3:08:46 阅读更多 →
基于计算机视觉的深度学习果蔬图片分类系统检测平台源码【适合毕设/课设/学习】Python+PyTorch

基于计算机视觉的深度学习果蔬图片分类系统检测平台源码【适合毕设/课设/学习】Python+PyTorch

💡实话实说: CSDN上做毕设辅导的都是专业技术服务,大家都要生活,这个很正常。我和其他人不同的是,我有自己的项目库存,不需要找别人拿货再加价,所以能给到超低价格。 博主介绍: &…

2026/9/1 3:08:46 阅读更多 →
SpringBoot人脸考勤系统实战:源码拆解、部署与排坑指南

SpringBoot人脸考勤系统实战:源码拆解、部署与排坑指南

简介:这是一套基于Spring Boot构建的完整人脸考勤系统源码,面向Java后端开发者与企业级应用学习者,解决传统考勤方式效率低、易代打卡等管理痛点,适用于校园、中小型企业等轻量级人脸识别考勤场景。资源包含262个文件,…

2026/9/1 3:08:46 阅读更多 →
繁易触摸屏程序模板设计:页面规划、变量命名与调试避坑实践

繁易触摸屏程序模板设计:页面规划、变量命名与调试避坑实践

简介:本资源是一套面向工业自动化工程师与HMI开发初学者的繁易触摸屏程序模板,聚焦人机界面快速开发痛点,解决从零搭建监控界面耗时长、逻辑重复、数据对接繁琐等实际问题。模板以江苏鸿顺60吨纯水系统为典型应用场景,预置界面布局…

2026/9/1 3:07:46 阅读更多 →

日新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/1 0:03:21 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/1 0:03:21 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/1 0:03:21 阅读更多 →

周新闻

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

每年校招季我都会接触不少准备数据库方向笔试的同学,看到最多的状态就是:简历上写着“熟悉 MySQL”“了解索引优化”,一碰到数据库管理工程师的笔试卷,却在索引、事务、锁、备份恢复这些题目上翻车。网易这套 2018 校园招聘数据库…

2026/8/31 13:13:27 阅读更多 →
数字电路时序基石:深入理解建立时间与保持时间

数字电路时序基石:深入理解建立时间与保持时间

1. 这不是“背公式”的事:时间参数到底在约束什么你翻过数字电路教材,一定见过这两个词:建立时间(Setup Time)和保持时间(Hold Time)。它们常被并列写在触发器(Flip-Flop&#xff09…

2026/8/31 9:02:46 阅读更多 →
蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

1. 项目缘起:从赛题到超声波测距机的诞生第八届蓝桥杯单片机设计与开发国赛的题目,我至今记忆犹新。它没有直接给出一个花哨的名字,而是用“超声波测距机”这个朴实无华的功能描述,精准地勾勒出了考核的核心。对于当时备赛的我而言…

2026/8/31 14:32:14 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/1 0:03:21 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/1 0:03:21 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/1 0:03:21 阅读更多 →