使用Kafka将Web层与业务逻辑代码分离

时间:2016-03-07 12:40:50

标签: apache-kafka

我有一些概念性思维模块。我正在考虑使用Kafka如下:

---http-requests---> [Web Tier]

[Web Tier] ----composes message and publishes----> [Kafka Topic]

[Kafka Topic] <----consumes message------ [Engine Logic]

[Engine Logic] -----computes, api-calls, publishes result message----> [Kafka Topic]

[Kafka] ---???? somehow get result message to Web Tier---> [Web Tier]

[Web Tier] -----renders HTML and sends http response--->

使用非阻止的网络服务器(例如Jetty),http请求将保持打开状态&#39;但不会阻止。是否可以以请求/响应方式使用Kafka?也就是说,Web Tier是否可以向主题发布消息,然后Kafka会知道它必须提供响应吗?或者是否有责任对网站主题进行轮询并查看是否有响应?

我想我要问的是使用Kafka作为界面的最佳方式是什么? Web层和引擎逻辑依赖于什么,以便Web层和引擎之间没有直接耦合?感谢。

1 个答案:

答案 0 :(得分:0)

我想说Kafka不适合你的用例。

Web Tier负责轮询主题并查看是否有响应。

我预见到的几个问题:

  1. Kafka旨在仅在请求时传递消息。在您的示例中,一旦数据到达第二个Kafka主题。它会坐在那里直到Web Tier对它进行调查。
  2. 没有很好的方法来请求来自Kafka的特定消息,SO Question。在您的Web层中,如果您轮询Kafka服务器,您可能会得到10条消息,您可能会得到0.如果您收到10条消息,则必须检查并查看这10条消息中是否有您正在寻找的消息。如果他们不是,你必须再次进行民意调查。可能会多次执行,具体取决于您的特定引擎逻辑完成所需的时间。
  3. 在上面提到的SO问题中,OP在评论中表示他使用了Mongo DB,因此他可以查询特定的消息。

相关问题