美文网首页程序员
GRPC负载均衡

GRPC负载均衡

作者: 只是肿态度 | 来源:发表于2019-11-28 15:41 被阅读0次

负载均衡

负载均衡是高可用网络基础架构的关键组件,通常用于将工作负载分布到多个服务器来提高应用的性能和可靠性。

GRPC负载均衡

关于GRPC的负载均衡,我们选择NGINX来进行反向代理。NGINX在1.13.9版本已经开始支持GRPC代理。有了对 GRPC 的支持,NGINX 就可以代理 GRPC TCP 连接,还可以终止、检查和跟踪 GRPC 的方法调用。


image.png

GRPC NGINX 配置

在nginx的配置文件中配置GRPC代理即可。

简单代理配置:

server{
    #nginx 监听8888接口
    listen  8888    http2; 
    location / {
        #转发请求至实际服务侧
        grpc_pass grpc://localhost:9999;
    }
}

通过grpc 调用代理端口

DetectClient client = new DetectClient("localhost",8888);

观察NGINX的access.log,可以看到相应的代理记录

223.71.238.51 - - [07/Nov/2019:15:40:55 +0800] "POST /detect.DetectService/decode HTTP/2.0" 200 111 "-" "grpc-java-netty/1.19.0" "-"
223.71.238.51 - - [07/Nov/2019:15:40:55 +0800] "POST /detect.DetectService/decode HTTP/2.0" 200 111 "-" "grpc-java-netty/1.19.0" "-"
223.71.238.51 - - [07/Nov/2019:15:40:55 +0800] "POST /detect.DetectService/decode HTTP/2.0" 200 111 "-" "grpc-java-netty/1.19.0" "-"

代理多个路由配置&负载均衡

server{
    #nginx 监听8888接口
    listen  8888    http2; 
    location / {
        #转发请求至实际服务侧
        grpc_pass grpc://grpcservers;
    }
 
    location /helloworld.decodeService {
        grpc_pass grpc://grpcservers;
    }
 
    location /detect.DetectService {
        grpc_pass grpc://grpcservers;
    }
}
 
upstream grpcservers {
    server localhost:9999;
    server localhost:10000;
    server localhost:10001;
}

负载原理

首先GRPC是建立在HTTP2.0的基础上进行数据传输,HTTP2.0的优势就不用多说了。因此NGINX负载均衡同样也是建立在HTTP2.0的基础之上。并且NGINX新增了GRPC模块。用于负载GRPC请求。
需要注意以下几个NGINX的参数配置:
nginx_http2模块
http2_max_requests:在一个tcp连接上默认通过的最大数据包数,默认1000个
http2_max_concurrent_streams:在一个tcp连接上默认最大并发流,默认128个
nginx_grpc模块
grpc_send_timeout:将请求传输到gRPC服务器的超时时间,如果超过这个时间,NGINX会断开连接。
grpc_read_timeout:接收gRPC服务器数据的超时时间,如果超过这个时间,NGINX会断开连接。
grpc_socket_keepalive:NGINX与gRPC服务器长连接配置设置。

相关文章

  • grpc 负载均衡

    说明 本文档介绍了 gRPC中, 负载均衡的设计思想 底层实现 每次调用的负载均衡 值得注意的是gRPC的 负载均...

  • gRPC - 负载均衡

    一、官方文档 以下内容为官方文档的中文翻译,源文档地址为:https://github.com/grpc/grpc...

  • GRPC负载均衡

    负载均衡 负载均衡是高可用网络基础架构的关键组件,通常用于将工作负载分布到多个服务器来提高应用的性能和可靠性。 G...

  • gRPC服务发现&负载均衡.md

    gRPC服务发现&负载均衡 gRPC 是一个高性能、开源、通用的 RPC 框架,面向移动和 HTTP/2 设计,是...

  • golang grpc 负载均衡

    微服务架构里面,每个服务都会有很多节点,如果流量分配不均匀,会造成资源的浪费,甚至将一些机器压垮,这个时候就需要负...

  • go-chassis为grpc-go带来高级云原生特性

    gRPC与gochassis 尽管grpc-go本身也自带一些云原生能力,比如负载均衡,但是还远远不够,并且需要使...

  • 使用Nginx代理实现gRPC负载均衡

    官方博客指出,Nginx v1.13.10及以上支持对gRPC负载均衡。 安装 对Debian和Ubuntu系统来...

  • 微服务服务治理

    引入微服务后出现的服务治理的新问题,例如:动态服务发现、负载均衡、TLS加密、HTTP/2 & gRPC代理、熔断...

  • 关于负载均衡的总结

    负载均衡的分类 常见的分为三类,dns负载均衡,硬件负载均衡,软件负载均衡 dns负载均衡 一般实现地域级别的负载...

  • 负载均衡-LVS

    负载均衡lvs by shihang.mai 负载均衡层次 负载均衡拓扑 负载均衡-D-NAT模式 Client发...

网友评论

    本文标题:GRPC负载均衡

    本文链接:https://www.haomeiwen.com/subject/ixubwctx.html