EasyCVR视频平台开发录像模块采用gRPC方式做负载均衡的步骤介绍

2021-05-27 14:18:40 浏览数 (1)

gRPC 是一个高性能、开源、通用的 RPC 框架,基于 HTTP/2 标准设计,带来诸如双向流、流控、头部压缩、单 TCP 连接上的多复用请求等特性。在进行EasyCVR录像模块的开发时,由于视频录像合成处理模块十分消耗CPU性能,因此计划部署多个视频处理服务器以分布式方式部署,计划采用gRPC方式通信。

Nginx1.13版本后支持gRPC协议,所以我们决定采用Nginx做负载均衡。

具体实现过程如下:

上图为Nginx实现gRPC负载均衡的配置文件示例,upstream为上游反向代理服务器的地址;Server为Nginx暴露外部的实际端口。

服务端代码示例如下:

服务端可以监听任意端口,开启服务,只需将服务端IP及端口配置到Nginx的Upstream模块。

客户端代码示例如下:

这里所有客户端程序只需要连接Nginx暴露的端口即可。

执行效果如下:

Nginx会根据配置文件的访问权重设置,自动对所有的连接进行负载均衡配置。由于不确定RPC请求具体会访问哪个服务器,因此还需要统一的文件服务器,但在此文中我们不做过多赘述。

0 人点赞