随着计算机网络、网格计算、WEB服务、新型WEB应用等理念和技术的发展,万维网己经从一个传统的HTML文件共享、交换、访问平台转变为任意信息资源的共享平台,架构与互联网之上的云计算模式成为了大势所趋。云计算中最重要一类是数据密集型的计算,其核心内涵是数据管理。传统的数据管理技术难以满足这些应用所提出的对数据管理的需求。本文借鉴传统数据管理技术的理念,研究、设计了一个基于CouchDB的高可扩展、高可靠的海量图片存储管理系统。
1 云计算的定义及特点
云计算是以一种融合的方式,通过网络作载体,以虚拟化技术为基础,以提供基础架构、平台、软件等服务为形式,整合大规模可扩展的计算、存储、数据、应用、IT资源等分布式计算资源进行协同工作的超级计算模式。在云计算模式下,用户不再需要购买复杂的硬件和软件,而只需要支付相应的费用给“云计算”服务提供商,通过网络就可以方便地获取所需要的计算和存储等资源。在计价上采用了更灵活的方式。从管理视角,云计算提供了一种管理大量虚拟化资源的方式,它们可以被自动的汇聚并提供服务,可以弹性的进行服务的提供和扩展。云计算是一种新的用户体验和业务模式,具备服务标准化、快速部署、灵活的计费、容易访问\获得的特点。云计算作为一种基础架构管理和服务提供方法,具备虚拟化资源、弹性扩展的提供服务、按照一个大资源池的方式进行管理的特点。
云计算是一种计算模式,利用互联网技术把大量可扩展(和弹性)的IT相关的能力作为一种服务提供给多个用户按照运营模式可以分为公共云、私有云、混合云3种。
公共云:通过自己的基础架构直接向用户提供服务。用户通过互联网访问服务,并不拥有云计算资源。
私有云:企业自己搭建云计算基础架构,面向内部用户或外部客户提供云计算服务。企业拥有基础架构的自主权,并且可以基于自己的需求改进服务,进行自主创新。
混合云:也就是既有自已的云计算基础架构,也使用外部公共云提供的服务。
2 云计算的关键技术
云计算是以数据为中心的一种数据密集型的超级计算模式。在数据存储、数据管理、编程模式、并发控制、系统管理等5个方面具有自身独特的技术。
1)海量分布式存储技术
为保证保证存储数据的可靠性、高可用性和经济性,云计算的存储数据采取分布式冗余存储存储方式,以高可靠软件来弥补硬件的不足,从而对外提供廉价可靠的系统。为了满足大量用户的需求,数据存储技术必须具有高吞吐率和高传输率的特点。
云计算的数据存储系统主要有Google的GFS(Google File System)和Hadoop开发团队开发的开源系统——HDFS(Hadoop Distr4buted File System)。大部分IT厂商,包括Yahoo、Intel的云计划采用的都是HDFS的数据存储技术。
2)并行编程模式
为了高效利用云计算的资源,使用户能够更轻松地享受云计算带来的服务,云计算的编程模式必须保证后台复杂的并行执行和任务调度对用户和编程人员来说是透明的。云计算采用Map-Reduce编程模式,将任务自动分成多个子任务,通过Map和Reduce两步实现任务在大规模计算节点中的调度与分配。
3)数据管理技术
云计算对大数据集进行分析、处理,向用户提供高效服务,因此,数据管理技术必须能够高效地管理大数据集。另外,如何在规模巨大的数据中找到特定的数据,也是云计算数据管理技术所必须解决的问题。云计算系统的数据管理往往采用列存储的数据管理模式,保证海量数据存储和分析性能。
4)分布式资源管理技术
在多节点并发执行环境,分布式资源管理技术是保证系统状态正确的关键技术。系统状态需要在多节点之间同步,关键节点出现故障时需要能够自动迁移服务。分布式资源管理技术通过“锁”机制来协凋多任务对资源的使用,从而保证数据操作的一致性。
5)云计算平台管理技术
云计算资源规模庞大,一个系统的服务器数量可能会高达10万台,且很有可能跨越几个坐落于不同物理地点的数据中心,同时还在其上运行着成千上万种应用。如何有效地管理这些服务器,保证这些服务器组成的系统能够提供每天24小时不间断服务是一个巨大的挑战。云计算系统管理技术是云计算的“神经网络”,它能使大量的服务器协同工作,方便地进行业务部署和开通,快速地发现和恢复系统故障,使云计算系统通过自动化、智能化的手段实现大规模的可运营、可管理。
3 云计算中数据管理系统应具备的特征
大规模云存储技术与分布式数据管理系统结合,能够为各行各业提供了一个海量存储空间,并支持灵活扩展、高性能访问的文件共享存储平台。平台具有的一些属性和特征
1)高效性
云计算是一种随用随付费的模式,耶么使用云计算资源的费用会随着所需要的存储、网络带宽和计算机能源线性增长。因此,如果数据分析软件产品A比B需要更多的计算单元去执行相同的任务,那么产品A就需要比B花费更多。因此,能用尽量少的资源去完成尽量多的任务的系统也就是我们所要寻找的。
2)容错性
容错性在分析型数据工作环境中的度量与在传统工作环境中不同。对于传统的工作,一个具有容错性的DBMS可以从一个错误中恢复而不会丢失任何数据或恢复到最近一次完成的事务;而在一个分布式数据库环境中,则可以成功的提交事务并在一个工作负载中前进,甚至面对工作节点错误。对于分析型工作负载中只读的请求,没有写事务的提交,也没有在节点失效时更新的失败。因此,对一个具有容错性的分析型DBMS简单的来说,如果一个与请求处理失败关联的节点失效,则不需要重发一个请求。
3)操作加密数据的能力
如敏感数据在上传到云中之前有可能被加密。为了防止对这些敏感数据未经授权的访问,任何运行在云上的应用都不应该能够在访问之前直接解密数据。然而,为了进行解密而把整个表或列从云中传输出来对带宽来说也是个挑战。因此,数据分析系统应该具有能够直接操作加密数据的能力,使得最终只有较少的数据需要被传输到别的地方进行解密,这样就明显提高了性能。
4)提供接口的能力
有很多面向用户的商业智能工具是与数据库软件协同工作并在形象化、查询生成、结果统计和高级数据分析方面起到一定帮助作用的。这些工具是分析型数据管理系统的一个重要组成部分,因为商业分析师通常在技术上不是很精通并且并不喜欢直接面对数据库软件。这些工具一般通过ODBC或JDBC与数据库进行连接,因此希望处理这些产品的数据库软件必须通过这些连接接收SQL请求。
4 图片数据存储管理系统设计与实现
4.1 需求分析
随着网络技术的普及应用和人们生活方式的改变,在线交易和服务需求的不断增长,对企业存储、保护和管理数据的能力提出了更高的要求。尤其是对淘宝网这样的访问量极高的电子交易网站来说,对图片系统的要求更高。根据对淘宝网流量分析,图片的访问流量会占到90%以上,而主站的网页则占到不到10%。淘宝整体图片存储系统容量1 800 TB(LSPB),已经占用空间990 TB(约IPB),平均图片大小是18.45 K;大规模的小文件存储与读取,磁头需要频繁的寻道和换道,因此在读取上容易带来较长的延时。这就给淘宝网的系统带来了一个巨大的挑战。传统的存储架构由于扩展性较差,当用户量及性能需求增加时,只能一味地添加高端存储设备。长此以往,存储环境就会变得日益复杂,管理和运营成本更高,并造成了过高的能源消耗。同时,过于复杂的存储架构和备份方式也很难满足用户日渐增长的数据管理和容灾需求。而云存储作为一种新兴的技术理念,正在改变着传统存储的提供与使用方式,也对存储行业带来了深远影响。经过长时间的摸索,我们发现这些具有海量存储需求的用户,只有应用了更低成本、具有更高可扩展性的云数据管理体系,才能满足其爆炸性增长的存储需求。
4.2 系统设计目标
为了解决大规模小图片文件的高效存储和访问的问题,我们在己有的云平台上设计并实现了一个高可扩展、高可靠的海量图片存储、管理系统。该系统的设计目标:
1)大规模、支持灵活扩展
我们要构建的图片云存储系统能够支持TB规模的存储容量,且非常容易进行扩展,整个扩展过程又不能影响服务的持续运行。这样图片云存储系统良好的伸缩性可以让使用的用户灵活的投资存储基础架构,减少投资风险。
2)高可靠性
在用户实际应用环境中,各种不同类型的软硬件故障发生的概率非常大,如硬件损坏、网络中断、系统崩溃等异常都会引起存储服务中断,甚至造成数据丢失。图片云系统是一个构建在云之上的海量图片存储管理系统,因此它可利用云计算环境一些特有的容错性来保障服务的高可靠性。
4.3 系统体系结构设计
根据上述设计目标,图片云系统应该是一个能够提供海量存储空间,并支持灵活扩展、高性能访问以及容灾和备份的图片文件存储管理平台。其系统结构由客户端(ClientAgent,CA)、负载均衡服务器(Load Balancing Server,LBS)、元数据服务器(Meta data Server,MDS)和对象存储节点(ObjectStorage Node.简称OSN)4大部分组成。
客户端(CA)向外为客户提供各种应用服务,CA安装在用户服务器上。用户通过CA访问系统,进行读、写、修改等操作。如万维网服务、数据库、文件服务、科学计算等。
负载均衡服务器(LBS)位于客户端与元数据管理服务器集群的中间。LBS在这个位置上除了能够支持系统的水平伸缩外,还能够保证大量客户高效、稳定的访问该系统。多台元数据管理服务器都部署上CouchDB数据库,因此每台机器都能向外提供相同的服务。如当客户端发出请求时,LBS会根据下一层各元数据管理服务器的负载情况来将请求分留给适合的元数据管理服务器,达到集群负载均衡的目的,这样当请求的数量比较大的时候,就不会出现请求长时间不被处理,因而客户对系统的访问就会更高效。
元数据服务器(MDS)部署着CouchDB数据库,它管理着整个系统的元数据和对象数据的布局信息,数据库用来存储图片文件系统中所有的元数据,包括图片名称、图片规格、访问控制信息、存储位置等。
传统的存储集群系统里元数据存储只有一份,通常由中心节点来管理,因而很容易成为系统的瓶颈。对于图片云系统,不存在中心管理节点,元数据存储在无中心的、完全分布式的元数据服务器集群中。集群中的元数据服务器都是完全对等的,通过CouchDB的相互备份,使得系统读写性能大大增强,且易于扩展。
对象存储节点(OSN)用来存储用户的图片。每个存储节点都是独立的存储设备,负责对象数据的存储、备份、迁移和恢复,并负责监控其它存储设备的运行状况和资源情况。同时,存储节点上运行着虚拟化存储管理软件,并存储了应用程序所需的数据。
当用户访问该系统时,首先会向CA以Web Service形式提供一个数据库请求(增、删、改、查),并提供一个UUID;该系统的核心管理模块MDS根据UUID得出要访问的元数据服务器节点ID和要访问的图片ID:之后MDS会访问CouchDB中对应的元数据信息,读取图片存储位置信息,然后便直接访问对应的OSN完成数据存取或访问等操作;在该过程中,有效地防止了MDS负载过重,大大提高了系统效率。
4.4 系统功能分析
基于云计算环境的高可扩展、高可靠的海量图片存储管理系统旨在为用户提供一个解决海量图片存储的平台。平台通过提供公用的访问接口,和客户端的各种应用程序组成一个复杂的系统,通过应用程序来对外提供数据存储和业务访问服务。系统包括数据管理模块和平台管理模块两部分,平台管理模块包括数据备份和数据迁移。数据管理模块包括图片存储、图片删除、图片信息查看和图片信息更新。
其中,元数据管理模块的具体功能就是实现对图片的存储、查看、更新和删除4个基本功能,是提供给客户端的可见的功能;而平台管理模块则是为实现系统的可扩展性和高可靠性而提供的一种内部机制,其中数据备份主要是通过使用冗余机制来保证文件系统的数据不会丢失,例如发生一台MDS突然崩溃,这时多点备份就可以保证整个系统还能够继续正常运行,用户的操作不会受到影响。在图片云系统中,数据备份主要是通过元数据管理服务器的分布式复制来实现的。
元数据管理界面采用完全分布式的元数据管理服务器集群,每台元数据管理服务器上都部署上CouchDB数据库。该模块主要管理图片存储系统的元数据和进行存储对象的分配和布局。元数据管理包括图片文件名称、格式、大小、创建时间、访问权限、存储位置等等。
数据迁移主要是实现数据在不同的存储节点之间的迁移。例如,当系统中的一台服务器需要暂时停止工作进行维护,而它上面的数据还希望能够被访问,从而不会影响整个系统的正常运行,那么这个时候就需要将该服务器上的数据动态(不需要停服务器)的完全复制到另外一台备用服务器上,此过程对客户端是透明的,即客户端完全不知道系统发生了什么。该系统中,数据迁移的实现主要依赖于元数据管理服务器上CouchDB的分布式复制和完全同步机制。
在该系统中,负载均衡我们采用软件技术来实现,主要通过在客户端和元数据管理服务器集群中间添加一台机器作为负载均衡服务器,而负载均衡服务器上部署Apache服务器,基于Apache的mod_jk和mod_Proxy来实现负载均衡。例如,当客户端发出请求时,LBS会根据负载均衡算法来将请求分留给适当的元数据管理服务器,达到集群负载均衡的目的,这样当请求的数量比较大的时候,就不会出现请求长时一间不被处理的情况,从而实现高效访问。
为了解决海量小图片存储管理的高可靠性和高可扩展性的问题,构建了图片云系统作为一个分布式的海量图片存储管理系统,它在分布式环境下的读写性能是评价该系统的一个主要指标。影响该系统读写性能的主要体现有两部分,一个是负载均衡模块,一个是CouchDB本身的读写性能。
4.5 性能测试
Apache Jmeter是一款开源的性能测试框架,现己广泛地作为Web应用程序的性能测试工具,本文采用ApacheJmeter对该系统进行压力测试。测试场景分别在有负载均衡和没有负载均衡的情况下,用Jmeter模拟100个客户端并发的发出查询请求,没有负载均衡情况下的测试结果:100条查询请求执行结果全部通过,平均响应时间为182ms。有负载均衡情况下的测试结果:100条查询请求执行结果全部通过,平均响应时间为99ms。通过上述测试结果的比对,并发执行100条查询请求,在有负载均衡的情况下,系统的响应时间要快于没有负载均衡的情况,这正是由于系统中负载均衡的功能就是在出现大量并发访问的时候,负载均衡服务器会根据当前系统各服务器的状态来进行请求的转发,即先把请求发给相对比较空闲的服务器,这样就能充分利用分布式服务的优势,提高访问效率。
5 结束语
云计算技术的出现,使人们有更多的时间关注专业领域内的问题,使空间信息服务模式发生了革命性的改变。应用云计算的思想,借鉴传统数据管理技术的经验,设计面向云计算环境的海量图片存储管理系统,提高了存储系统的可靠性和稳定性,而且在完全分布式环境下性能上也具有一定的优势,具有很好的应用前景。<