【发布时间】:2018-05-01 14:35:02
【问题描述】:
我知道这个问题已经讨论了很多,但我想描述一下我的情况。
据我所知,有一些技术和最佳实践可以解决微服务架构中的共享数据库(事件溯源、CQRS...),但对于我而言,所有这些似乎都很复杂,让我来解释一下。
我使用 nodejs 构建了一个 REST API。此 API 允许您使用 GET 请求获取存储在 mysql 数据库中的数据。 现在我需要在同一个数据库中导入大量数据(每次创建一个新表)。第一个解决方案可能是向现有微服务添加一个新端点(POST 请求)以创建新表并添加新数据。
但我正在考虑创建一个不同的 nodejs 微服务(导入服务),因为导入功能可能非常耗时并且 nodejs 是单线程的;我不希望用户必须等待获取数据,因为另一个用户正在导入新数据。
该解决方案的问题是我必须在 2 个微服务之间共享同一个数据库。使用典型的方法(事件溯源、CQRS)可能是最好的解决方案,但它会使架构过于复杂(对于这个项目,我不需要解决数据一致性问题)。
我可以使用其他 2 个解决方案:
- 创建一个通用库来访问数据库并在微服务中使用该库
- “导入微服务”无需直接访问数据库,而是可以使用其他服务的 API 其余部分在新数据准备好导入后立即发布。
什么是最好的解决方案?您知道解决此问题的其他可能方法吗?
非常感谢
【问题讨论】:
-
您可能会因为这太笼统或意见问题而被关闭,但我看不出事件溯源或 CQRS 与此用例有什么关系。您的其他解决方案中的 1 和 2 都可以工作,我会说这一切都取决于。我会就这两种选择提出我的问题,并列出一些优点和缺点。
标签: mysql node.js database microservices