microservices - 微服务“加入”
问题描述
假设我们要创建带有微服务的应用程序。
我们有一些页面显示一些项目(产品)。
这些产品有多个连接(类别、标签、用户等)。
如果用户、类别数据在另一个服务中,我们如何管理和过滤结果?
例如,在 SQL 中,您创建 3,4 个连接并获取。
使用微服务——我必须过滤类别,然后过滤标签和产品——这可能比 SQL 查询的速度慢 10 倍。
另外,如果我有表“products_categories”,它为每个产品设置类别,哪个服务负责?产品服务还是品类服务?
谢谢
解决方案
在微服务架构中,有两种方法来处理它。
API 组合模式——这是最简单的方法,应尽可能使用。它的工作原理是让拥有数据的服务客户负责调用服务并组合结果。
命令查询职责分离 (CQRS) 模式——这比 API 组合模式更强大,但也更复杂。它维护一个或多个视图数据库,其唯一目的是支持查询。
我更喜欢使用 CQRS,定义一个视图数据库,它是一个只读副本,专门支持该查询。其余服务通过订阅(创建、更新、插入)数据所有者服务发布的事件来保持副本保持最新。
推荐阅读
- python - 使用 spaCy 时如何同时删除停用词和词形还原?
- python - 在 for 循环中创建一个包含变量名称的数据框列
- php - Apache 中的 Shell Exec 将输出发送到错误日志
- xamarin - 一段时间后要求验证
- python - 使用 python pandas 构建产品层次结构
- groovy - 具有多重赋值的 Groovy 空安全性
- jenkins-pipeline - 每次构建后如何将jenkinsfile的参数重置为null
- php - 出于安全原因已禁用 setlocale()
- azure-devops - 如何打印地形变量值?
- javascript - 我如何编写一个函数来从数组中随机选择一个名称而不选择最后一个元素