将数据放在Kafka还是数据库中?

use*_*646 5 database apache-kafka

先将数据放入 Kafka,然后再放入数据库,或者其他方式,优点和缺点是什么?

示例:用户执行 REST (POST) 调用来存储产品。通常我会在后端接听这个调用并将正文保存到数据库中(在验证之后......)。最佳实践是接听此调用并将数据存储在 Kafka 中,然后将其保存到数据库(在本例中,数据库是 kafka 消费者)。

还是先保存到数据库,然后发送到kafka比较好?

谢谢

tec*_*mer 5

让我们以您的用例为例来说明这两种情况,用于存储产品的 api 调用可以说 PRODUCT1 :

您的数据库:product_table(product_id,product_name,product_info)

API伪代码:

  1. valiadte产品信息
  2. 保存 - 首先在 kafka 中或在 DB 中

方法 1 -

首先保存到 kafka 意味着您可能会在一段时间后在数据库中看到该结果,您将把产品 ID 返回给用户,如果用户想要填充产品 ID,它是不可见的。对我来说,这不是正确的方法,因为您将需要在 UI 方面处理许多事情来处理这种延迟。

方法 2 - 首先保存到数据库,然后保存到 kafka 有两种情况: 1. kafka 推送在代码中同步 - 在这种情况下发送到 kafka 失败,这在您的业务案例中非常关键,因为其他微服务是依赖的。这不是正确的方法,但是如果推送失败,那么在 <0.001% 的时间内可以,然后从数据库中删除产品并向用户返回异常。我认为这完全没问题。

  1. kafka 推送是通过轮询数据库的更改并将更改放入 kafka(请阅读有关 EventSourcing 的内容):在这种情况下,您将获得 100% 的保证,但会有一些小的延迟。这你也可以使用