是 Flume RPC 客户端异步的



我的要求是从高性能系统到Hadoop收集数据(只是字符串)。我正在使用Akka收集数据并将其发送到Flume。但是,出于实验目的,我想看看Flume是否可以单独完成这项工作。我已经准备好了FlumeRPCClient,它将与Flume收集器集群进行通信。

我的客户端扩展了org.apache.flume.api.LoadBalancingRpcClient。

问题是,FlumeRPCClient 是否是异步的。否则,发送方将受到性能影响。

谢谢。

为了保证事件传递,Flume代理需要将来自FlumeRPCClient的事件存储到通道(文件或内存通道,这取决于接收代理的配置)中。因此,它应该阻止,直到事件被接受并存储在通道中。您可能希望将事件分组到批处理中以提高性能,或者只是将它们转储到轮换文件并由单独的水槽代理进程读取。

你可以考虑来自 Log4j2 的异步追加器。它使用中断器将事件传送到您选择的任何追加器。

您将失去持久存储所有事件的保证(因为如果进程失败,碰巧在中断器中的任何事件都将丢失)。但是,如果您想要获得最佳性能,无论如何都必须进行这种权衡。

最新更新