【发布时间】:2015-10-12 23:01:45
【问题描述】:
我有一个关于微服务社区的问题。我将举一个教育领域的例子,但它适用于每个微服务架构。
假设我有 student-service 和 licensing-service,其业务要求是学生数量受许可证限制。因此,每次创建学生时都必须进行许可检查。有多种类型的许可证,因此许可证的类型必须包含在操作中。
我的问题是您发现哪种方法在实践中更好:
- 构建调用这 2 个服务的复合服务
- 将学生服务与许可服务耦合,以便在调用 createStudent 时,学生服务会调用许可服务,并且只有在完成后才会创建学生
- 使用基于事件的架构
人们谈论微服务架构更像是一个图表而不是层次结构,而选项 1 有点将其变成了一个层次结构,在这个层次结构中你会得到越来越粗糙的组合。其他缺点是它会混淆客户端应该实际使用的服务,并且存在一些重复,因为复合 API 必须包含调用下游服务所需的所有参数。 它确实有一个很大的好处,因为它为您提供了一个自然的地方来进行故障处理、编排和处理一致性。
选项 2 似乎也有缺点:
许可 API 必须泄漏到学生 API 中,以便您可以指定许可限制。
它给学生服务带来了很多负担,因为它必须处理所有依赖服务的一致性
- 由于在创建学生时需要更多服务做出反应,我可以看到依赖关系图迅速失控,并且服务必须处理这种复杂性,除了它自己用于管理学生的逻辑。
选项 3 在脱离天堂的同时,我真的认为这不会奏效,因为这一切都是由 UI 触发的,人们并不真正习惯“在这个新学生之前去做其他事情出现”的方法。
谢谢
【问题讨论】:
标签: web-services architecture microservices