Mysql 微服务共享数据库

Mysql 微服务共享数据库,mysql,node.js,database,microservices,Mysql,Node.js,Database,Microservices,我知道这个问题已经讨论了很多,但我想描述一下我的情况 据我所知,有一些技术和最佳实践可以解决微服务体系结构中的共享数据库(事件源、CQR…),但所有这些对于我的案例来说似乎都很复杂,让我解释一下 我使用nodejs构建了一个restapi。此API允许您使用GET请求获取存储在mysql数据库中的数据。 现在我需要在同一个数据库中导入大量数据(每次创建一个新表)。第一种解决方案可能是向现有的微服务添加一个新端点(POST请求),以创建新表并添加新数据 但是我正在考虑创建一个不同的nodejs微服

我知道这个问题已经讨论了很多,但我想描述一下我的情况

据我所知,有一些技术和最佳实践可以解决微服务体系结构中的共享数据库(事件源、CQR…),但所有这些对于我的案例来说似乎都很复杂,让我解释一下

我使用nodejs构建了一个restapi。此API允许您使用GET请求获取存储在mysql数据库中的数据。 现在我需要在同一个数据库中导入大量数据(每次创建一个新表)。第一种解决方案可能是向现有的微服务添加一个新端点(POST请求),以创建新表并添加新数据

但是我正在考虑创建一个不同的nodejs微服务(导入服务),因为导入功能可能非常耗时,而且nodejs是单线程的;我不希望用户必须等待获取数据,因为另一个用户正在导入新的数据

这个解决方案的问题是,我必须在两个微服务之间共享同一个数据库。使用典型的方法(事件源,CQRS)可能是最好的解决方案,但它会使架构变得太复杂(对于这个项目,我不需要解决数据一致性问题)

我还可以使用其他两种解决方案:

  • 创建一个公共库来访问数据库并在微服务中使用该库
  • “import microservice”不直接访问数据库,可以使用其他服务的API其余部分在新数据准备好导入后立即发布新数据
  • 最好的解决方案是什么?你知道解决这个问题的其他可能方法吗


    非常感谢

    在微服务领域,服务应该按照每个服务所代表的业务领域进行划分,而不是按照您建议的特定技术功能进行划分。这是一个架构设计,我不建议仅仅为了解决一些特定的技术功能而忽略它

    解决问题的方法不是将微服务拆分为同一业务域中的两个服务


    您的问题是性能问题。性能问题通常通过扩展来解决。通过部署多个容器来复制您的服务是完全正常的。Docker默认为您提供此选项,在部署服务时,您可以指定要部署的副本数量。

    您可能会因为过于笼统或意见不合而被关闭,但我看不出事件源或CQR与此用例有什么关系。你的其他解决方案中的1个和2个都会起作用,我认为这一切都取决于你。我想就这两个备选方案提出我的问题,请列出一些优缺点。