首页 存档 技术 查看内容

Google开源Go语言编写的负载均衡系统Seesaw

2018-3-30 13:00 |来自: 互联网 717 0

摘要: Google网站可靠性工程师(Google Site Reliability Engineer)Joel Sing撰文介绍了他们新开源的Seesaw系统。 和所有好的项目一样,Seesaw项目之所以问世,也是有些痛点要解决。 缘起 SRE团队管理着Google的很多基础 ...

Google网站可靠性工程师(Google Site Reliability Engineer)Joel Sing撰文介绍了他们新开源的Seesaw系统。

和所有好的项目一样,Seesaw项目之所以问世,也是有些痛点要解决。

缘起


SRE团队管理着Google的很多基础设施,考虑可伸缩性和可靠性,很多内部服务都需要做负载均衡。在2012年,当时他们使用的是两个不同的平台来提供负载均衡,遇到了不少管理和稳定性方面的挑战。为解决这些问题,Joel Sing的团队开始考虑寻找替代平台。

调研了很多平台(包括现有的开源项目),并没有找到一个适合他们需求的。于是决定自己开发一个健壮、可伸缩的负载均衡平台。

需求并不复杂:

  • 能够处理Unicast和Anycast VIP流量

  • 支持通过NAT和直接路由连接的集群(欲进一步了解相关这两种技术,可以阅读“LVS集群中的IP负载均衡技术”http://www.linuxvirtualserver.org/zh/lvs3.html)

  • 对后端服务进行充分的健康状况检查

  • 易于管理(包括配置变更时自动部署)

现有的两个平台均构建于Linux LVS(LVS项目为章文嵩博士于1998年发起)之上,LVS在网络层提供了必要的负载均衡能力。Seesaw仍然基于LVS。

设计决策


  1. 选择Go语言来实现。

    1. 强大的并发支持(goroutine和channel)

    2. 很容易实现进程间通信(net/rpc)

  2. 实现一个模块化的多进程架构。

  3. 如果遇到未知状态,直接中止并停掉相关进程。(有点像Erlang的“let it crash”策略)

经过一段时间的集中开发,Seesaw已经完成并部署,替代了之前的两个平台。整体而言,增加了服务可用性,并降低了管理成本。代码也在GitHub上开源了。需要注意的是,这并不是Google对外提供的产品,所以不会有官方支持,不过源代码也可以给其他开发人员一些参考,价值很大。

点击阅读原文,查看Seesaw的GitHub页面。

本文转载自:微信公众账号 - 开发资讯,版权归原作者所有!

声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部