Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Maglev: A Fast and Reliable Software Network Load Balancer #281

Open
gaocegege opened this issue Nov 10, 2021 · 3 comments
Open

Maglev: A Fast and Reliable Software Network Load Balancer #281

gaocegege opened this issue Nov 10, 2021 · 3 comments

Comments

@gaocegege
Copy link
Member

gaocegege commented Nov 10, 2021

https://research.google/pubs/pub44824/

来源:来自 Ebay 的同事

@gaocegege
Copy link
Member Author

@gaocegege
Copy link
Member Author

gaocegege commented Nov 15, 2021

这篇文章主要介绍了谷歌生产环境(曾经?)的 IP 层(OSI 第三层)负载均衡软件实现的设计与实现。

众所周知,负载均衡分为硬件方案和软件方案两种。硬件方案最典型的代表是 F5,软件方案则包括 nginx 等。

截屏2021-11-15 上午10 46 53

硬件方案如左图所示。像 F5 这样的硬件负载均衡器虽然能够解决问题,但是存在非常多的缺点:

  • 成本非常高。这里的成本是不同维度的,不仅是设备本身贵,学习 F5 本身的成本也非常高。特定的硬件需要特定的知识,而且无法扩展到其他领域。
  • 利用率低。一个 F5 工作的时候一定需要一个完全冗余的副本,在工业界一般它们被称作一对负载均衡器。这一对负载均衡器的理论最大利用率也只有 50%,也就是一个满负载工作,一个 backup 看戏(
  • 扩展性差。系统的瓶颈往往会来自负载均衡器的理论上限,难以横向扩展。

谷歌向来的设计原则是用尽可能便宜的主流商用机器解决问题,在负载均衡这件事情上也是一样的。因此 Maglev 可以被当作是为了取代 F5,打败邪恶的领域特定硬件的软件负载均衡方案。软件方案的好处有很多:

  • 降低成本,普通的 Linux 服务器就可以运行软件负载均衡器,不需要特定硬件和特定知识
  • 扩展性好,只需要横向地增加软件负载均衡实例就可以不断提高负载均衡器的理论 QPS 上限
  • 利用率高,之前利用率的理论上限是 50%,因为工作节点和 backup 节点的数量是 1:1,而软件方案可以做到 N/N+1 * 100% 的利用率,因为可以让工作节点扩展到 N 个,同时只留一个 backup。

具体的细节可以参考 https://manjusaka.itscoder.com/posts/2020/05/23/a-simple-introduction-about-maglev/

@gaocegege
Copy link
Member Author

envoyproxy/envoy#2267

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant