微服务为什么使用RabbitMQ?
我还没有找到一个现有的职位问这个,但道歉,如果我错过了它微服务为什么使用RabbitMQ?,rabbitmq,microservices,Rabbitmq,Microservices,我还没有找到一个现有的职位问这个,但道歉,如果我错过了它 我正试着了解微服务,并且已经看到了使用RabbitMQ的文章。我不明白为什么需要RabbitMQ。服务是否打算使用web api与外部世界通信,以及使用RabbitMQ彼此通信?在微服务体系结构中,微服务之间有两种通信方式: 同步-也就是说,每个服务直接调用另一个微服务,这导致服务之间存在依赖关系 异步—您有一个中央集线器(或消息队列),在这里您将所有请求放在微服务之间,相应的服务接收请求,处理它并将结果返回给调用者。这就是Rabbit
我正试着了解微服务,并且已经看到了使用RabbitMQ的文章。我不明白为什么需要RabbitMQ。服务是否打算使用web api与外部世界通信,以及使用RabbitMQ彼此通信?在微服务体系结构中,微服务之间有两种通信方式:
- 同步-也就是说,每个服务直接调用另一个微服务,这导致服务之间存在依赖关系
- 异步—您有一个中央集线器(或消息队列),在这里您将所有请求放在微服务之间,相应的服务接收请求,处理它并将结果返回给调用者。这就是RabbitMQ(或任何其他消息队列——MSMQ和Apache Kafka是很好的替代品)的用途。在这种情况下,所有的微服务只知道集线器的存在
有一些关于使用微服务的非常好的文章消息队列提供了一个异步通信协议-您可以选择从一个服务向另一个服务发送消息,而不必知道另一个服务是否能够立即处理它。消息可以等待,直到责任服务就绪。发布消息的服务不需要知道将处理该消息的服务的内部工作方式。这种处理消息的方法将生产者与消费者分离 消息队列将使应用程序中的进程相互分离和独立;这种处理消息的方法可以创建一个易于维护和扩展的系统 简单地说,两种明显的情况可以作为消息队列真正闪亮的例子:
- 图像缩放
- 发送大量电子邮件(如时事通讯)
- 搜索引擎索引
- 文件扫描
- 视频编码
- 发送通知
- PDF处理
- 计算
- 订单处理(下单、更新订单状态、发送订单、付款等)
- 食品配送服务(下订单、准备订单、配送食品)
- 需要处理多个请求的任何web服务
请注意,我为CloudAMQP(RabbitMQ的托管提供商)背后的公司工作。同样的问题可能是为什么微服务需要REST?微服务的概念在月球上并不是什么新鲜事。后台工程和异步请求处理使用了长时间的工作流分布,Microservice是独立jvm中的同一组件,与SOLID中的S(单一责任)匹配。它之所以成为微服务,是因为它是平衡的。这就是全部!特别是(!),它可以是Spring Cloud/REST base上的REST服务,该服务由Eureka注册,在Zuul和Ribbon上具有代理网关和负载平衡。但这不是整个微服务世界!顺便说一句,异步分布式处理是使用微服务的任务之一。很久以前,分离JVM中的服务(组件)通过任何消息传递进行集成,这种模式称为ESB。微服务与模式中的主题相同。由于SpringCloudREST的流行,它似乎是微服务的唯一方式。不!例如,Vertx支持基于消息的异步微服务体系结构。为什么不使用RabbitMQ作为消息通道?在这种情况下,可以通过构建RabbitMQ集群来提供负载平衡。例如:。所以,世界范围更广。如果您在.net平台上,请查看NServiceBus()以获取异步消息(并且可以将RabbitMQ作为传输运行),您会说同步模式会导致依赖性。如果你有一个中央集线器,它位于If microservice的外面,这不也意味着依赖性吗?@mko,是的。它甚至被称为“单点失败”,没有银