共计 2342 个字符,预计需要花费 6 分钟才能阅读完成。
2018 天猫双 11 全球狂欢节,全天成交额再次刷新纪录达到 2135 亿元,其中总成交额在开场后仅仅用了 2 分 05 秒即突破 100 亿元,峰值的交易量达到惊人的高度,背后离不开阿里云大数据计算和存储能力的支撑。在整个交易的链路上,账单业务是一个重要的环节,尤其对商家系统来说,需要定期对账,账单子系统出现一点点问题都会影响商家的运营,2018 的双十一,承载账单的消息系统把全网卖家账单系统 60% 的流量托付给了阿里云文件存储。在 11 日 0 点的峰值交易时刻,账单消息系统的写入流量瞬间达到日常流量的 60 倍以上,阿里云文件存储表现稳定,顺利扛下这一波洪峰,帮助业务系统完美度过 0 点的考验。本文将介绍阿里云文件存储的背景,以及文件存储是如何来保障业务系统应对高压力的。
什么是云上的 NAS 文件存储在阿里云的发展早期,在云服务器 ECS 上运行的应用需要进行数据存储时,有两个选择:
云盘:兼容应用的 IO 接口,但是和物理机使用硬盘一样,云盘和 ECS 绑定,单块云盘只能特定 ECS 访问;OSS:多 ECS 可以共享访问,但需要应用调整 IO 接口,使用 OSS 的 REST 接口;但如果应用既想保留原有的 IO 接口(一般是 POSIX 接口),又需要实现多 ECS 共享存储,就没有很好的解决办法。NAS 文件存储在这样的背景下应运而生,针对传统企业级应用的存储需求,通过标准 NAS 系统协议(NFS/SMB),为 ECS 提供共享存储,支持随机读写以及 PB 级别容量,并且支持容量动态扩展,方便业务从小规模逐渐扩大过程中,不需要再担心存储容量的扩容以及运维问题。
阿里云 NAS 文件系统从 2016 年推出至今,已经应用在丰富的业务场景中,包括高 HPC 性能计算、Web 服务和内容管理、媒体和娱乐处理工作流、容器存储、基因和生命科学数据存储处理,深度学习大数据处理等等,很好地服务了云上的客户。
NAS 文件存储架构设计阿里云文件存储是一个可共享访问,弹性扩展,高可靠,高性能的分布式文件系统,其架构设计如图 1 所示。
图 1:阿里云文件存储架构
整个技术栈分五层,第一层是各类计算节点(比如 ECS、Docker、GPU 等)不同操作系统使用标准文件协议 NFS/SMB 访问文件存储。第二层是阿里云网络负载均衡,把客户端请求轮转发送到前端机。第三层是负责协议处理的前端机,具备 scale-out 的能力。第四层是文件系统元数据管理,实现高效的数据结构保证元数据的快速操作。第五层是元数据和数据的持久化存储,使用阿里云盘古存储系统。
整个架构通过盘古保证高可靠,另外通过文件存储高效的数据和元数据管理技术实现 scale-out、高可用,超高的数据访问性能以及一系列企业级存储的特性,如图 2 所示。
图 2 阿里云文件存储特性
账单业务消息系统适配文件存储随着云上文件存储的知名度越来越广,阿里集团的很多内部业务也开始接入文件存储,其中就包括支撑账单业务的消息系统。
架构设计消息系统的存储本来使用的是本地盘,这样最主要的问题就是当单机故障时,存储在磁盘上的数据没法及时被其他主机访问,其他主机不能快速接管原来主机的业务,缺乏容灾的能力,对应用的影响非常大。而使用文件存储天然具有多机共享访问的能力,可以很好的解决这个问题。
但是,如果只是简简单单地做一个替换,把本地存储换成文件存储,如图 3 那样,
图 3 本地存储替换成文件存储(共享访问)
多台 ECS 通过 NFSv4 挂载同一个文件系统,每个 ECS 会使用到一个文件系统里的多个子目录作为消息文件的存储空间,虽然解决了前述的容灾问题,但这个架构的问题是过于依赖单点的存储,万一单文件系统发生故障,所有消息队列的访问都会受到影响,因此需要对架构进行进一步调整。调整的基本思路就是将流量尽量打散到多个文件系统上,同时又避免对业务方软件的改造。
调整后的架构入图 4 所示,为业务创建多个虚拟云机房,每个虚拟云机房的消息系统存储由 4 个 NAS 文件系统来承载,消息系统计算节点 ECS 会同时挂载 4 个文件系统,并且通过软链接的方式在‘nasroot’目录下看到多个队列,对业务使用上来说,这些队列对应的目录是在同一个文件系统(原来的架构)还是多个文件系统(新的架构)是不感知的,这样就将业务需要改造的量最小化,只需要在部署时候进行相应的自动化(挂载和创建软链接)即可,但带来的好处是巨大的,万一发生单文件系统的故障,业务可以自动分流到存活的文件系统,可以有效应对各种故障场景。
图 4 架构优化
细节优化相对于使用本地盘,计算存储分离架构下,如果应对存储测的异常和故障呢?标准的 NFS 挂载下,如果服务端出现故障或者网络发生故障,客户端访问文件存储将会是完全 hang 住,直到服务或者网络恢复为止。针对这个问题,消息系统进行了相应改造,业务系统对消息的一致性保障进行了优化,可以支持写消息失败。这样就可以使用 NFS 的 soft 挂载模式,当服务端出现故障或者网络发生故障时,应用程序将不会再是完全 hang 住,而是能迅速监测到 IOError,并立即采取对应的行动。结合前述的架构设计,应用程序能进行快速响应,把流量分流到其他存活的文件系统上,快速恢复。
双十一的考验经过架构设计和细节优化,文件存储的 scale-out 能力在双十一尖峰发挥出了应有的能力,即使在 0 点时刻流量是平时的 60 倍以上,表现依然稳定,在文件存储的给力表现下,业务系统的响应依然如日常一样顺滑,完全感觉不出超大流量对系统的冲击。
总结阿里云文件存储为云上业务提供支持标准接口(POSIX)以及标准文件访问协议(NFS,SMB)的存储服务,并且具有简单易用、安全可靠、性能和容量 scale-out 等特性。经过双十一的锤炼,文件存储的服务能力必将继续上升一个台阶,将提升后的能力以普惠技术的形式向云上各行各业输出,推动社会生产力的发展。