首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么grpc-go可以在同一地址和端口运行grpc服务器和http服务器,而grpc-node不能

grpc-go可以在同一地址和端口运行grpc服务器和http服务器,而grpc-node不能的原因是因为它们使用了不同的底层实现和协议。

grpc-go是基于Go语言开发的,它使用了HTTP/2作为底层传输协议。HTTP/2支持多路复用,可以在同一连接上同时处理多个请求和响应。因此,grpc-go可以在同一地址和端口上同时运行grpc服务器和http服务器,通过不同的路径来区分不同的服务。

而grpc-node是基于Node.js开发的,它使用了HTTP/1.1作为底层传输协议。HTTP/1.1不支持多路复用,每个请求都需要建立一个新的连接。因此,grpc-node不能在同一地址和端口上同时运行grpc服务器和http服务器,因为它们会产生冲突。

为了解决这个问题,可以使用反向代理或者负载均衡器来将grpc请求和http请求分发到不同的服务器上。例如,可以使用Nginx作为反向代理,将grpc请求转发到grpc服务器,将http请求转发到http服务器。

总结起来,grpc-go可以在同一地址和端口运行grpc服务器和http服务器,因为它使用了HTTP/2作为底层传输协议,支持多路复用。而grpc-node不能在同一地址和端口上同时运行grpc服务器和http服务器,因为它使用了HTTP/1.1作为底层传输协议,不支持多路复用。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 在 C#和ASP.NET Core中创建 gRPC 客户端和服务器

    gRPC 是一种可以跨语言运行的现代高性能远程过程调用 (RPC) 框架。gRPC 实际上已经成为 RPC 框架的行业标准,Google 内外的组织都在使用它来从微服务到计算的“最后一英里”(移动、网络和物联网)的强大用例。 gRPC是一个高性能的开源的通用RPC框架,由Google公司开发,支持常用的C++、Java、Python、C#/.Net、Go、Node、Dart、Kotlin、Object-C、PHP、Ruby等语言,采用protobuf作为数据交换格式,并且采用C++开发,支持Windows 、Linux、macOS跨平台开发。对于跨语言服务调用非常方便,只要使用protobuf定义接口协议,然后按照gRPC语言SDK调用即可。比如我们使用C++对环保数采仪器设备通过串口或者网口传送的数据协议如Modbus协议、HJ212协议、或者厂商自定义的协议进行解析之后,将数据存放到本地数据库,这个时候我们如何将C++的数据传给前端网页呢? 这个时候可以使用多种方式。比如通过数据库、HTTP协议、WebSocket协议、RPC远程过程调用等方式。 我之前做环保的时候,采用C++和环保硬件设备打交道,通过C++后台程序将数采仪数据解析之后存入到本地Sqlite数据库中(分表分页存储),然后由于展示的网页比较简单,只是用网页展示当前站点的数据,前端采用ElementUI和Vue.js,后端采用Node.js。另外,C++后台写了一套RPC服务端接口,Node.js通过RPC客户端调用C++的后台RPC服务,双方之间通过Google Protobuf数据协议交互。

    00
    领券