我打算使用微服务架构来实现我们的网站。我想知道在服务之间共享数据库是否正确,或者最好为每个服务分别建立一个数据库。在这方面,我可以考虑为所有服务建立一个通用数据库还是违反了微服务架构的本质?针对微服务架构的数据库设计
1
A
回答
5
如果您共享相同的数据库,那么您将失去微服务的两个最重要的优点:strong cohesion and loose coupling (page 25)。
如果你不共享表中的数据库,你可以共享同一个数据库。例如,microservice1
使用table1_1
和table_1_2
和microservice2
使用table2_1
和table2_2
。当我说使用我的意思是读写。一个微服务不会读取,也不会写在另一个的表上。
5
微服务优惠解耦。您必须将您的应用程序分解为独立的域。每个域可以有一个数据库。如果其他MS需要访问某些其他微服务拥有的数据,则必须通过网络进行通信。
如果您觉得依赖服务过多且网络呼叫过多,则可以定义一个域,将相关服务聚集在一起。
例如 - 假设我有一个在线测试评估服务,公司的经理可以发布测试,他可以查看其部门中所有员工的结果。
我对这种情况下微服务将是:
初步设计
- 用户服务:对于登录和用户信息。
- 测试服务:评估测试的服务。
- 员工:处理员工详细
- 公司:处理组织CRUD
- 部:处理部门CRUD
它分解之后,好像员工,机构和部门的服务将使得过多的网络/ API调用,因为它们彼此紧密相关。所以最好将它们聚类。
更新设计
- 用户服务:对于登录和用户信息。
- 测试服务:服务评估测试
- 组织:处理公司,员工和部门相关的操作。
每个服务都可以拥有自己的数据库,并且可以独立部署。用户和测试服务可以使用mongoDB或任何NoSql数据库,组织服务可以使用RDBMS。
希望这会有所帮助。
相关问题
- 1. 微服务架构
- 2. 数据库架构设计的关系
- 3. 微服务设计
- 4. 微服务架构:查询服务或数据备份
- 5. 微服务架构依赖
- 6. 微服务架构:跨业务的数据共享
- 7. 数据库架构设计:更优化的架构
- 8. 针对MongoDB和Mongoose的电子商务架构设计
- 9. 针对电子商务的数据库设计问题
- 10. 数据仓库架构设计 - 如何改进架构模型
- 11. 客户端服务器架构设计
- 12. 微服务架构中的断路器
- 13. 微服务:数据库和微服务实例
- 14. 服务列表MySQL数据库设计
- 15. 在微服务架构中处理用户界面数据?
- 16. 针对数据量非常大的数据库设计
- 17. 服务的框架设计
- 18. 微服务或SOA就绪架构
- 19. 收发邮件在微服务架构
- 20. Pony ORM和微服务架构
- 21. 数据库结构/设计
- 22. 设计数据库结构
- 23. 处理微服务架构中的Web服务的API网关
- 24. 针对复杂数据的Solr架构设置帮助
- 25. 简单的计划 - 架构数据库
- 26. 微服务每个数据库表
- 27. 针对每张纸的学生分数的数据库设计
- 28. 针对大量数据优化数据库表格设计
- 29. 糟糕的数据库架构设计的升级策略
- 30. 设计一个本地化的数据库架构
感谢您的回答。但在我的应用程序中,有一种情况是其中一种服务使用来自其他服务的数据。在这种情况下,我是不是冒险在服务之间和从客户端到不同服务之间进行太多的API调用? – user2288991
微服务仅使用网络进行通信 –
您可能需要查看自己的设计,找到有界的上下文,以便很好地划分垂直线,这样您就不需要跨越服务边界来执行数据更新(状态更改),数据读取不太关心...... –