在2014-中国系统架构师大会上,网易云对象存储系统构架师来东敏先生作了题为《NOS(网易对象云存储)关键技术解析》的主题演讲。
NOS的四个层次
网易云对象存储,即NetEase-Object-Storage(NOS)是一个海量的Key-Value系统。其中,Key最大支持1K字节;Value最大支持1TB进制文件,如图片、视频等静态文件;Attribute则最多有10个键值对。目前整个网易云对象存储系统(NOS)主要分为“接入、缓存、逻辑、存储”四个层次。
接入层 使用Openresty(类似Tengine),其强大的Nginx-Lua模块实现了桶粒度实时流量统计、流量隔离等功能;另外,使用Nginx-Lua写了部分适合在接入层实现的逻辑;
缓存层 使用专业的缓存服务器TrafficServer,我们测试发现其无论在稳定性还是功能和性能上,都比Squid靠谱;我们用它实现热点数据以及富媒体处理后的临时数据缓存;
逻辑层 使用Tomcat实现对象存储主要的业务逻辑,由于Tomcat众所周知的在高并发上的短板,我们正在积极探索,计划使用Netty来替换Tomcat;
存储层 是对象存储系统的基石,NOS构建在网易分布式文件系统(DFS)和网易分布式数据库(DDB)之上,DFS做数据存储,而DDB则存储元数据。
NOS云对象存储关键技术
NOS从无到有经历了两年时间,当前网易内部使用NOS的产品有30个左右,包括:易信、云音乐、云阅读、公开课、有道云笔记等重量级产品。团队成员包括4位开发,2位测试,1位运维,0.5位项目管理。与公有云对象存储系统的项目团队相比,我们应该算是小团队作战。但是NOS在功能接口方面,与市面上的几家公有对象存储系统基本差不多,甚至为了兼容POSIX文件系统接口,我们还提供了“根据prefix和delimiter列出桶内对象”这样的高级接口。
具体来说,网易NOS云对象存储关键技术包括:
1.元数据存储组件:DDB
2.数据存储组件:DFS
3.列出桶内对象
4.基于NOS的用户态文件系统
5.富媒体服务框架
6.多租户流量隔离
其中,DDB分布式数据库系统(Distributed-DataBase)是网易杭研后台技术中心研发的分布式关系数据库平台。它的主要目标是解决以下问题:“海量结构化数据存储”和“高并发高吞吐数据访问”。
而DFS分布式文件系统(Distributed-FileSystem)则是网易杭研后台技术中心研发的分布式非结构化数据存储平台。主要负责解决“海量的非结构化数据存储”和“高并发高吞吐数据访问”引发的难题。
网易在DFS方案中采用了分区(Bucket)预留+-系统生成访问健(Docid)的方式,通过预先规划Bucket(2^24),不立即启用。而且访问键(Docid)也是由系统分配而不是应用程序指定。在增加一个物理节点时,系统会启用一批分区(Bucket)给该物理节点。当系统生成访问健(Docid)时,会使用新分配的分区(Bucket)。
网易云对象存储系统(NOS)提供了互联网上的存储服务,致力于提供高度可伸缩、高可靠的廉价数据存储基础设施,并给开发者提供最大程度的便利。对象存储把用户数据存储为桶里面的对象。对象由文件、描述文件的元数据信息组成。桶是对象的容器,一个用户可以创建多个桶,桶名称全局唯一。用户可以通过简单的REST接口,在任何时间、任何地点、任何互联网设备上进行数据的上传和下载,也可以使用WEB页面对数据进行管理。同时,NOS还提供了Java-SDK,简化用户的编程。用户可以基于NOS搭建出各种多媒体分享网站、网盘、个人企业数据备份等基于大规模数据的服务。
网易云对象存储系统架构师 来东敏
……
关注读览天下微信,
100万篇深度好文,
等你来看……