开发者社区> boxti> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

GitHub 将开源内部负载均衡软件

简介:
+关注继续查看

GitHub负载均衡系统最初是为了处理Git的数十亿日常连接而开发的。

GitHub将发布开源版的GitHub负载均衡软件(GLB),这是内部开发的负载均衡系统。

开发GLB的初衷是满足GitHub的这一要求:每天处理数十亿的HTTP连接、Git连接和SSH连接。而如今,这家公司将通过开源来发布GLB的组件,到时会透露设计方面的细节。

GitHub的高级基础设施工程师乔·威廉斯(Joe Williams)和GitHub的基础设施工程经理西奥·朱利恩(Theo Julienne)在一篇共同撰写的公告中说:“在过去,我们的负载均衡层一向是比较复杂的组件之一。传统上,我们纵向扩展这个部分,运行一小批运行haproxy的超大型机器,并使用非常特定的硬件配置,以便实现专门的10G链路故障切换机制。”

但是这个负载均衡平台遇到瓶颈后,该公司开始着手开发自己的解决方案。这个新平台要满足某些目标,包括横向扩展、高可用性、支持连接清空(connection draining),并且能应对分布式拒绝服务(DDoS)攻击。“为了实现这些目标,我们需要重新考虑IP地址与主机之间的关系、我们的负载均衡层包括的各个层,以及连接是如何路由、控制和终结的。”

GitHub在设计负载均衡平台时,为流量引导器(traffic director)这层竭力改进常见模式。该公司最后选用了一种支持多个查询的聚集哈希(rendezvous hashing)。每个代理主机存储起来,并被分配一个状态,然后处理连接清空。固定大小的转发表生成后,使用聚集哈希的排序组件,每一行都填满了代理服务器的地址。表和代理主机状态被发送到引导器服务器,并保持同步。

TCP数据包一发送到引导器,源端IP就经过哈希处理,生成指向转发表的一致性索引。数据包在注定发送到代理服务器内部IP的另一个IP数据包里面加以封装,并通过网络发送出去。代理服务器收到经过封装的数据包后,拆开数据包,在本地处理原始数据包。出站数据包使用服务器直接返回(Direct Server Return)模式,那样发送到客户端的数据包就直接发送到客户端、绕过引导器这一层。

这两位工程师说:“我们着手设计一种新的引导器层,它具有无状态性,让引导器和代理节点都可以从容地退出轮转,在任何可能的情况下,对用户没有干扰。一些用户生活在互联网连接不尽如人意的国家,所以合理大小的代码库的长时间运行副本不会在合理时间的计划维护期间出现故障,对我们来说很重要。”

文章转载自 开源中国社区 [http://www.oschina.net]

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
收藏GitHub上的7个热门TypeScript项目
这里收藏Github上 7个热门TypeScript项目(相关数据是截止2021年04月06日),可以让你的开发变得轻松。编码能力的提升最佳途径就是阅读开源项目源码。
96 0
Github项目搜索技巧! 教你高效地在GitHub上寻找开源项目
本篇文章是一篇Github项目搜索技巧介绍的文章。主要帮助大家如何熟练使用Github的搜索来找到自己想要的项目。介绍了项目名称搜索,项目详情搜索以及项目描述搜索几种方式。最后介绍了如何寻找到一个高质量的,值得学习的项目。通过这篇文章的指导,可以让你高效地寻找到优秀的开源项目来提升自己的项目经验。
166 0
Android Studio分享项目到github上
终于建了一个自己个人小站:https://huangtianyu.gitee.io,以后优先更新小站博客,欢迎进站,O(∩_∩)O~~ 在使用studio开发的项目过程中有时候我们想将项目发布到github上,以前都是用一种比较麻烦的方式(cmd)进行提交,最近发现studio其实是自带这种功能的,终于可以摆脱命令行了。
1637 0
【全球首份区块链技术演进报告】Github 9万项目存活率仅5%,附Top20榜单
近来区块链俨然火到有“燎原之势”,相关公司、股票、产品层出不穷。深交所昨日发布公告呼吁强化区块链概念炒作监管。是时候理性看待区块链了。德勤最新研究利用Github平台上的元数据,对近9万区块链项目进行了实证分析,追踪2009年起至今的区块链技术演进,帮助投资者透过泡沫探寻本质。
5332 0
Ubuntu运行GitHub获取的Django项目
经常在github看到一些优秀的Django项目,但Django的运行需要大量的依赖,这里分享一下,从github获取Django项目,并在本地运行项目的小经验.
1354 0
不容错过的2017数据科学15大热门GitHub项目
本文作者通过回顾2017年的数据科学发展路径,为数据科学爱好者汇总了2017年数据科学15大热门GitHub项目。
5955 0
如何把项目托管到GitHub
一.进入GitBash   红圈部分是clone的仓库所在地址,从左面左上角的Administrator或者C:\Users\Administrator.PC-201505250855都可以进入。
1258 0
+关注
boxti
12535
文章
问答
文章排行榜
最热
最新
相关电子书
更多
开发者专场-瓦力 探索实时计算新架构-Apache Flink 的云原生部署架构和实践最终版
立即下载
负载均衡是如何支撑几亿手机微博用户访问的 -高性能负载均衡研发和应用实践
立即下载
架构分析、数据整合、负载均衡,梦想旅行解析云上实践
立即下载