我现在正试图以分布式的方式为面向微服务的应用程序设计数据库。我的申请与大学管理有关。我有不同的大学,比如A,B,C。每一所大学都有不同的用户来使用他们的商业数据。现在,我计划为不同的大学设计不同的数据库,以存储它们的用户数据。因此,每所大学都有自己的用户数据库和管理其应用程序表的附加数据库。如果我有2所大学,那么我有2个用户详细信息数据库和其他2DB的应用程序表。
在这里,我的困惑是,当我搜索数据库设计时,我只看到了为存储所有用户保留一个通用数据库的方法(为所有大学的所有用户保留一个数据库)。因此,每个用户都混合在一个数据库中。
如果我为每一所大学都采用不同的数据库,那么是否有可能支持分布式DB体系结构模式和面向微服务的标准?还是需要为所有用户保留一个数据库?
如何找到适合于微服务/分布式数据库设计模式的方法?
发布于 2018-03-31 06:14:36
实际上,可能有多种解决方案,而没有一个解决方案是最好的,最好的解决方案是适合您的产品需求的解决方案。
我认为最好是为您的每个客户(大学)提供单独的数据库,使数据始终保持隔离,即使发生了一些错误。而且,随着时间的推移,数据库可能会变得如此庞大,以至于在配置/管理单独的备份、为单个客户端进行清理等方面都会出现问题。
现在,对于单独的数据库来说,管理跨数据库的分布式事务面临着一个挑战,因为您不知道在许多数据库中哪一部分会失败。为了管理这一点,您可能必须在所有微服务中实现消息/事件驱动机制,并确保一致性。
关于消息/事件机制,下面是一个简单的用例场景,假设有两个服务"A“(用户注册)和"B”(电子邮件服务)。
以上是最好的案例场景,即使是代理本身,问题也可能在中间发生。如果你认为你需要这个的话,你就得深入进去。
一些可能有帮助的链接。
http://how-to-implement-a-microservice-event-driven-architecture-with-spring-cloud-stre
跨微服务交易指南
发布于 2018-04-01 07:38:59
我不认为这是一个有效的设计,使用每个客户端的数据库,这是一个多租户的体系结构实践,而每个微服务的数据库是一个微服务体系结构实践。你把事情搞混了。
如果要使用微服务体系结构,那么最好将其设计为有限制的上下文,并且每个上下文都有自己的数据库,以实现微服务的主要规则Autonomy
https://stackoverflow.com/questions/49584617
复制相似问题