更新时间:

#grpc 同端口 ,同时启用http

关键一点,gRPC 的协议是基于 HTTP/2 的,因此应用程序能够在单个 TCP 端口上提供 HTTP/1.1 和 gRPC 接口服务(两种不同的流量)

#怎么同时提供 HTTP 接口

#检测协议

if r.ProtoMajor == 2 && strings.Contains(r.Header.Get("Content-Type"), "application/grpc") {
    server.ServeHTTP(w, r)
} else {
    mux.ServeHTTP(w, r)
}

#流程

检测请求协议是否为 HTTP/2 判断 Content-Type 是否为 application/grpc(gRPC 的默认标识位) 根据协议的不同转发到不同的服务处理

原文eg

Envoy Proxy 的支持就不完美,无法同时监听一个端口的两种流量