腾讯所有业务的负载均衡都是基于内部腾讯GateWay实现的,运行在标准x86服务器上,优点包括:自主研发、代码可控。腾讯GateWay对外的版本为Cloud load balance,是多机active部署的,通过BGP发布VIP、local adress路由、同步DNS信息等,实现集群负载通过路由OSPF将流量分发到不同的服务器上。
特点:
1,4层负载均衡
a、集群,ospf+ecmp模式分布负载
b、每个负载均衡设备使用Intel DPDK实现:
利用了intel DPDK提供的高性能多核开发框架、hugepage内存管理及ring buffer共享队列方案,将DPDK常见的逻辑设计框架run-to-completion与pipeline结合。极大提升了流量分发的效率。
2,7层负载均衡
a,nginx优化实现
b,https卸载优化
CLB性能上最大的一个难题是如何提升HTTPS的效率。同样的物理设备下cpu满负载,nginx SSL完全握手的性能不到普通HTTP性能的10%,如果说HTTP的性能是QPS 1万,HTTPS可能只有几百。为什么会这么低呢?
1、主要是RSA算法,它对性能的影响占了75%左右:
2、ECC椭圆曲线如果使用最常用的ECDHE算法,这部分约占整体计算量的7%;
3、对称加解密和MAC计算,它们对性能影响比较小,是微秒级别的。
有了这些分析结论,优化的方向就很明确了:
1、减少完全握手(采用分布式session cache、全局Session ticket、自定义session ticket)
2、RSA异步代理计算
3、对称加密优化
优化结果:
https请求的访问时延与http请求相差无几。单集群的单台云服务器完全握手性能可达到65000QPS,长连接时单台服务器性能可以达到300000QPS。