网易杭州研究院(以下简称“杭研”) 成立十周年之际,杭研正式推出了网易云。“十年•杭研技术秀”系列文章,由杭研研发团队倾情奉献,为您展示杭研那些有用、有趣的技术实践经验,涵盖云计算、大前端、信息安全、运维、QA、大数据、人工智能等领域,涉及前沿的分布式、容器、深度学习等技术。正是这些宝贵的实践经验,造就了今天高品质的网易云产品。本文的分享来自网易杭州研究院云计算平台产品部,翔实地描述了网易云存储系统从无到有以及一路披荆斩棘不断完善的历程。
一、从0诞生
2012年云计算在业界已经风起云涌,其为企业带来的价值为世界所认同,按需提供的计算、存储、网络等底层IaaS基础设施,以及丰富的PaaS和SaaS服务,为IT公司产品的开发、运营和快速可持续发展提供了强有力的支撑。云计算犹如肥沃的土壤,让各种产品和idea犹如雨后春笋般在清新的空气和阳光中快速成长。
同样地,网易杭州研究院也早已蓄势待发,准备捋起袖子大干一场,如同追风少年,驰骋于时代浪潮之巅。
其中后台技术中心存储平台开发组NOS(NetEase Object Storage)团队在紧锣密鼓地打造面向整个公司的云存储服务,希望更好地整合底层的存储资源并以开放协议(HTTP RestFul)提供给网易的各个开发团队使用。
巧妇难为无米之炊,而对于NOS团队来说,米缸里的米俨然已经准备好。在其他互联网企业高呼去IOE之前,网易杭州研究院早在2006年就已经开始打造分布式文件存储服务和分布式数据库服务来满足公司当前和未来业务的发展,这两个系统分别是DFS(Distribute File System)和DDB(Distribute Data Base)。DFS的目标是整合诸多服务器的存储资源为上层应用提供海量的存储系统,支撑横向按需扩容。DDB的目标是整合底层的关系型数据库服务,为上层服务提供海量的数据库服务。DFS和DDB的设计都秉承了“Keep it Simple”的系统设计理念,对于大型分布式系统来说,简单尤为可贵,简单意味着可控、不易出错和强大的生命力。
图1为DFS的基本设计架构图。每个对象有一个全局唯一的64位文档ID号,按照24+10+10+10+10切分为四段,分别代表桶号、目录结构和文件名(避免本地文件系统单目录下元数据的限制), 每个SN管理多个磁盘,多个SN上的磁盘做成磁盘对,桶建在磁盘对上,桶和SN的最终映射关系缓存于客户端。客户端FSI直接根据缓存的映射关系写多份副本。
图1 DFS的基本设计架构
DFS分布式文件存储系统在邮箱大附件和网易网盘业务中得到了非常成功的应用,承担了所有网易邮箱附件存储服务,存储规模早已达到PB级别,为网易邮箱的快速可持续发展提供了强有力的支撑。DDB分布式数据库架构这里不再赘述,感兴趣的读者可以参阅DDB架构实践(复制到浏览器查看:tom.nos-eastchina1.126.net/DDBDesign.pptx)。
当时,这些基础组件,如DFS分布式存储系统,使用模式为一个产品部署一套,譬如邮箱网盘、大附件、相册、网易博客等都会单独部署一套。由于网易新产品层出不穷,这种模式就导致了大量的运维工作,并形成非常多的资源孤岛,多个产品不能融合共用资源,造成大量的资源浪费。
随着时间的发展,云服务的思维方式慢慢深入人心。团队决心改变这种模式,在这样的背景下,NOS立项,基于DFS和DDB,8人团队用1年多的时间成功打造了一款功能媲美AWS S3的云存储系统,于2012年10月30日成功上线,如图2所示。NOS呱呱坠地意义重大,伴随着其它云计算产品陆续完成上线,网易正式进入云计算新时代。
图2 2012年的云存储服务
二、成长之痛
如同婴儿诞生,NOS上线之初,经历短暂平静后便开始摸爬滚打,一路荆棘一路坎坷,不断成长。
2012年上线之后,接入NOS的第一个产品是网易云课堂,承载课堂上的所有图片和视频;后续不断有网易公开课、网易云音乐、有道云笔记、网易云阅读、网易花田、印象派、网易游戏官网等网易互联网产品的接入。上线之初,产品的架构能够很好地满足当时的系统负载,顺风顺水度过了半年的时间。