微服务架构依赖
Microservice Architecture dependency
我已经阅读了很多关于微服务架构的文章,但有一件事我不明白如何实现,希望你能帮助我...
假设我有一个 web-api-endpoint,它接收 OrderMicroservice 负责处理的订单。下订单时必须更新库存,以便 OrderMS 向订阅者发布事件(pub/sub 使用例如 Nats)并且 InventoryMS 将更新库存,因为它正在订阅当前 event/message....我想要拥有一个松散耦合的体系结构,并使用对给定信息感兴趣的 modules/MSs 的异步调用。
如果您有 1 个 InventoryMS 实例,给定的场景将工作得很好,但是如果您水平缩放 InventoryMS 会发生什么情况,即有 5 个 InventoryMS 实例并且它们都订阅了 inventory.change.event 并将尝试更新库存?
我应该使用什么样的体系结构或消息模式来处理像这样的横向调用 MS 的场景,以便在 MS 相互依赖时我可以有一个松散耦合的体系结构?
一种方法是内部通信是通过使用断路器模式的 REST 调用进行的,但后来我觉得我构建了一个具有一定智能(断路器)的 MS 单体......
感谢您的帮助!
使用点对点消息传递模型,只有一个消费者会收到一条消息。在 pub/sub 模型中,所有订阅者都会收到通知。
示例 ActiveMQ。
您仍然可以使用 pub/sub 模型,但您需要设置多个实例,以便只有一个实例会收到消息。具体要看pub/sub机制
例如,在 AMQP 系统(如 RabbitMQ)中,您将在交易所发布事件。消费者服务将 bing 到该交换的队列,并且同一服务的所有实例将从同一队列读取(因此只有一个会处理任何给定的消息)
另一个例子是 Kafka - 在 Kafka 中,同一服务的所有实例都将使用相同的 consumer group - 因此,同样,每个订阅bing 服务只有一个实例会收到消息
其他 pub/sub 系统会有类似的解决方案。
指向特定实例并不是一个很好的解决方案,因为它会耦合不同服务的实例
我已经阅读了很多关于微服务架构的文章,但有一件事我不明白如何实现,希望你能帮助我...
假设我有一个 web-api-endpoint,它接收 OrderMicroservice 负责处理的订单。下订单时必须更新库存,以便 OrderMS 向订阅者发布事件(pub/sub 使用例如 Nats)并且 InventoryMS 将更新库存,因为它正在订阅当前 event/message....我想要拥有一个松散耦合的体系结构,并使用对给定信息感兴趣的 modules/MSs 的异步调用。
如果您有 1 个 InventoryMS 实例,给定的场景将工作得很好,但是如果您水平缩放 InventoryMS 会发生什么情况,即有 5 个 InventoryMS 实例并且它们都订阅了 inventory.change.event 并将尝试更新库存?
我应该使用什么样的体系结构或消息模式来处理像这样的横向调用 MS 的场景,以便在 MS 相互依赖时我可以有一个松散耦合的体系结构? 一种方法是内部通信是通过使用断路器模式的 REST 调用进行的,但后来我觉得我构建了一个具有一定智能(断路器)的 MS 单体......
感谢您的帮助!
使用点对点消息传递模型,只有一个消费者会收到一条消息。在 pub/sub 模型中,所有订阅者都会收到通知。
示例 ActiveMQ。
您仍然可以使用 pub/sub 模型,但您需要设置多个实例,以便只有一个实例会收到消息。具体要看pub/sub机制
例如,在 AMQP 系统(如 RabbitMQ)中,您将在交易所发布事件。消费者服务将 bing 到该交换的队列,并且同一服务的所有实例将从同一队列读取(因此只有一个会处理任何给定的消息)
另一个例子是 Kafka - 在 Kafka 中,同一服务的所有实例都将使用相同的 consumer group - 因此,同样,每个订阅bing 服务只有一个实例会收到消息
其他 pub/sub 系统会有类似的解决方案。
指向特定实例并不是一个很好的解决方案,因为它会耦合不同服务的实例