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

微服务数据库体系结构

成和悌
2023-03-14

我经常听说,在微服务架构中,对于每一个微服务,我们都必须创建单独的数据库。

但是,如果我必须在不同的数据库中维护外键约束,这是不可能的。就像我在身份验证微服务中有一个用户表,我想在我的目录服务中使用它(用户表中的用户 ID 列)

那么如何解决呢。

感谢提前

共有2个答案

咸高谊
2023-03-14

使用Saga模式维护跨服务的数据展示一致性。

传奇是一系列本地事务。每个本地事务都会更新数据库并发布一条消息或事件,以触发 saga 中的下一个本地事务。如果本地事务因违反业务规则而失败,则 saga 将执行一系列补偿事务,这些事务撤消前面的本地事务所做的更改。

袁子瑜
2023-03-14

您可以通过事件溯源在目录服务中维护用户表的卷影副本(仅包含有用的信息,例如,只有userid列)(例如,您可以使用兔子MQ或apache kafka进行异步消息传递)。

目录服务将以只读模式使用用户信息。但是,仅当用户信息不经常更改时,此解决方案才有效。否则,异步通信可能效率低下且成本高昂。在这种情况下,您可以实现从目录服务到用户服务的 API 调用,以便对用户数据执行任何验证。

 类似资料:
  • 我们有一个单片应用程序,我们现在正在使用容器将其转换为微服务架构。 每种方法的利弊是什么?根据微服务最佳实践,什么是最佳方法?*

  • 我不清楚如何取回购买服务不保存的数据--例如:用户的全名。当试图通过购买用户名进行更复杂的搜索购买时,问题会变得更严重。 我认为,显然可以通过在两个服务之间同步用户来解决这个问题,方法是在用户创建时广播某种类型的事件(并在购买服务端只保存相关的用户属性)。在我看来,这远非理想。当你有数百万用户时,你如何处理这个问题?您会在每个使用用户数据的服务中创建数百万条记录吗? 另一个明显的选择是在用户服务端

  • 我正在从事一个基于微服务架构的大型项目,所以考虑一下我有10个服务,其中一些有自己的数据库,这些数据库采用不同的技术(mysql、mongodb、elastic等) 那么,备份和恢复服务集合的最佳做法是什么? 真正的问题是这些数据库相互关联,例如,在我的逻辑后端服务器中,我保留来自oauth服务器的每个用户的oauhId, 现在考虑分别恢复这两个数据库,现在logic server中的my use

  • 我最近开始使用Node.js,我必须构建一个应该使用多个Express.js服务的体系结构。其中一些服务必须位于一台服务器上,另一台则位于其他服务器上。我想构建一个基础服务(像API网关),但是我不知道在这个网关和微服务之间,或者在两个微服务之间进行通信的合适方式是什么。 目前我正在研究一个基于此的解决方案:

  • 我有一个微服务体系结构,它的日志必须发送到远程Kafka主题。在它旁边,本主题的使用者将把日志发送到麋鹿堆栈(另一个团队) 我想要一个专用的微服务(fwk proxy elasticsearch),其职责是收集其他人的日志,并将其发送到远程Kafka主题。 将从我的微服务聚合的所有日志分派到fwk-代理-弹性搜索微服务的最佳协议是什么? 我希望这个模式不会重复远程Kafka主题的安全配置。我想把它

  • 另一种方式,我认为是水平分割当前结构。所以我的领域是基于一些教育大学。因此,一半的大学低于一分贝,剩下的将低于另一分贝。并根据两个地区部署服务(两个针对两套大学)。 目前,我决定继续采用最后提到的方法。我对这些类型的任务是新的,因为它涉及一些体系结构任务。我也是微服务和分布式数据库领域的初学者。有人能证实我的方法能解决我的问题吗?我可以继续我的第二种方法--根据域对象对数据库进行水平分区吗?