当前位置: 首页 > 知识库问答 >
问题:

如何在微服务中持久化数据?

夏飞跃
2023-03-14

我刚开始接触微服务架构,我有几个关于数据持久性和数据库的问题。

所以我的理解是每个微服务都有自己的数据库(不一定,但通常)。但鉴于这种情况,请考虑一个包含用户、帖子和评论的常用社交媒体平台。将有两个微服务,一个用户的微服务和一个帖子的微服务。用户的数据库有一个用户表,帖子的数据库有一个帖子和评论表。

我的问题是关于帖子微服务,因为每个帖子和评论都有一个作者,所以通常我们会创建指向用户表的外键,但是这是在不同的数据库中。然后该怎么办?从我的角度来看,有两个选项:

  1. 向表中添加CNNId条目,但不添加外键约束。如果是这样,每当我们使用CNNId从用户的微服务中检索该用户的数据并且用户的数据消失时,应用程序中会发生什么?
  2. 在帖子数据库中创建一个作者表。如果是,除了用户的id之外,该表还应该包含哪些数据?

复制已经在用户数据库中的数据感觉不合适,但在没有FK约束的情况下使用用户的id也不合适。

共有1个答案

江光明
2023-03-14

需要注意的一件事是,数据增长是完全不同的

    < li >用户-

两个微服务设计看起来不错。我更喜欢你设计的选项1。复制还不错,在正常的数据库设计中,为了更好的读取性能,进行“非规范化”是正常的。这也有助于从用户表中分离,如果需要,可以帮助您选择不同的数据库。您的一些问题是,如果用户数据丢失并且帖子可用,这可以通过业务逻辑和API设计来处理。

 类似资料:
  • 我是微服务架构的初学者,我在很多博客中读到过,在微服务架构中,每个微服务都必须有自己的数据库。在我的情况下,它可能花费非常昂贵。 我的问题是,有没有可能使持久层本身成为微服务?这将具有允许其他微服务对数据库具有读/写访问权限的功能。谢谢

  • 我的应用程序有3个组件, 1) 一种面向用户的组件,接收请求并将其存储到数据库中。2)一个后端组件,从数据库中读取数据,进行处理并将其发送到外部系统。3) 存储用户输入的数据库 我如何测试流程是这样的:用户输入数据- 注意:我尝试使用ddl auto:update,但它不起作用。

  • 警告:容器被设计为无状态的实例,任何需要持久化的数据,请采用数据库或文件系统保存在容器实例之外,我们不对保存在容器内的数据提供任何保障。当 DaoCloud 需要迁移,或用户扩容容器资源时,容器内的数据将会遗失,并且无法找回。 使用数据库服务 DaoCloud 在服务集成模块中提供了 MySQL、Redis、MongoDB、InfluxDB 等数据服务,如您需要做内容的持久化保存,可以选择使用 M

  • 我想保留一个文件,即使在卸载了我的应用程序在Android11。多亏了Android10和11关于存储的更新,我不能再这样做了。另外,我不想使用数据备份或远程服务器,它必须离线。有什么建议吗?

  • 我在研究内存数据库的概念。有关这方面的文章说, 内存数据库系统是一种将数据完全存储在主存中的数据库管理系统。 他们讨论了这个概念的优点和缺点。 我的问题是如果这些数据库管理系统将数据完全存储在主存储器中, 停电后所有数据都消失了吗??? 还是有办法保护数据???

  • 我读了一些文章,看了一些视频,但在为这些微服务提供服务方面,没有找到具体的建议。我的理解是,他们应该使用自己的应用程序服务器。 我的问题是它们应该部署在不同的服务器上,还是没关系。 当它们在同一台服务器(计算机)上提供服务时,不会有端口冲突吗?