Moh*_*var 26 rabbitmq messagebroker microservices grpc nats.io
我想开发一个微服务结构的项目。我必须使用 php/laravel 和 nodejs/nestjs 我的微服务之间的最佳连接方法是什么。我读到了 RabbitMQ 和 NATS 消息传递以及 GRPC 哪个选项更适合微服务?为什么?提前致谢
Daz*_*kin 38
这些技术满足不同的需求。
gRPC 是一种客户端调用远程(尽管不一定是)服务器上的方法的机制。客户端与实现这些方法的服务器紧密耦合(通常通过负载平衡器)。
例如,我(客户)致电星巴克(服务)并订购(方法)一杯咖啡。
gRPC 是 REST、GraphQL 和其他用于通过某种形式的 API 连接客户端与服务器的机制的替代方案。
消息代理(例如 NATS、Rabbit)提供了更高级别的抽象,其中客户端将消息发送到称为代理的中间服务(这可以使用 gRPC 来完成),并且代理可以对消息进行排队并直接将它们发送到服务(推送) )或等待服务检查其订阅(拉取)。
例如,我(客户)在某个网站(经纪人)上发布了分类广告。多个人可能会看到我的广告(订阅者)并提出从我这里购买(方法)商品。一些软件机器人也可能会订阅并联系我,提供运输或为我销售的东西提供保险。其他人可能会监视网站上小部件的销售,以确定是否有开设商店来销售这些小部件等的市场。
对于代理,客户端可能永远不知道哪些服务器实现了该功能(反之亦然)。这是一种松散耦合的机制,可以独立于客户端添加和删除服务。
小智 32
如果您需要对 1:1 服务调用进行同步响应,请使用 gRPC
如果您不关心哪个服务将消耗消息(异步且服务之间没有紧密耦合),请使用 RabbitMQ
如果您需要分布式系统来保存事件历史记录并稍后在另一个服务上重用,请使用 Kafka