如何将数据库中的数据从一个服务器微服务更新到另一个?
Posted
技术标签:
【中文标题】如何将数据库中的数据从一个服务器微服务更新到另一个?【英文标题】:How to update the data in the database from one server micro-service to another? 【发布时间】:2021-08-15 10:34:33 【问题描述】:我在后端有两个微服务/模块:
-
ugc
实用程序
ugc 是包含所有数据并附加数据库的核心微服务。
实用程序是一个独立的工具,它没有自己的数据库,负责处理资源和时间密集型的工作,例如在视频中添加水印、从视频中提取缩略图等。
对于水印视频处理,我们有一个队列,其发布端在ugc模块,消费者端在utilities来实际处理视频。
现在,每当用户上传视频时,客户端会在 ugc 模块中调用一个 API,并将详细信息存储在 DB 中并将视频推送到队列以生成带水印的视频。
现在,utilities 模块从队列中挑选每个项目并对其进行处理,完成后,我们需要将更新后的视频 URL 存储在 ugc 数据库中。现在要从 utilities 模块更新数据库,我们有两个选择:
-
在 ugc 模块中创建一个 API 来接收水印视频 URL 并从 utilities 中点击它
使用数据库凭据连接 utilities 模块中的 ugc 数据库,并使用对象 ID 直接更新模型对象。
你认为正确的方法是什么?
第一个选项是不是过度设计步骤?
【问题讨论】:
【参考方案1】:使用选项 1,您似乎希望将数据库访问保留在 ugc 内。这不是问题,但是如果您创建另一个需要数据库的服务怎么办?你想做什么?
如果您想在服务中保留数据库访问权限,那么我认为最好为此创建一个独占服务并通过它让其他所有访问权限。
它在查询数据库方面不太灵活,因为您必须为每个新查询创建一个端点。现在你必须保持两件事,数据库和数据库服务。
使用选项 2,您必须有一种方法将您的凭据分发到您的所有服务。您可能希望每个服务都有一个用户并相应地设置权限。
我认为没有正确的方法,只有偏好,我个人更喜欢选项 2,因为它更易于设置和维护。
【讨论】:
以上是关于如何将数据库中的数据从一个服务器微服务更新到另一个?的主要内容,如果未能解决你的问题,请参考以下文章