2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

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:006084
用户头像

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

关注

评论

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

GitHub Star 数量前 12 的开源无代码工具

NocoBase

GitHub 开源 无代码开发 无代码平台

Java 关键字之 native 详解

源字节1号

开源

低代码实践:题型物料场景化设计

XIAOJUSURVEY

开源 低代码 搭建平台 场景化思维 组件化架构

华为云DTSE助力易印云化架构升级,推动印刷包装行业智能化进程

华为云开发者联盟

人工智能 物联网 华为云 waf 企业号 8 月 PK 榜

B站安全开发流程落地实践

我再BUG界嘎嘎乱杀

网络安全 安全 哔哩哔哩 网安 安全开发流程

望繁信科技CEO索强出席2024新质生产力生态大会,畅谈中国AI聚沙成塔之路

望繁信科技

流程挖掘 流程资产 流程智能 望繁信科技 中国AI

焱融科技与神州鲲泰完成产品互认证 共建自主创新新生态

焱融科技

高性能存储 国产化算力

2024 年五大最佳构建内部工具的开源项目

NocoBase

低代码 开源项目 无代码平台

如何优雅的应对线上故障?

老张

监控告警 线上故障 应急响应 问题复盘

观测云全面兼容 Prometheus 生态

观测云

低代码实践:题型物料化设计(一)

XIAOJUSURVEY

开源 低代码 组件化 问卷

网页文本分类题赛后总结(排名第二)

阿里云天池

想要解析邮件?IMAP协议轻松助你,不再烦恼!

左诗右码

Go imap

uni-app正式支持鸿蒙原生应用开发

源字节1号

开源

七牛云点播实时转码上线,边转边播,又快又省

七牛云

转码

低代码实践:题型物料化设计(二)

XIAOJUSURVEY

开源 低代码 组件化 问卷模型

Datawhale 零基础入门CV赛事-Task4 模型训练与验证

阿里云天池

NocoBase 社区正式上线!

NocoBase

开源 低代码 无代码平台

加密项目的生死轮回:11亿美元融资的35个“死亡”VC项目剖析

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发

Google 推出 Gemma 2 2B 端侧模型;Github 新服务帮助开发者选择 AI 模型 丨 RTE 开发者日报

声网

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