如何为微服务重构数据模型?
例如,我有一个整体应用程序。 让我们将其命名为“用户和事件CRUD服务”。
用户和事件在物理数据库模型方面紧密耦合。让他们为他们建立数据模型:
Users table:
name PK
Events table:
title PK
creator_user_name FK (points to Users:name)
现在我想将我的整体应用程序划分为两个微服务。让我们命名吧
我在想关于分离上述数据模型还是不分离。
第一种方法是: 继续使用上面的数据模型,因此两种服务都使用一个数据库。
第二种方法是: 重新构造我的数据模型,使其看起来像这样(每个服务都有自己的数据库):
DB 1: users
Users table:
name PK
DB 2: events
Event table:
title PK
creator_user_name (indexed)
考虑这种情况,哪种方法最好?在那种情况下,最佳做法是什么?
我想我可以简单地选择第一种方法,但是这没有错,但是 那么方法2呢?它可以用于int实践吗?那会在以后引起一些令人惊讶的后果吗? 我想方法2也完全可以,但是我不确定,因此需要帮助进行澄清。
答案 0 :(得分:0)
这样想:随着时间的流逝,您向系统中添加了越来越多的服务。
如果您所有的服务都访问同一个数据库,那么最终您会将数据库作为所有服务的中央联系人。进行更改将非常困难,因为很难知道哪种服务使用哪些表。
如果您想正确执行操作,请选择方法2 。 每个服务都有其自己的数据库,微服务除了拥有自己的数据库之外,不应访问数据库。 必要时,服务可以调用另一个服务(精心设计的方法)
最好的问候 布林