一、前言
UCloud的四层负载均衡器Vortex基本上是依照Meglev的方案去实现的,但是性能上面据他们的数据是要更好一点。可以参见文章《从Maglev到Vortex,揭秘100G+线速负载均衡的设计与实现》。根据文章,Vortex使用了DPDK作为开发的基础框架,使用DR模式数据流,所以多数技术措施应该和之前提到的美团点评、唯品会、爱奇艺和阿里巴巴的负载均衡器使用的差不多。
值得一提的是Vortex展示的是一个负载均衡的集群,使用quagga管理OSPF路由信息,并详细描述了他们在保持连接一致性方面的方案(Vortex Hash),基本上和Maglev一致。
转载自https://blog.csdn.net/cloudvtech
二、Vortex技术细节
在Vortex分析的技术细节中,主要关注了负载均衡器的高可用性和可扩展性两个方面的技术实现。
2.1 Vortex的高可用性设计
根据对技术细节的分析,基本上可以确定Vortex所谓的Vortex Hash方案应该和Google的Meglev的本地一致性哈希算法类似,通过这个算法,可以保证无论是Vortex服务器集群或者是后端服务器集群发生什么样的变化甚至同时发生变化,都能保证绝大多数的已有连接不受影响:
2.2 Vortex的可扩展性设计
2.2.1 使用ECMP,普通交换机可以挂载16到32个Vortex服务器,而特殊的SDN交换机则可以挂载256个Vortex服务器
2.2.2 使用基于DPDK的优化技术
- 用户空间网卡驱动,数据包处理过程中零拷贝
- 批量数据包处理,摊薄单个包CPU指令成本
- 使用大页和DPDK的Memory Channel
- 进行内存和设备的NUMA设置,减少Cache Miss
- RSS队列和pin到CPU core
- 线程间无锁化消息交互
- 基于CPU core信息本地化,无跨core和NUMA节点信息共享
转载自https://blog.csdn.net/cloudvtech
三、性能数据
根据UCloud的测试结果,单机性能性能方面Vortex应该在Meglev之上:
Vortex可以实现吞吐量达14M PPS(10G, 64字节线速),新建连接200k CPS以上,并发连接数达到3000万、10G线速的转发。
这里还有UCloud在中国DPDK Summit分享的视频和PPT。根据这个视频里面的描述,一个有趣的事实是Vortex几乎和Meglev同时在2016年发布,但是殊途同归,使用了相似的技术路径;一个需要注意的事实是在Meglev开始实施的2008年左右,DPDK还没有开源,所以Google完全是凭借自己的实力进行的技术拓展。
转载自https://blog.csdn.net/cloudvtech