先将数据放入 Kafka 再放入数据库,或者以其他方式,优缺点是什么?
一个例子: 用户执行 REST (POST) 调用来存储比方说产品。通常我会在后端接听这个电话并将正文保存到数据库中(在验证和所有......之后)。 接听这个电话并将数据存储在 Kafka fist 中然后将其保存到数据库(在这种情况下,数据库是 kafka 消费者)是否是最佳实践。
还是先存到数据库,再传给kafka比较好?
谢谢
最佳答案
让我们以您的用例为例,用于存储产品的 api 调用假设为 PRODUCT1:
你的数据库:product_table(product_id, product_name,product_info)
API伪代码:
- 验证产品信息
- 保存——首先在kafka或DB中保存
方法 1 -
首先保存到 kafka 意味着您可能会在一段时间后在数据库中看到该结果,您会将产品 ID 返回给用户,如果用户想要填充产品 ID,则它是不可见的。对我来说,这不是正确的方法,因为您将需要在 UI 端处理很多事情以应对这种延迟。
方法 2 - 首先保存到 db,然后保存到 kafka,有两种情况: 1. kafka 推送在代码中是同步的——在这种情况下,发送到 kafka 失败,这在您的业务案例中非常关键,因为其他微服务是依赖的。这不是正确的方法,但如果在 <0.001% 的时间内推送失败并且您从数据库中删除产品并将异常返回给用户,则可以。我认为这完全没问题。
- kafka 推送是通过轮询数据库进行更改并将更改放入 kafka(为此阅读 EventSourcing):在这种情况下,您将获得 100% 的保证,但会有一些小的延迟。这你也可以使用
关于database - 数据先放在Kafka还是Database?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52983892/