use*_*646 5 database apache-kafka
先将数据放入 Kafka,然后再放入数据库,或者其他方式,优点和缺点是什么?
示例:用户执行 REST (POST) 调用来存储产品。通常我会在后端接听这个调用并将正文保存到数据库中(在验证之后......)。最佳实践是接听此调用并将数据存储在 Kafka 中,然后将其保存到数据库(在本例中,数据库是 kafka 消费者)。
还是先保存到数据库,然后发送到kafka比较好?
谢谢
让我们以您的用例为例来说明这两种情况,用于存储产品的 api 调用可以说 PRODUCT1 :
您的数据库:product_table(product_id,product_name,product_info)
API伪代码:
方法 1 -
首先保存到 kafka 意味着您可能会在一段时间后在数据库中看到该结果,您将把产品 ID 返回给用户,如果用户想要填充产品 ID,它是不可见的。对我来说,这不是正确的方法,因为您将需要在 UI 方面处理许多事情来处理这种延迟。
方法 2 - 首先保存到数据库,然后保存到 kafka 有两种情况: 1. kafka 推送在代码中同步 - 在这种情况下发送到 kafka 失败,这在您的业务案例中非常关键,因为其他微服务是依赖的。这不是正确的方法,但是如果推送失败,那么在 <0.001% 的时间内可以,然后从数据库中删除产品并向用户返回异常。我认为这完全没问题。