我们正在构建一个高吞吐量、低延迟流处理应用程序。我们使用Apache作为消息传递平台和数据库。
卡夫卡流和阿尔帕卡卡夫卡框架似乎有很多共同点,但卡夫卡流似乎更像是卡夫卡的“本土化”,而Alpakka允许我们使用Akka框架的力量。
这两个框架之间的主要区别是什么?
发布于 2018-12-11 16:31:10
关键的区别在于卡夫卡流在输入端和输出端都需要卡夫卡主题。使用Alpakka,您可以为所有类型的输入和输出创建处理管道,而不仅仅是Kafka主题。此外,akka流DSL比Kafka流DSL更强大(也更复杂)。
发布于 2019-01-07 16:19:39
通过使用Alpakka,可以将各种类型的Sink和Flow (管道)与构建在Akka中的API连接起来。一个例子可以是同时使用Alpakka Kafka和Alpakka Cassandra来支持自动发布消息和保存到数据库。Akka中的测试工具包还可以使测试在整个系统中保持一致。
发布于 2022-07-22 07:22:03
我对两者都有经验。
对于卡夫卡流,在我看来,阿喀琉斯之踵是它使用的数据存储,RockDB,这是KTables和内部状态存储所必需的。RockDB是很好的加载单个值的方法,但是如果您对事物进行了迭代,在数据集大小为10万之后,性能会显著下降。您可以将数据存储更改为某些内容,但它实际上没有那么好的文档。
它还存在密钥/值数据库的缺点,您不能只在主键上提出问题,并且没有通配符匹配或任何东西,而且它无法实现CQRS模式。
另一方面,Akka并不那么友好,特别是如果你没有掌握流处理的概念的话。但是它不是与单一的持久化的选项耦合,它有组件来实现。Akka开发人员制作了大量的脑风暴,以提高卡夫卡流处理的性能。
另一个非常重要的问题,虽然有人可能会说它不相关,但是Kafka流没有背压机制,但是Alpakka Kafka有它,这在某些生产场景中是非常关键的,您可以用这个Netflix博客来说服自己。
简而言之,如果您想要快速开始流处理,从Kafka流开始,但是要准备好撞墙并切换到Alpakka流。
https://stackoverflow.com/questions/53727872
复制相似问题