哪个选项更适合微服务?GRPC还是RabbitMQ之类的消息代理

ojsjcaue  于 2022-11-08  发布在  RabbitMQ
关注(0)|答案(2)|浏览(410)

我想在微服务结构中开发一个项目。我必须使用php/laravel和nodejs/nestjs。我的微服务之间最好的连接方法是什么。我读了RabbitMQ和NATS消息传递以及GRPC。哪个选项更适合微服务?为什么?提前感谢

dly7yett

dly7yett1#

这些技术可满足不同的需求。
gRPC是一种机制,客户端通过它调用远程服务器上的方法(尽管它们不一定是)。客户端与实现这些方法的服务器是紧密耦合的(通常通过负载平衡器)。
例如,我(客户)打电话给星巴克(服务),点了一杯咖啡(方法)。
gRPC是REST、GraphQL和其他用于通过某种形式的API连接客户端和服务器的机制的替代方案。
消息代理(例如NATS、Rabbit)提供了更高级别的抽象,其中客户端将消息发送到称为代理的中间服务(这可以使用gRPC来完成),代理可以对消息进行排队,并将其直接发送到服务(推送)或等待服务检查其订阅(拉取)。
例如:I(客户)在某个网站上发布分类广告(经纪人)。多人可能会看到我的广告(认购人)和要约购买一些软件机器人也可能订阅并与我联系,提供运输或保险我正在出售的东西。其他人可能在网站上监控小部件的销售,以确定是否有市场开设商店出售这些小部件等。
使用代理,客户端可能永远不知道哪些服务器实现了该功能(反之亦然)。这是一种松耦合机制,其中可以独立于客户端添加和删除服务。

kmb7vmvb

kmb7vmvb2#

如果需要对1:1服务调用进行响应,请使用gRPC
如果您不关心哪个服务将使用非耦合消息,请使用rabbitMQ
如果您需要分布式系统来保存事件历史记录,并在以后在另一个服务上重用,请使用Kafka

相关问题