首页 > 解决方案 > 微服务:保持请求状态的数据库设计

问题描述

我正在尝试在我的后端应用程序中实现微服务架构,我的一个服务从另一个服务接收一些数据,并且这些数据存储在 MySQL 数据库中,一个 cronjob 从数据库读取这些数据并向另一个服务发送多个请求以完成一些工作像帐户创建,计费信息创建等,所有这些请求都适用于数据库中的现有记录,我的问题是处理失败,这个请求可能因任何原因失败,我如何设计数据库来处理失败和重试?

我应该创建多个列来处理状态吗?像 ACCOUNT_REQUESTED、ACCOUNT_CREATED_FAILED、account_create_failed_count 和类似的东西

标签: microservices

解决方案


您应该有一个维护状态的列(而不是多个列),因为任何实体一次只能有一个状态。正如 usman 所提到的;根据您的业务逻辑,您可以有重试逻辑等。.. 如果工作流程真的很复杂;也有一些开源解决方案;但我不认为你的案子那么复杂......正如乌斯曼所说的那样;您可以使用一些消息传递解决方案(例如 Kafka)使事情变得异步。


推荐阅读