单个数据库 table 应该只由单个微服务表示,这是微服务的基本规则吗?
is it a cardinal rule of microservices that a single database table should only be represented by a single microservice?
单个数据库 table 应该仅由单个微服务表示,这是微服务的基本规则吗?我在一次采访中被问到。我的第一反应是它应该只是 1 比 1。但后来我想我想多了,认为可能有一些边缘情况可能是 acceptable.
那么,单个数据库 table 应该始终由单个微服务表示,这是微服务的基本规则吗?或者是否有一些边缘情况可能会被接受table?如果这是基本规则,那么是否有任何类型的标准首字母缩写词包含该原则?例如,关系数据库具有 ACID 主体。
这不是基本规则。但是,这是管理数据的最有效方式。设计模式不是一成不变的。您可以选择以不同的方式处理事情。
但是,每个微服务应该是独立的。这就是我们使用微服务架构的原因。但是,假设您使用多个微服务更新 table,那么它们(服务)就会变得相互依赖。松耦合不再存在。只要发生变化,这些服务就会相互影响。
这就是为什么您可能需要遵循以下范例:
- Private-tables-per-service – 每个服务拥有一组 tables
只能由该服务访问。
- Schema-per-service – 每个服务都有一个数据库模式
该服务专用
- Database-server-per-service – 每个服务都有自己的数据库
服务器。
更多信息请参考这里的数据管理部分:https://microservices.io/patterns/
它不仅仅是一个单独的微服务数据库,在开发微服务时还需要考虑其他因素,如代码库、配置、日志等
下面link有详细说明
单个数据库 table 应该仅由单个微服务表示,这是微服务的基本规则吗?我在一次采访中被问到。我的第一反应是它应该只是 1 比 1。但后来我想我想多了,认为可能有一些边缘情况可能是 acceptable.
那么,单个数据库 table 应该始终由单个微服务表示,这是微服务的基本规则吗?或者是否有一些边缘情况可能会被接受table?如果这是基本规则,那么是否有任何类型的标准首字母缩写词包含该原则?例如,关系数据库具有 ACID 主体。
这不是基本规则。但是,这是管理数据的最有效方式。设计模式不是一成不变的。您可以选择以不同的方式处理事情。 但是,每个微服务应该是独立的。这就是我们使用微服务架构的原因。但是,假设您使用多个微服务更新 table,那么它们(服务)就会变得相互依赖。松耦合不再存在。只要发生变化,这些服务就会相互影响。
这就是为什么您可能需要遵循以下范例:
- Private-tables-per-service – 每个服务拥有一组 tables 只能由该服务访问。
- Schema-per-service – 每个服务都有一个数据库模式 该服务专用
- Database-server-per-service – 每个服务都有自己的数据库 服务器。
更多信息请参考这里的数据管理部分:https://microservices.io/patterns/
它不仅仅是一个单独的微服务数据库,在开发微服务时还需要考虑其他因素,如代码库、配置、日志等
下面link有详细说明