前言

本文隶属于专栏《1000个问题搞定大数据技术体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!

本专栏目录结构和参考文献请见1000个问题搞定大数据技术体系

正文

在设计 Flume 架构时,可靠性是需要遵循的核心原则之一。

为了实现这种可靠性, Flume 允许用户配置可靠性级别。

具体的级别如下:

End-to-end

当可靠性设置成这个级别时,只要发送端(接收 event 的 Agent )是活跃的状态,发送到 Flume 的 event 就一定能到达另一端。

为了实现这个级别的可靠性,接收 event 数据的 Agents 会把数据以预写式日志( Write Ahead Log , WAL )的方式写人磁盘。

当 event 数据到达预定的终端时,会发送一个收条给到始发的 Agent ,然后该 Agent 才会移除这条数据。

这个级别可以承受原始 Agent 之后的任何组件故障。

正如前面指出的那样,可靠性越高,可扩展性就越低,这个级别是 Flume 能提供的最高的可靠性级别。

Store on failure

当可靠性设置成这个级别时, event 数据经过不同的 Agent (跳转) event 的发送方 Agent 只会在接收方 Agent 发生故障时才将数据保存到磁盘。

只有在收不到来自下一跳的确认时,才会向磁盘写入事件的详细信息。

这个级别更加实用,但是如果发生了毫无征兆的失败,事件数据有可能永久丢失。

Best-effort

这个级别的可靠性是最弱的,也是最轻量级的, event 不经写入磁盘而直接被转发给下一跳,也不依赖下一个 Agent 的收条读者可以根据自身的应用需求来选择正确的可靠性级别,

并请始终谨记,可靠性越高可扩展性就越差,并且维护成本也越高。

上一篇 下一篇