摘要:今天从设计角度来解析的架构组成及其特点。实际上处理的就是。负责消费从上游节点获取的,并将其放到中,目前支持等数据流。从取数据并将其放入下游节点。节点中的和被包含在一个事务中。接收上游的,若其中一个接收异常,则所有的都丢弃,这将导致数据重发。
Flume是Apache开发的一款多平台、分布式、高可用的数据收集聚合系统。今天从设计角度来解析Flume的架构组成及其特点。
首先谈一下数据流(data flow)。Flume本质上是对数据流的处理,其定义数据处理的最小单元是event,一个event由包含数据的有效负载(payload)和一组可选属性组成。Flume实际上处理的就是events flow。
Flume在数据收集和聚合上有很大的灵活性,这得益于其整个系统可以由单个或者多个节点(agent)拼接而成。每个节点负责从上游数据源向下游数据接收方分发event。每个节点既可以作为数据源也可以作为数据接收方。
在节点的内部,agent由source、channel和sink组成。source负责消费从上游节点获取的events,并将其放到channel中,目前Flume支持Avro、Thrift、Syslog、Netcat等数据流。channel分为两种类型,一种是memory channel,它适合高吞吐量场景,但节点挂掉后数据可能会丢失。另一种是file channel,也就是channel里的数据会同步到硬盘里,节点意外挂掉后数据可恢复,但处理时间会稍长一些,Flume默认使用file channel。sink从channel取数据并将其放入下游节点。
下图是从多个web server数据源收集数据,并统一聚合到一个节点,然后将数据导入到hdfs中。
https://flume.apache.org/_images/UserGuide_image02.png
Flume节点还支持更复杂的多源、多数据沉积池的组合,如下图:
https://flume.apache.org/_images/UserGuide_image01.png
Flume采用事务来保证数据传输的可靠性。每个event只有当被确认传递到下游节点或者数据沉积池之后才把该event从channel中删除。节点中的sources和sinks被包含在一个事务中。source接收上游的events,若其中一个event接收异常,则所有的events都丢弃,这将导致数据重发。同理,sink在将events导入到下游数据沉积池时,任何一个event发送异常,则所有的events都将重新发送。
具体如何使用配置请参考:
https://flume.apache.org/Flum...
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/11761.html
摘要:包括服务的自动化部署,以及链路监控等并未细说提及。结语诚然,整个服务架构可以轻松应对千万级并发。期望,整个服务架构能伴随公司继续成长壮大。 背景介绍 回顾 ShareSDK,顾名思义,分享的SDK组件,公司基于互联网,早期主要以ShareSDK起家。今日思来,很幸运,能陪着ShareSDK一起成长。 showImg(https://segmentfault.com/img/bV0Wo5...
阅读 1268·2021-11-11 10:57
阅读 3690·2021-09-07 10:10
阅读 3429·2021-08-03 14:03
阅读 3046·2019-08-30 13:45
阅读 659·2019-08-29 11:19
阅读 1020·2019-08-28 18:07
阅读 3066·2019-08-26 13:55
阅读 774·2019-08-26 12:17