假设我有两个Kafka主题,A和B。我试图开发一个系统,从A中提取记录,对每个记录应用转换,然后将转换的记录发布到B。在本例中,转换涉及通过HTTP调用REST端点。
相对于Kafka来说,我很高兴看到Kafka项目已经解决了这类问题(消费-转换-发布)。不幸的是,我发现Kafka流中的转换正在阻塞操作。出于本能,我尝试以非阻塞、异步的方式调用HTTP端点.
这是否意味着卡夫卡流不会在这种情况下工作?这是否意味着我必须以阻塞的方式返回到调用REST端点?这是卡夫卡流可以接受的模式吗?基于流的数据处理对我来说还是比较新的,所以我并不完全熟悉它的并发模型。
发布于 2016-06-17 17:09:52
Update:在进一步研究这个问题之后,我不确定这是正确的答案.
我对卡夫卡和卡夫卡流(下称“卡夫卡”)并不陌生,但在遇到并考虑过类似的问题后,我的观点如下:
卡夫卡有两个突出的特点:
许多非常好的属性都是从这些特性中消失的。例如,我认为基于流的“事务”是最酷的之一。
但是,这些属性是否实际上是您想要的“特性”,当然,取决于应用程序。如果您不希望基于主题分区的具有并行性的强有序处理,那么您可能不希望在该应用程序中使用Kafka。
因此,在以下方面:
这是否意味着卡夫卡流不会在这种情况下工作?
它可以工作,但是通过增加分区来增加并行性。
这是否意味着我必须以阻塞的方式返回到调用REST端点?
是的,我想是的--但我不知道为什么会是“回归”。就我个人而言,这就是我喜欢Kafka的地方:阻止代码更简单。如果我想要更多的并行性,我可以运行更多的线程。毕竟没有共享的状态。
https://stackoverflow.com/questions/37764169
复制相似问题