microservices - 微服务:保持请求状态的数据库设计
问题描述
我正在尝试在我的后端应用程序中实现微服务架构,我的一个服务从另一个服务接收一些数据,并且这些数据存储在 MySQL 数据库中,一个 cronjob 从数据库读取这些数据并向另一个服务发送多个请求以完成一些工作像帐户创建,计费信息创建等,所有这些请求都适用于数据库中的现有记录,我的问题是处理失败,这个请求可能因任何原因失败,我如何设计数据库来处理失败和重试?
我应该创建多个列来处理状态吗?像 ACCOUNT_REQUESTED、ACCOUNT_CREATED_FAILED、account_create_failed_count 和类似的东西
解决方案
您应该有一个维护状态的列(而不是多个列),因为任何实体一次只能有一个状态。正如 usman 所提到的;根据您的业务逻辑,您可以有重试逻辑等。.. 如果工作流程真的很复杂;也有一些开源解决方案;但我不认为你的案子那么复杂......正如乌斯曼所说的那样;您可以使用一些消息传递解决方案(例如 Kafka)使事情变得异步。
推荐阅读
- python - python:如何同时监听鼠标点击和按键
- python - Pandas 数据框:根据另一列中的值操作列(不迭代行)
- cmake - 如何告诉 CMake 在哪里可以找到库的目录?
- amazon-web-services - AWS CloudFormation 中的嵌套堆栈没有改变
- c - 动态分配结构指针数组
- javascript - 如何阻止按钮向下滚动到联系表格?
- xslt - 使用 XSL 模板更改基于 CDATA 的 XML 格式
- javascript - Ember JS: Call component action from another component
- microsoft-graph-security - 使用 Graph Security API 将 Azure 安全数据拉入 Power BI Desktop:如何在 Azure AD 中设置权限
- c# - dotnet Core - 在我的项目中为 streamreader 获取 csv 文件的正确位置