首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >分布式数据库设计体系结构用户用例&身份验证

分布式数据库设计体系结构用户用例&身份验证
EN

Stack Overflow用户
提问于 2018-03-31 05:36:38
回答 2查看 318关注 0票数 0

我现在正试图以分布式的方式为面向微服务的应用程序设计数据库。我的申请与大学管理有关。我有不同的大学,比如A,B,C。每一所大学都有不同的用户来使用他们的商业数据。现在,我计划为不同的大学设计不同的数据库,以存储它们的用户数据。因此,每所大学都有自己的用户数据库和管理其应用程序表的附加数据库。如果我有2所大学,那么我有2个用户详细信息数据库和其他2DB的应用程序表。

在这里,我的困惑是,当我搜索数据库设计时,我只看到了为存储所有用户保留一个通用数据库的方法(为所有大学的所有用户保留一个数据库)。因此,每个用户都混合在一个数据库中。

如果我为每一所大学都采用不同的数据库,那么是否有可能支持分布式DB体系结构模式和面向微服务的标准?还是需要为所有用户保留一个数据库?

如何找到适合于微服务/分布式数据库设计模式的方法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-31 06:14:36

实际上,可能有多种解决方案,而没有一个解决方案是最好的,最好的解决方案是适合您的产品需求的解决方案。

我认为最好是为您的每个客户(大学)提供单独的数据库,使数据始终保持隔离,即使发生了一些错误。而且,随着时间的推移,数据库可能会变得如此庞大,以至于在配置/管理单独的备份、为单个客户端进行清理等方面都会出现问题。

现在,对于单独的数据库来说,管理跨数据库的分布式事务面临着一个挑战,因为您不知道在许多数据库中哪一部分会失败。为了管理这一点,您可能必须在所有微服务中实现消息/事件驱动机制,并确保一致性。

关于消息/事件机制,下面是一个简单的用例场景,假设有两个服务"A“(用户注册)和"B”(电子邮件服务)。

  1. "A“临时注册用户并发布发送确认电子邮件的事件。
  2. 消息转到message
  3. 该消息由"B“接收。
  4. 确认电子邮件被发送给用户。
  5. 用户将邮件确认为"B“。
  6. "B“将用户确认事件发布给代理。
  7. "A“收到确认后,程序就完成了。

以上是最好的案例场景,即使是代理本身,问题也可能在中间发生。如果你认为你需要这个的话,你就得深入进去。

一些可能有帮助的链接。

http://how-to-implement-a-microservice-event-driven-architecture-with-spring-cloud-stre

跨微服务交易指南

票数 1
EN

Stack Overflow用户

发布于 2018-04-01 07:38:59

我不认为这是一个有效的设计,使用每个客户端的数据库,这是一个多租户的体系结构实践,而每个微服务的数据库是一个微服务体系结构实践。你把事情搞混了。

如果要使用微服务体系结构,那么最好将其设计为有限制的上下文,并且每个上下文都有自己的数据库,以实现微服务的主要规则Autonomy

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49584617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档