【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

GitHub 新负载均衡系统的设计历程

  • 2016-10-08
  • 本文字数:1014 字

    阅读完需:约 3 分钟

在过去的一年中,GitHub 一直在开发一个新的负载均衡系统——GitHub Load Balancer(GLB)。这个系统想要通过扩展使用普通的硬件来应对每天数十亿的连接。GitHub 工程师 Joe Williams 和 Theo Julienne讲解了GLB 的设计历程。

GitHub 根本的设计目标之一是希望能“扩展”IP,即,将单个公网 IP 的数据流量通过多个等价的连接分发到不同的目标机器。这通常是通过等价多路径路由(ECMP)来实现的,从而扩大带宽。然而,ECMP 在各个ECMP 节点发生变化,比如在节点失效或因维护需求而被移除时,表现不是很好。对GitHub 来说这是使用ECMP 最大的缺陷。

因此,GitHub 工程师考虑使用L4/L7 分离策略,将负载均衡节点分为两层, L4 和 L7 ,OSI 层据此来提供各个节点分发请求时需要的信息。L4 使用来源及目标 IP 地址和 TCP 端口号进行路由,而 L7 使用应用层信息来路由,这通常使用 HTTP 协议。在 L4/L7 分离的设计中,L4 节点通过 ECMP 拆分流量到 L7 节点,我们称前者为“director”节点,后者为“proxy”节点。Williams 和 Julienne 解释到,通常 ipvs/LVS 被应用于 L4 节点,而 L7 节点使用 haproxy 或类似工具。

L4/L7 分离带来最大的好处是,只要简单地将 L7 节点从服务 _ 新 _ 连接的节点池中移除,并服务到节点上现有连接全部结束,就可以在不影响正常运行的情况下移除一个 L7 节点。但另一方面,在 L4 节点失效或被移除时会导致访问中断。由于 git 无法进行重试或恢复已断开的连接,解决这个问题对 GitHub 来说尤为关键。

GitHub 通过使用 Rendezvous 哈希算法解决了这个最终问题,这个算法使 director 节点间协定应该由哪个 proxy 节点来处理某个请求。GLB 结合使用 Rendezvous 哈希算法与服务器直接返回模式,后者使返回报文直接从proxy 节点返回给客户端,从而绕过了原来分配请求到proxy 的director 节点。在GLB 中,使用Rendezvous 哈希的基本思想是要将请求转发表在各个director 节点间共享并保持同步。这大体上能保证即使一个director 节点失效或被移除,其他director 节点可以代替并将现存连接分配到正确的proxy 节点。

最后Williams 和Julienne 谈到他们计划如何平滑地发布这个新负载均衡系统,并预计在近期开源该项目。

查看英文原文: How GitHub Designed its New Load Balancer


感谢宋秉金对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016-10-08 19:005700
用户头像

发布了 41 篇内容, 共 12.8 次阅读, 收获喜欢 3 次。

关注

评论

发布
暂无评论
发现更多内容

Navicat Charts Viewer for Mac(Navicat图表查看器)v1.2.14激活版

iMac小白

Illustrator 2023 for mac(ai2023) v27.9永久激活版

mac

windows 11 Illustrator 苹果mac 矢量图形编辑软件

PDF Reader Pro for Mac(好用的pdf编辑阅读器)v3.2.1.0中文激活版

影影绰绰一往直前

京东商品详情API:数据分析和挖掘以优化销售策略

技术冰糖葫芦

API

Acrobat Pro DC 2023 for Mac(PDF编辑器) 2023.006.20380永久激活版

mac

苹果mac Windows软件 PDF编辑和管理软件 Acrobat Pro DC

Archicad 27 for Mac(3D建模软件)v27.1.1 (4030)激活版

iMac小白

Valentina Studio Pro for Mac(专业的数据库管理软件)v13.7.1激活版

iMac小白

软件测试/测试开发丨Web端测试-测试用例设计思路 学习笔记

测试人

软件测试

Boxy SVG for Mac(矢量图编辑器)v4.20.0免激活版

iMac小白

CopyQueue for Mac(管理文件传输工具)v3.1免激活版

iMac小白

MWeb Pro for mac(好用的博客生成编辑器)v4.5.4中文激活版

iMac小白

iShowU Instant for Mac(强大的实时屏幕录像工具)v1.4.18直装版

影影绰绰一往直前

Navicat Charts Creator for Mac(Navicat图表创建器)v1.2.14激活版

iMac小白

Navicat Data Modeler Ess for Mac v3.3.14中文激活版

iMac小白

OmniReader Pro for mac(专业的电子书阅读器)v2.6.7激活版

iMac小白

企业级知识图谱的案例分享

悦数图数据库

图数据库

聚道云软件连接器带给服装行业客户的业务革新

聚道云软件连接器

拼多多商品详情数据接口(Pinduoduo.item_get)丨拼多多API接口

tbapi

拼多多API接口 拼多多商品详情数据接口 拼多多商品API接口 拼多多优惠券接口 拼多多到手价接口

EazyDraw for Mac(矢量图绘制软件)v11.4.1中文版

影影绰绰一往直前

低代码使用情况

这我可不懂

前后端分离 低代码 JNPF

Default Folder X for Mac(mac专业搜索优化工具)v6.0.4激活版

影影绰绰一往直前

MindNode for mac(思维导图软件)v2023.3.1中文激活版

影影绰绰一往直前

Weather Widget Live for Mac(时尚的天气预报软件)v5.1.0激活版

iMac小白

京东商品详情API:数据驱动销售策略优化的探索之旅

技术冰糖葫芦

API

OmniReader Pro for mac(专业的电子书阅读器)v2.6.7激活版

影影绰绰一往直前

USBclean for Mac(USB专杀工具) v3.8激活版

影影绰绰一往直前

软件开发外包风险如何避免,参考如下安全低风险的开发合作模式

软件开发-梦幻运营部

Yate for Mac(音乐标签管理工具)v6.18激活版

iMac小白

iFastZip - Extract RAR&ZIP&7Z for Mac(解压缩软件)v9.0激活版

影影绰绰一往直前

前后端开发的可视化编辑器

互联网工科生

软件开发 低代码 JNPF 前后端软件

AI原生应用开发“三板斧”亮相WAVE SUMMIT+2023

飞桨PaddlePaddle

飞桨 文心一言 文心大模型

GitHub新负载均衡系统的设计历程_GitHub_Sergio De Simone_InfoQ精选文章