极分享:高质分享+专业互助=没有难做的软件+没有不得已的加班
就像所有好的项目一样,这个项目也是为了解决实际问题而产生的。
作为网站可靠性工程师,我们负责管理 Google 公司的基础设施。我们平时需要处理大量的内部使用的服务,而这些服务需要负载均衡来保障其可伸缩性和可靠性。在 2012 年,我们有两个不同的平台来提供负载均衡,它们都有不同程度的管理和稳定性的挑战。为了缓解这方面的问题,我们团队开始着手寻找一个替代的负载均衡平台。
在评估了一些包括现有的开源项目的平台之后,我们没能找出一个能够满足我们所有需求的平台,所以我们决定自己着手开发一个可靠和可伸缩的负载均衡平台。需求并不太复杂,我们需要能够处理单播(unicast)和任播(anycast)虚拟 IP (VIPs) 流量,使用 NAT 和 DSR (也被称为 DR) 执行负载均衡,执行针对后端的健康检查。特别是,我们需要一个容易管理的平台,可以自动部署配置的变化。
原有的两个平台之一是基于 Linux LVS 构建的,它在网络层提供了必要的负载均衡。这方面已被证明是成功的,所以我们选择在新的平台中保留它。在项目初期我们就确定了几个设计决定,首先是使用 Go 语言,因为它提供了实现并发的强大方法(goroutines 和 channels) 以及方便的进程间通信(net/rpc)机制。其次是要实现一个模块化的多进程架构。第三,如果遇到了未知状态,能够简单地退出(abort)和终止(terminate)进程,这种情况理想上是做故障转移和/或自我恢复。
Read full article from 极分享:高质分享+专业互助=没有难做的软件+没有不得已的加班
No comments:
Post a Comment