【发布时间】:2020-06-12 12:51:51
【问题描述】:
RPC 标准的创建考虑了分布式计算,但在当今的微服务世界中,我们几乎不使用 RPC 进行服务之间的通信,而主要使用 HTTP。
我想了解原因。
我可以想到诸如序列化(不够快)、消息传输的可靠性、没有多线程、缺乏异步通信等限制,考虑到当今的可扩展性要求,RPC 可能具有并且可能会出现某种瓶颈。
但是当我在网络上搜索这些限制时,我的印象是,这些限制在今天可能不是一个大问题,而且有些框架/lib 可以解决所有或部分这些限制。
所以,我想了解 RPC 在微服务通信中不太流行的确切原因,尽管它们比 HTTP 更早。
【问题讨论】:
-
gRPC 已充分用于微服务间的通信,可能主要是 ppl 使用的浏览器,它们通过 DNS 和网关设置完成,事情仍然坚持 HTTP,gRPC 在 HTTP2 的底层运行,我的团队在将 HTTP 上运行的其他服务与 gRPC 集成时遇到了一个巨大的麻烦,要知道引擎盖下发生了什么真的很麻烦
-
@TusharMahajan 感谢您的回复。在您的设置中,您是否认为 RPC 通信是可扩展的,并且除了集成 HTTP 和 RPC 之外,您是否注意到 RPC 通信的任何其他操作瓶颈,这可能会导致需要大量流量的企业应用程序出现问题。
-
我觉得可扩展性没有任何问题,对于高流量,它支持流和一元 API,因此没有这样的问题。只有通过反向代理层的 HTTP 到 HTTP/2 通信让我们很头疼
-
@TusharMahajan 您选择 RPC 的任何具体原因?我假设如果您知道您的某些组件(可能是第 3 方)正在使用 HTTP,那么如果您选择 HTTP 和另外一件事,那么集成会容易得多,如何为新添加的节点管理服务发现?
-
只是速度是一个问题,基于 HTTP2 的内部微服务通信比 HTTP1 快得多,SSL 保护也有点像。
标签: http microservices communication rpc