一、前言

和美团点评一样,唯品会也使用DPDK框架来开发自己的四层负载均衡器VGW。其基本技术和文章《企业级负载均衡解决方案之二:美团点评高性能四层负载均衡器MGW》里面提到的技术方案基本一致,本文根据唯品会技术分析的文章《唯品会高性能负载均衡 VGW 揭秘》补充一些技术的具体细节。

转载自https://blog.csdn.net/cloudvtech

二、VGW技术细节

2.1 CPU affinity

基于DPDK的VGW中的各个线程都运行在固定的CPU上面,收包和发包使用不同的NIC并且收发队列pin到不同的CPU core上面,以此来最大程度减少来Cache Miss;同时其它一些VGW的工作线程也跑在指定的CPU上面,避免被操作系统抢占。

2.2 Huge Page

大页内存可以有效减少TLB MISS的数目,提高计算效率。VGW在系统初始化的时候,使用2MB的大页内存来分割8GB给DPDK的预留内存。而且在NUMA结构下面,每个NUMA节点都要有对应的页大小和页数目的设置。

2.3 无锁化

在使用DPDK的环境中,应该尽量避免使用互斥锁。借助于使用CAS操作实现的DPDK的FIFO无锁队列,实现内存池的分配管理、多个线程间的通信以及PMD和内核的通信。同时在读多写少的环境中使用RCU机制来避免锁。

2.4 用户态轮询驱动

传统的内核态基于中断的收发包方式在大并发的情况下会造成中断爆炸,导致后续数据包处理效率下降。使用PMD可以在用户态批量收发数据包,避免了中断开销。

2.5 DPDK数据lcore化

VGW避免在多核间分配全局数据,如有全局数据也是尽力无锁化。所有变量如统计信息、arp表、连接表等都是在lcore上面分配,在CPU本地cache直接访问这些信息,和Google Meglev线程间无共享信息的实现机制类似。

2.6 DPDK数据批量预取

存在于内存中的数据包需要以合适的节奏送入CPU cache,太慢会导致多次载入开销,太快会由于后续逻辑处理时间过长造成数据获取时延,这两种情况都会导致网卡缓冲区满。VGW使用批量预取技术,以合适的速率将缓冲区的数据包送入CPU cache,加速后续处理逻辑。

2.7 DPDK代码分支预测

通过在合理的位置加入分支预测的指示代码(likely),可以预先载入最有可能的后续指令集,提升CPU流水线处理能力。比如对于VGW多数都是转发包,只有少数是进入本机上层的包,所以对于可能是转发的包,在后续处理中进行分支预测。

2.8 DPDK NUMA亲和

在2.2中保证内存和NUMA亲和性之后,在配置DPDK的运行环境的时候要为收发线程配置NUMA id,使得收发线程的内存和网络设备都在同一个NUMA节点,用来保证网卡和对应NUMA上的CPU亲和性。

转载自https://blog.csdn.net/cloudvtech

三、总结

和美团点评的负载均衡器一样,唯品会的四层负载均衡器也是基于DPDK的PMD方案开发。在同样的硬件资源下,达到4倍于IPVS的能力,承载搜索、图片等流量。

但是根据VGW的文档,并未看到关于VGW集群的任何技术信息。

转载自https://blog.csdn.net/cloudvtech

企业级负载均衡解决方案之三:唯品会四层负载均衡解决方案VGW相关推荐

  1. 四层负载均衡和七层负载均衡的区别

    四层负载均衡和七层负载均衡的区别 1. 四层负责均衡:是通过报文中的目标地址和端口,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器与请求客户端建立TCP连接,然后发送Client请求 ...

  2. lvs工作在第几层_LVS 原理(调度算法、四种模式、四层负载均衡和七层 的区别)...

    目录 lvs的调度算法 lvs的四种模式 四层均衡负载和七层的区别 1.lvs调度算法(最常用的四种) 轮叫调度(rr) 调度器通过外部请求的顺序轮流分配到集群中的真实服务器上,对每台服务器都是均等的 ...

  3. 四层负载均衡 动静分离和资源分离 Rewrite rewrite伪静态实例

    文章目录 四层负载均衡 四层负载均衡特点 查看四层负载均衡语法 四层负载均衡配置 优化配置文件 四层负载均衡日志配置 nginx的TCP负载均衡---端口转发 动静分离 单台的动静分离 多台机器动静分 ...

  4. 负载均衡集群 [ 1 ] ---集群的认识,四层负载,七层负载 ,LVS 实现四层负载均衡

    文章目录 负载均衡集群 1.集群是什么? 2.负载均衡集群技术 3.负载均衡集群技术的实现 4.负载均衡分类 5.四层负载均衡(基于IP+端口的负载均衡) 6.七层的负载均衡(基于虚拟的URL或主机I ...

  5. Nginx四层负载均衡详解

    Nginx四层负载均衡 什么是四层负载均衡 四层负载均衡基于传输层协议包来封装的(如:TCP/IP),那我们前面使用的七层指的是应用层,它的组装在四层基础之上,无论是四层还是七层都是这是OSI网络模型 ...

  6. 负载均衡技术(一)———负载均衡技术介绍

    此文已由作者张小刚授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 本文主要是对负载均衡技术进行一个简单的介绍,并结合在实际生产环境中负载均衡技术的应用情况,让大家对负载均衡技 ...

  7. 企业级负载均衡解决方案之四:爱奇艺四层负载均衡解决方案DPVS

    一.前言 DPVS是基于DPDK的高性能四层负载均衡解决方案,从阿里巴巴的alibaba/LVS修改而来.所以基本上同前面美团点评.唯品会等使用的基于DPDK的技术类似. DPVS的开源代码在gith ...

  8. 企业级负载均衡解决方案之二:美团点评四层负载均衡解决方案MGW

    一.前言 在互联网厂商业务不断扩展之后,多种服务的入口会导致接入流量的剧增,所以多数基于IPVS或者Nginx等初级负载均衡技术的早期方案都会面临故障或者失效,所以就像google开发meglev一样 ...

  9. 企业级负载均衡解决方案之七:京东四层负载均衡解决方案ContainerLB

    一.前言 根据文章<京东商城ContainerLB实践>里面的描述,京东在2016年的时候几乎已经把他的所有业务系统转成容器模式,"线上20万+容器实例承载着数千个业务应用&qu ...

最新文章

  1. ubunu16.04 TensorFlow object detection API 应用配置
  2. mysql模糊查询的优化方法--亲自实践
  3. 前沪江高级架构师学习笔记分享:分布式框架设计与实现
  4. tomcat 外网访问不了_免费云服务器/jdk环境配置/Tomcat简单配置
  5. 表白c语言程序设计,C语言编程学习打造表白神器:亲爱的让我们相爱在一起
  6. iOS中NSString转换成HEX(十六进制)-NSData转换成int
  7. 理论基础 —— 线性表
  8. crbug/1173575, non-JS module files deprecated.
  9. matlab与c 混合编程问题,MATLAB与C/C++混合编程的一些总结
  10. 令人赞叹的 MySQL
  11. 最新消息,网易公司内部开始使用昵称!学阿里?
  12. OSI七层协议完美解读
  13. 电商分析需要重点关注的核心指标
  14. 注释一下blk_update_request函数
  15. function里面的两个参数是什么意思?
  16. Python入门习题(64)——OpenJudge百练习题:最长单词
  17. IT人看奥运(日本真是躺着也中枪)
  18. 关于 JavaScript 中 null 的一切
  19. 三年级连接计算机教案广西,广西科教小学信息技术三年级教案培.doc
  20. 分享一个直接加QQ好友的链接或会话的

热门文章

  1. uni-app 视频播放遇到的问题-video
  2. JAVA感知机的动态分类实现
  3. Spark一路火花带闪电——Accumulator Broadcast
  4. 美国人常用的经典句子[转帖]
  5. Python网络爬虫实战
  6. java校验身份证的合法性、根据身份证获取生日等工具类
  7. 笔试面试找工作个人总结(持续更新)
  8. HTTP 常见的状态码
  9. form表单隐藏域有什么作用
  10. css 中的颜色设置