写点什么

美团云的网络架构演进之路

2016 年 2 月 02 日

在传统的观念里,美团似乎一直被认为是家提供吃喝玩乐的团购平台。但其实,从深入电影、外卖等领域起,美团就早已不再是一家团购公司了,打开今天的美团 APP:电影、外卖、机票、酒店、上门、甚至周边游等多重垂直业务均被囊括其中。

2015 年年底,美团与大众点评宣布合并,合并后新美大的年活跃用户量达到 1.7 亿,高速增长的业务压力和巨额交易量的背后,是美团云提供的技术支持,让其保持着平稳运营。

作为领先的 O2O 电商云和大数据解决方案提供商,美团云在 2015 年入选了“TOP100 年度技术创新案例”。 而今天我们要分享的,则是美团云的网络架构从最初到现在,是如何一路演进而来的,在这个过程中,又产生了有哪些产品和哪些思考。

做云是水到渠成的事

总有人会问美团为什么要做云?做好电商才是美团该走的路。其实不然,亚马逊、阿里都是从电商起家的,而他们两家分别是国外、国内体量最大的,所以,大规模的电商网站具有把云做好的天然优势:

一方面,云的核心技术一定是由规模驱动的,大规模的电商在这方面有更深的积累。因为电商的特点除了流量大,其流量峰值波动也非常大,比如一些特殊的节日,用户访问量的峰值就会很高,所以电商在资源的弹性调度方面有更多的经验。2012 年,美团始逐步创建自己的私有云平台,2013 年 5 月正式对外推出公有云服务。2015 年更是扩建了新的数据中心,并推出了更多的组件服务。

另一方面,美团拥有的大数据相关实施经验,使得美团云能够对外提供更有针对性的大数据融合解决方案。

从技术角度来讲,美团网是一家完全云化的电商平台,规模体量居国内最大。目前美团的交易量仅次于阿里集团,只不过,阿里巴巴的电商业务绝大部分并未完全跑在阿里云上,而美团网所有的业务和交易,从 2013 年开始就完全跑在美团云上。

这个过程中,美团云在虚拟化、运维等方面积累了相当多的技术经验。同时,美团云对外输出的不仅是底层 IaaS 的云服务,更有大数据解决方案。因此,美团做云是一件水到渠成的事,美团云希望成为美团网技术积累对外输出的窗口,为更多的创业者、中小企业包括正在进行”互联网+”的传统企业提供基础设施云服务,解决大家在技术方面的后顾之忧,而能够专心业务发展。

从私有云到公有云

美团网早期架构是从私有云做起的。目标是,资源云化和快速交付。值得一提的是,美团云从一开始就没有完全选用 OpenStack,而是决定自研云平台。原因在于当时 OpenStack 并不成熟,只有个别组件比如 glance、keystone 是合适的,所以在虚拟化、网络层,美团云进行了自主研发。

现在看来,这样做是对的。因为 OpenStack 偏向私有云,如果当初完全基于 OpenStack,现在做公有云将比较困难。但美团云选择自研云平台,结合自身业务,所以现如今能够平稳地支撑着所有业务。

当处于私有云的阶段时,主要的事情是把资源动态管理起来,对访问控制和资源隔离没有做太多要求。最初,美团云主要通过账号登陆管理、日志进行事后审计。私有云之后,推出的是办公云。办公云主要针对研发、测试人员,进行内部的测试使用。在这个阶段,美团云已经开始为公有云做准备,建立了账号体系、计费系统等这些功能。

办公云的存在,在现在看来有一个很大的好处,就是每一个上线公有云的功能都会先在办公云上线,保证每一个功能的迭代都是稳定可靠的。也就是说,办公云实际提供了一个真实的线上测试环境。办公云之后,美团云对外推出了公有云服务。

早期的公有云和办公云的架构大体类似,拥有更用户友好、更完善的计费和消息系统、开放 API 等。其中,公有云最早的底层网络特点有几个,一是网络都是千兆网络,对软件性能要求不高。二是底层采用 VLAN 大二层,通过 OVS 控制器对用户进行隔离。由于早期流量不是太大,千兆的流量用 OVS 来控制尚可,控制器性能不够的情况尚且不多。但随着用户数量的增多,以及使用量的变大,后续开始出现问题。这也恰恰促成了美团云进入全新的网络升级时代。

从微观角度来讲,早期的公有云存在一些问题。首先,在稳定性上,内外网都是一根网线单上连一个交换机,一个地方出问题整个网络就会出问题。其次,外网、内网、管理网都是一根网线,这是在没有冗余的情况下,如果要做冗余的话,就要变成六根网线,成本太高昂。其三,千兆网络渐渐开始不能满足用户需求。还有一些隐藏问题,比如当时所有的用户都是在交换机的一个 vlan 网络下面。

理论上来说,这样是可行的。但实际上,交换机对 VLAN 的支持能力限制了网络规模的扩展,用户数量受到限制。再比如软件隔离占用宿主机计算资源,可能会出现响应不了或者抢占用户 cpu 的情况。同时,在这个网络下想实现用户自定义网络(vpc)就非常困难,灵活性低。
因此,在经过了不断地改进后,美团新的公有云网络架构在物理链路、主机网络、网关、控制器四个纬度上全面升级,大大提高了整体网络性能。

四个纬度上的性能释放

首先,从物理链路来看,性能方面,美团云实现了万兆互联;其次,在核心上实现了双机冗余,不会因为某个物理环节问题,导致网络不能启动;第三,采用了 TOR 交换机堆叠,双 40G 上联,随着日后网络流量的增加,可以再扩展。此外,在网线的选择上,美团云还采用了 10G Base-T 的电口万兆网络,这个技术比较新,很多交换机厂商都还没有这样的设备。但是它的成本较低,运维起来也会更方便。另外,在机房建设的过程中,美团云还使用了一些目前业界领先的技术,比如核心机柜封闭冷通道、预端接,对成本的节省都是百万级的。

机房出口挖断了怎么办?同城多个互联网数据中心(IDC)之间,通过边界网关协议(BGP)来进行备份和冗余。当有一个机房的网络断掉的时候,会通过边界网关协议的流量自动转移到另一个机房。

但是底层的物理链路是万兆,不代表上层能把万兆利用起来。我们花了更多的精力,解决如何把万兆网络利用起来的问题。一部分是网关,就是整个网络出口的部分,比如 DPDK 技术。DPDK 技术目前是被主流使用的技术方案,对释放网络性能有较大帮助。另一种,预留 1-2 个处理器(core)接受数据,一个处理器根据自己的逻辑负责处理控制信息,1-2 个处理器负责收包,其余处理业务,自己处理数据分发。

在实际使用中,美团云根据两种模型的优势,分别都有选择。在浮动 IP 网关、负载均衡网关、 DDoS 清洗设备三个部分,实现了全面的 DPDK 化,同时在四层网络上,能够并发 1000w 连接情况下新建连接 100w/s。

“以最小代价解决最大问题”

当网关不是瓶颈的时候,流量就能够自由通到主机上,所以接下来就是通过主机网络释放性能。美团云最早使用的 OVS V1.1 版本,在千兆网络下可行,但万兆网络下性能远远不够。升级到 V2.3 后平台后,Megaflow 对高并发情况下性能有数量级的提升,创建能够满足要求。

但另一个问题出现了,在单流的情况下,对万兆网卡的利用率仅为 50%。随后在升级到 V2.4,支持 DPDK 版本后,美团云进一步提升了单流转发性能。在新版本的 OVS 下,只要 10% 的计算资源就可以提供万兆的网络能力,网络数据处理不影响用户计算资源。这样一来,就解决了宿主机的物理网络瓶颈。

而在控制层面,有两个选择,一个是传统工具 eptables/iptables,二是 OVS 的方案。所谓 OVS 的控制方式,是配置流表,交由控制器处理。控制器决定是否放行,动态地下发对应流表,在 OVS 控制器对数据包进行过滤和处理过程中,美团云开发了软件层面的解决方案。针对单播,通过对 SYN 包检查,下发流表,并对每个不匹配的 UDP 包进行检查。

需要注意的是,由于发送端较难控制,而接收端对每个包处理,容易造成控制器队列积压。因此,美团云采用下发临时流表的方式解决积压问题,或者通过设置限流阈值,进行快速恢复。

但是软件层面的解决方案无法根本解决积压的问题,因此下一阶段的迭代就是在硬件层面进行隔离,通过 VXLAN 对用户进行隔离。说到选择 VXLAN,就要提到对 SDN 方案选用的一些思考:在底层的万兆物理链路之上,美团云选用了 Overlay 的网络架构。

简单来说,Overlay 的架构弹性灵活,业务与物理链接和端口分离,这就意味着网络不再受限于物理上的连接和端口数量,可以按照资源池的概念来分配网络资源。而 Underlay 作为整个 SDN 框架的基础,充分吸取和延续了过去长期积累的物理网络优势,稳定可扩展。一方面 ARP/OSFP/BGP 仍然值得信任,另一方面相关领域的运维专业人才相对储备也较多。在参考了业界最新的实践经验后,美团云选用了 VXLAN 的解决方案。

要做就做行业标杆

上述是在物理链路、主机网络、网关、控制器方面释放性能上,美团云所做的尝试。再上层就是让用户可以灵活地自定义自己的网络。为了应对灵活性的挑战,美团进行了相应的处理,比如分布式的 DNS。
在传统网络下,一般使用默认的 DNS 服务器地址,并通过源 IP 区分用户。但是在用户定义网络(vpc)的情况下,用户的地址是可以重复的。所以用户识别方面,需要将 VXLANID 的用户信息嵌入 DNS 数据包。另外在用户网络中,DNS 服务器的地址也是自定义的,所以实际的 DNS 服务需要使用 Underlay 地址,这里面就需要做地址的转换和映射。

总体而言,新公有云的网络结构全面升级为万兆网络层面,管理网做 Bonding,用户的内网外网 overlay 在管理网。VPC 层面,通过 VXLAN 隔离用户,并实现自定义的网络。最后对外提供丰富的产品功能,比如浮动 IP/ 负载均衡,对象存储 / 块存储,RDS/Redis 等。

未来,运维自动化的程度会进一步提高。通过 openflow 或者 netconf 等通信手段提取到控制器上,进一步整理和分析后,能够形成可视化的网络路径图,实现更高效的网络运维管理。

这些就是美团云网络架构一路演进的过程,在这个过程中,美团云的团队成员始终秉承着“以最小代价解决最大问题”的思路,将软件和硬件相结合,通过开源与自研,高效地实现了网络架构的迭代,成为了行业标杆,并为千万用户提供更稳定、可靠的基础设施云服务。

更多关于美团云网络架构的交流,欢迎扫描以下二维码或者加群主微信(微信号 greenguolei)进行交流。

2016 年 2 月 02 日 17:014979

评论

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

week6-conclusion

J

架构训练营第十三周作业

Geek_ce484f

架构师训练营第 1 期

架构师 01 期,大作业二

子文

第一周 ARTS打卡

Aelous

人工智能开始改变生活方式,区块链在人工智能时代的作用

CECBC区块链专委会

区块链

公司上市失败,投资方险被CEO和CTO坑 | 法庭上的CTO(27)

赵新龙

CTO 法庭上的CTO

从田间到餐桌,5G、IoT、AI如何催生智慧农业?

脑极体

再见,2020

Rayjun

年终总结

架构师训练营第一期思维导图

Leo乐

架构师训练营第 1 期

导致系统不可用的原因有哪些?保障系统稳定高可用的方案有哪些?请分别列举并简述。

落朽

智慧社区安防系统解决方案,智慧社区建设

13530558032

架构师训练营第一期大作业

Leo乐

架构师训练营第 1 期

区块链技术在智慧城市领域有五大应用价值

CECBC区块链专委会

区块链

架构训练营大作业

Geek_ce484f

架构师训练营第 1 期

简历造假的CEO和工作不满60天的CTO| 法庭上的CTO(28)

赵新龙

CTO 法庭上的CTO

Python进阶之Monad

大规模数据处理学习者

Python Monad

架构训练营大作业2

Geek_ce484f

架构师训练营第 1 期

SSM框架进阶笔记,阿里达摩院分享必是精品

Java架构师迁哥

week11-作业一

第六周作业

Binary

区块链溯源解决方案----产品实现全程追溯

13530558032

侵犯老东家“专利权”的技术总监 | 法庭上的CTO(26)

赵新龙

CTO 法庭上的CTO

Week11作业

lggl

week10-

架构师训练营 4 期 第一周

引花眠

架构师训练营 4 期

架构2期 - 第十一周作业(1)

浮生一梦

2组 第十一周作业

week10-根据当周学习情况,完成一篇学习总结

架构师训练营 大作业1

FG佳

重点人员管控系统开发,智慧公安平台建设

13530558032

论区块链技术与数字货币的发展

CECBC区块链专委会

数字货币 区块链技术

介绍一个新库: Norns.Urd.HttpClient

八苦-瞿昙

C# HTTP aop

InfoQ 极客传媒开发者生态共创计划线上发布会

InfoQ 极客传媒开发者生态共创计划线上发布会

美团云的网络架构演进之路-InfoQ