分布式计算、云计算与大数据 第2版 课件汇 第6-11章 云存储技术- 保险大数据分析案例_第1页
分布式计算、云计算与大数据 第2版 课件汇 第6-11章 云存储技术- 保险大数据分析案例_第2页
分布式计算、云计算与大数据 第2版 课件汇 第6-11章 云存储技术- 保险大数据分析案例_第3页
分布式计算、云计算与大数据 第2版 课件汇 第6-11章 云存储技术- 保险大数据分析案例_第4页
分布式计算、云计算与大数据 第2版 课件汇 第6-11章 云存储技术- 保险大数据分析案例_第5页
已阅读5页,还剩400页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第6章云存储技术提纲存储基础知识云存储概念与技术原理对象存储技术存储技术趋势存储重要历史回顾总的趋势:存储容量和IO速度的不断增加。网络存储的发展网络存储根据服务器类型可以进行如下分类:网络存储的发展根据组网形式不同,当前三种主流存储技术如下图所示:DASDAS(DirectAttachedStorage—直接连接存储)是指将存储设备通过SCSI接口或光纤通道直接连接到一台计算机上。优势连接简单低成本需求较好的性能通用的解决方案劣势有限的扩展性专属的连接备份和数据保护TCO(总拥有成本高)NASNAS(NetworkAttachedStorage—网络附加存储)是将存储设备连接到现有的网络上,提供数据和文件服务,应用服务器直接把FileI/O请求通过LAN传给远端NAS中的文件系统,NAS中的文件系统发起BlockI/O到与NAS直连的磁盘。优势资源共享构架于IP网络之上部署简单较好的扩展性异构环境下的文件共享易于管理备份方案简单低的TCO劣势扩展性有限带宽瓶颈不适应某些数据库的应用SANSAN(存储区域网络)通过光纤通道连接到一群计算机上。在该网络中提供了多主机连接,但并非通过标准的网络拓扑。优势实现存储介质的共享非常好的扩展性LANFree和ServerFree高性能支持服务器集群技术容灾手段低的TCO劣势成本较高SAN孤岛技术较为复杂需要专门的技术人员维护DAS、NAS、SAN三种形态比较

DASNASFC-SANIP-SAN传输类型SCSI、FCIPFCIP数据类型块级文件级块级块级典型应用任何文件服务器数据库应用视频监控优点易于理解兼容性好易于安装成本低高扩展性高性能高可用性高扩展性成本低缺点难以管理,扩展性有限;存储空间利用率不高性能较低;对某些应用不适合比较昂贵,配置复杂;互操作性问题性能较低DAS、NAS、SAN每种组网技术都有其优势和劣势,在实际运用中需要权衡各方面的资源和适用范围。一般来说,DAS是最直接最简单的组网技术,实现简单但是存储空间利用率和扩展性差,而NAS使用较为广泛,技术也相对成熟,SAN则是专为某些大型存储而定制的昂贵网络。RAIDRAID是廉价冗余磁盘阵列的简称,磁盘阵列是由很多价格较便宜的磁盘,组合成一个容量巨大的磁盘组,利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能。利用这项技术,将数据切割成许多区段,分别存放在各个硬盘上。在具体介绍RAID之前,我们先了解一下相关概念。名词说明分区又称为Extent;是一个磁盘上的地址连续的存储块。一个磁盘可以划分为多个分区,每个分区可以大小不等,有时也称为逻辑磁盘。分块又称为Strip;将一个分区分成多个大小相等的、地址相邻的块,这些块称为分块。分块通常被认为是条带的元素。虚拟磁盘以它为单位将虚拟磁盘的地址映射到成员磁盘的地址。条带又称为Stripe;是阵列的不同分区上的位置相关的strip的集合,是组织不同分区上条块的单位。软RAIDRAID的所有功能都依赖于操作系统(OS)与服务器CPU来完成,没有第三方的控制/处理(业界称其为RAID协处理器――RAIDCo-Processor)与I/O芯片硬RAID有专门的RAID控制/处理与I/O处理芯片,用来处理RAID任务,不需耗用主机CPU资源,效率高,性能好。RAIDRAID可以细分为:RAID0、RAID1、RAID3、RAID5、RAID6、RAID10、RAID50。1)RAID0RAID0以条带形式将RAID阵列的数据均匀分布在各个阵列中,没有磁盘冗余,一个磁盘失败导致数据丢失,所示,总容量=(磁盘数量)*(磁盘容量)。优点可多I/O操作并行处理,极高的读写效率速度快设计、使用与配置简单缺点无冗余不能用于关键数据环境RAID2)RAID1RAID1以镜像作为冗余手段,虚拟磁盘中的数据有多个拷贝,放在成员磁盘上,具有100%的数据冗余,但磁盘空间利用率只有50%,所以,总容量=(磁盘数量/2)*(磁盘容量)。优点理论上读效率是单个磁盘的两倍;100%的数据冗余;设计、使用简单缺点ECC((错误检查与纠正))效率低下,磁盘ECC的CPU占用率是所有RAID等级中最高的,成本高;软RAID方式下,很少能支持硬盘的热插拔;空间利用率只有1/2RAID3)RAID3以xor校验为冗余方式,使用专门的磁盘存放校验数据,虚拟磁盘上的数据块被分为更小的数据块并行传输到各个成员物理磁盘上,同时计算出xor校验数据存放到校验磁盘上。只有一个磁盘损坏的情况下,RAID3能通过校验数据恢复损坏磁盘,但两个以上磁盘同时损坏情况下RAID3不能发挥数据校验功能。总容量=(磁盘数量-1)*(磁盘容量)。优点相对较高的读取传输率高可用性,如果有一个磁盘损坏,对吞吐量影响较小高效率的ECC操作缺点校验盘成为性能瓶颈每次读写牵动整个组,每次只能完成一次I/ORAID4)RAID5以XOR检验为冗余方式,校验数据均匀分布在各个数据磁盘上,对各个数据磁盘的访问为异步操作,RAID5相对于RAID3改善了校验盘的瓶颈,总容量=(磁盘数-1)*(磁盘容量)。优点高读取速率中等写速率缺点异或校验影响存储性能磁盘损坏后,重建很复杂RAID5)RAID6RAID6能够允许两颗磁盘同时失效的RAID级别系统,其总容量=(磁盘数-2)*(磁盘容量)。优点快速的读取性能更高的容错能力缺点很慢的写入速度成本更高RAID6)RAID10RAID10(镜像阵列条带化)将镜像和条带组合起来的组合RAID级别,最低一级是RAID1镜像对,第二级为RAID0。其总容量=(磁盘数/2)*(磁盘容量)。优点高读取速率高写速率,较校验RAID而言,写开销最小至多可以容许N个磁盘同时损坏(2N个磁盘组成的RAID10阵列)缺点贵只有1/2的磁盘利用率RAID7)RAID50RAID50将镜像和条带组合起来的组合RAID级别,最低一级是RAID5镜像对,第二级为RAID0。其总容量=(磁盘数-1)*(磁盘容量)。优点比单个RAI5容纳更多的磁盘比单个RAID5有更好的读性能至多可以容许n个磁盘同时损坏(N个RAID5组成的RAID50阵列)比相同容量的单个RAID5重建时间更短缺点比较难实现同一个RAID5组内的两个磁盘损坏会导致整个RAID50阵列的失效RAID级别比较

需要根据具体的应用情况决定使用那种RAID级别,各种级别的比较如表所示项目RAID0

RAID1RAID10

RAID5

、RAID3RAID6最小配置12434性能HighestLowestRAID5<RAID10<RAID0RAID1<RAID5<RAID10RAID6<RAID5<RAID10特点无容错最佳的容错最佳的容错提供容错提供容错磁盘利用率100%50%50%(N-1)/N(N-2)/N描述

不带奇偶效验的条带集磁盘镜像RAID0与RAID1的结合带奇偶效验的

条带集双校验位其中RAID3与RAID5的区别为:RAID3更适合于顺序存取,RAID5更适合于随机存取。需要根据具体的应用情况决定使用那种RAID级别。磁盘热备

所谓热备份(简称为热备)是在建立RAID磁盘阵列系统的时候,将其中一个磁盘指定为热备磁盘,此热备磁盘在平常并不操作,当阵列中某一磁盘发生故障时,热备磁盘便取代故障磁盘,并自动将故障磁盘的数据重构在热备磁盘上。热备盘可分为以下两种:全局热备盘:针对整个磁盘阵列,对阵列中所有RAID组起作用局部热备盘:只针对某一RAID组起作用。

磁盘热备的主要过程1)由5个磁盘组成RAID5,4个数据盘,1个热备盘存储校验条带集,热盘平时不参与计算。2)某个时刻某个数据盘损坏,热备盘根据校验集开始自动重构。3)热备盘重构结束,加入RAID5代替损坏磁盘参与计算。4)替换新的磁盘,热备盘进行COPYBACK复制。5)热备盘复制完成后,重新建立校验集。RAID5setofdrives:4active,1hot-spareCOPYBACK完成某个磁盘损坏,重构过程开始重构过程结束,RAID5可靠性恢复冗余插入新磁盘,COPYBACK开始逻辑卷快照(snapshot)DEAC快照是某一个时间点上的逻辑卷的映像,逻辑上相当于整个BaseVolume的拷贝用途(利用少量存储空间保存原始数据的备份)文件、逻辑卷恢复备份、测试、数据分析等基本概念:BaseVolume:快照源卷RepositoryVolume:快照仓储卷,保存快照源卷在快照过程中被修改以前的数据SnapshotVolume:快照卷某一个时间点的逻辑卷映像:逻辑上相当于整个BaseVolume的拷贝可将SanpshotVolume分配给任何一台主机SnapshotVolume可读取、写入或拷贝存储空间需求需要相当于BaseVolume20%的额外空间快照过程1)首先保证源卷和仓储卷的正常运行2)快照开始时源卷是只读的,快照卷对源卷3)快照完成,控制器释放对源卷的写权限,我们可以对源卷进行写操作,快照是一些指向源卷数据的指针。4)当源卷数据发生改变时,首先在源卷的数据改变之前将原数据写入仓储卷上,并且将快照指针引导到仓储卷上,然后再对源卷数据进行修改。5)最后更新源卷数据,此时快照可以跟踪到更新之前的旧数据。数据分级存储概念数据分级存储:即把数据存放在不同类别的存储设备(磁盘、磁盘阵列、光盘库、磁带)中,通过分级存储管理软件实现数据实体在存储设备之间的自动迁移;根据数据的访问频率、保留时间、容量、性能要求等因素确定最佳存储策略,从而控制数据迁移的规则。优点最大限度地满足用户需求减少总体存储成本性能优化改善数据可用性数据迁移对应用透明在线(On-line)存储:指存储设备和所存储的数据时刻保持“在线”状态,可供用户随意读取,满足计算平台对数据访问的速度要求近线(Near-line)存储:主要定位于客户在线存储和离线存储之间的应用,将那些不是经常用到,或者说数据的访问量并不大的数据存放在性能较低的存储设备上,但同时对这些设备要求是寻址迅速、传输率高,需要的存储容量相对较大。离线(Off-line)存储:对在线存储数据的备份,以防范可能发生的数据灾难。提纲存储基础知识云存储概念与技术原理对象存储技术存储技术趋势云存储概念关于云存储的定义,目前没有标准。云存储一般包含两个含义:1)云存储是云计算的存储部分,即虚拟化的、易于扩展的存储资源池。用户通过云计算使用存储资源池,但不是所有的云计算的存储部分都是可以分离的。2)云存储意味着存储可以作为一种服务,通过网络提供给用户。用户可以通过若干种方式(互联网开放接口、在线服务等)来使用存储,并按使用(时间、空间或两者结合)付费。从技术层面看,目前业界普遍认为云存储的两种主流技术解决方案:基于虚拟化技术和分布式存储。分布式存储从技术特征上看,分布式存储主要包括以下四种:分布式块存储分布式文件存储分布式对象存储分布式表存储块存储技术块存储将存储区域划分成固定大小的小块,是传统裸存储设备的存储空间对外暴露方式。块存储系统将大量磁盘设备通过SCSI/SAS或FCSAN与存储服务器连接,服务器直接通过SCSI/SAS或FC协议控制和访问数据。块存储方式不存在数据打包/解包过程,可提供更高的性能。系统目标:为现有各种应用提供通用的存储能力在云计算环境下,块存储设备面临着分布式环境数据块数据块数据块数据块数据块存储节点2数据块数据块数据块数据块数据块存储节点1索引节点直接索引1直接索引2直接索引3直接索引4直接索引5直接索引6目录索引目录索引数据块数据块数据块数据块存储节点传统设备的块存储面向的是单一的物理设备块存储技术块存储主要包括DAS和SAN两种存储方式直接附加存储DAS以主机为中心,将外部的数据存储设备通过SISC/IDE/ATA等I/O总线直接连接到服务器上,使数据存储设备是服务器结构一部分SAN采用块数据组织,通过可伸缩的高速专用存储网络互连不同类型的存储设备和服务器,提供内部任意节点间多路可选择的数据交换。应用服务器文件系统SCSI,FCJBOD应用服务器文件系统光纤交换机RAIDRAID块存储技术优点缺点DAS设备成本低廉,实施简单通过磁盘阵列技术,可将多块硬盘在逻辑上组合成一块硬盘,实现大容量的存储不能提供不同操作系统下的文件共享存储容量受限I/O总线支持的设备数量服务器发生故障时,数据不可访问数据备份操作非常复杂SAN可实现大容量存储设备数据共享可实现高速计算机和高速存储设备的高速互联可实现数据高效快速集中备份建设成本和能耗高,部署复杂单独建立光纤网络,异地扩展比较困难互操作性差,数据无法共享元数据服务器会成为性能瓶颈适用场景DAS服务器在地理分布上很分散,通过SAN或NAS在它们之间进行互连非常困难既要求数据的集中管理,又要求最大限度的降低数据的管理成本许多数据库应用和应用服务器在内的应用,它们需要直接连接到存储器上SAN与其它计算资源紧密集群来实现远程备份和档案存储过程磁盘镜像、备份与恢复、档案数据的存档和检索、存储设备间的数据迁移以及网络中不同服务器间的数据共享等用于合并子网和网络附接存储系统分布式文件存储文件存储以标准文件系统接口形式向应用系统提供海量非结构化数据存储空间。分布式文件系统把分布在局域网内各个计算机上的共享文件夹集合成一个虚拟共享文件夹,将整个分布式文件资源以统一的试图呈现给用户。它对用户和应用程序屏蔽各个节点计算机底层文件系统的差异,提供用户方便的管理资源的手段或统一的访问接口。分布式文件系统的出现很好的满足互联网信息不断增长的需求,并为上层构建实时性更高,更易使用的结构化存储系统提供有效的数据管理的支持。在催生了许多分布式数据库产品的同时,也促使分布式存储技术不断的发展和成熟。技术特点提供NFS/CIFS/POSIX等文件访问接口协议开销较高、响应延迟较块存储长应用系统跟存储系统的耦合程度中等存储能力和性能水平扩展适用场景适合TB~PB级文件存储,可支持文件频繁修改和删除。例如图片、文件、视频、邮件附件、MMS的存储海量数据存储及系统负载的转移文件在线备份文件共享传统分布式文件系统NAS技术特点应用服务器以太网交换机文件系统RAID文件系统RAID网络附加存储NAS是一种文件网络存储结构,通过以太网及其他标准的网络拓扑结构将存储设备连接到许多计算机上,建立专用于数据存储的存储内部网络文件协议支持NFS和CIFS网络文件协议连接方式百兆/千兆以太网主要功能细颗粒度数据共享及跨平台文件共享存储扩展高达数百TB,不停机适用场景商业或企业级数据共享;高性能计算或技术计算优点易于管理,节约成本缺点系统(包括存储容量和性能)扩展性差以SUN-Lustre文件系统为例,它只对数据管理器MDS提供容错解决方案。Lustre推荐OST(对象存储服务器)节点采用成本较高的RAID技术或SAN存储区域网络来达到容灾的要求,但Lustre自身不能提供数据存储的容灾,一旦OST发生故障就无法恢复,因此对OST的可靠性就提出了相当高的要求,大大增加了存储的成本,这种成本的投入会随着存储规模的扩大线性增长。对象存储技术对象存储为海量非结构化数据提供Key-Value这种通过键-值查找数据文件的存储模式,提供了基于对象的访问接口,有效地合并了NAS和SAN的存储结构优势,通过高层次的抽象具有NAS的跨平台共享数据和基于策略的安全访问优点,支持直接访问具有SAN的高性能和交换网络结构的可伸缩性。对象存储成为云存储技术的新热点技术特点访问接口简单,提供REST/SOAP接口协议开销高、响应延迟较文件存储长引入对象元数据描述对象特征应用系统跟存储系统的耦合程度松散支持一次写多次读对象存储技术对象是介于文件和块之间的一种抽象,具有唯一的ID标识符。对象提供类似文件的访问方法,如创建、打开、读写和关闭等。每个对象是一系列有序字节的集合,是数据和数据属性集的综合体。数据包括自身的元数据和用户数据。数据属性可以根据应用的需求进行设置,包括数据分布、服务质量等。对象维护自己的属性,简化了存储系统的管理任务,增加了灵活性。对象分为根对象,组对象和用户对象。对象特点对象存储系统组成部分对象(Object):对象存储的基本单元对象存储设备(OSD):对象存储系统的核心文件系统:文件系统对用户的文件操作进行解释,并在元数据服务器和对象存储设备间通信,完成所请求的操作。元数据服务器(MDS):为客户端提供元数据网络连接:对象存储系统的重要组成部分。表存储技术表存储系统用来存储和管理结构化/半结构化数据,向应用系统提供高可扩展的表存储空间,包括交易型数据库和分析型数据库。NoSQL是设计满足超大规模数据存储需求的分布式存储系统,没有固定的Schema,不支持join操作,通过“向外扩展”的方式提高系统负载能力。系统目标:管理结构化数据或半结构化数据交易型分析型TB~PB级NoSQL存储日志详单类存储TB级OLTP关系数据库OLAP数据仓库交易型数据特点:每次更新或查找少量记录,并发量大,响应时间短分析型数据特点:更新少,批量导入,每次针对大量数据进行处理,并发量小分布式表存储技术特点适用场景NoSQL存储通常不支持SQL、只有主索引、半结构化大规模互联网社交网络、博客、微博等日志详单类存储兼容SQL、索引通常只对单表有效、多表Join需扫描,支持MapReduce并行计算大规模日志存储处理、信令系统处理、经分系统ETL等OLTP关系数据库支持标准SQL、多表join、索引、事务计费系统、在线交易系统等OLAP数据仓库支持标准SQL、多表Join、索引中等规模日志存储处理、经分系统等分布式表存储NoSQL数据库分类类型主要产品特点列存储HbaseCassandraHypertable顾名思义,是按列存储数据的。最大的特点是方便存储结构化和半结构化数据,方便做数据压缩,对针对某一列或者某几列的查询有非常大的IO优势。文档存储MongoDBCouchDB文档存储一般用类似json的格式存储,存储的内容是文档型的。这样也就有有机会对某些字段建立索引,实现关系数据库的某些功能。Key-Value存储TCabinet/TyrantBerkeleyDBMemcacheDBRedis可以通过key快速查询到其value。一般来说,存储不管value的格式,照单全收。(Redis包含了其他功能)图存储Neo4JFlockDB图形关系的最佳存储。使用传统关系数据库来解决的话性能低下,而且设计使用不方便。对象存储db4oVersant通过类似面向对象语言的语法操作数据库,通过对象的方式存取数据。XML数据库BerkeleyDBXMLBaseX高效的存储XML数据,并支持XML的内部查询语法,比如XQuery,Xpath。表存储适应场景典型NoSQL数据库适用场景数据库最佳适用适用场景Cassandra写操作较多,读比较少的时候。如果你的系统都是基于Java的时候主要应用场景包括:银行、金融行业、数据分析。应用于FacebookMongoDB主要支持海量数据存储,动态查询,定义索引,针对大数据库的高性能使用,大容量磁盘空间。适用于:网站数据、缓存、大尺寸,低价值的数据、高伸缩性的场景、用于对象及JSON数据的存储Redis在数据库大小可预见的前提下,适用于数据变化速度快的应用较小数据量的高性能操作和运算上,包括:股价系统、数据分析、实时数据采集以及实时通信场景CouchD对于数据变化不太频繁的业务,运行有预先定义的查询。此外对于版本控制有高要求的业务同样适用CRM、CMS系统等HBase类似于BigTable,需要随即、实时的读写大数据适合于非结构化数据存储的数据库,如:Facebook网站、邮件数据库等各种存储技术对比

分布式对象存储分布式文件存储块存储NoSQL存储存储单位对象,就是带客户化元数据的文件文件数据块文档更新方式不支持就地更新,通过建立新的对象版本进行更新支持就地更新支持就地更新很少更新协议通过HTTP的REST和SOAPCIFS和NFSSCSI,FiberChannel和SATAApache协议,HTTP/REST元数据支持支持客户化元数据固有的文件系统属性固有的系统属性固有的文件系统属性最佳应用场景相对静态的文件数据和云存储共享文件数据交易数据和频繁变化的数据非关系型数据存储,适用于海量数据存储和OLAP的应用场景最大优势扩展性和分布式访问简单的共享文件访问和管理高性能易扩展、灵活的数据模型、高可用、大数据量,高性能制约因素不适合频繁变化的交易数据;不提供基于锁机制的共享协议很难扩展到数据中心之外的范畴很难扩展到数据中心之外的范畴很难实现数据的完整性;缺乏强有力的技术支持等存储类型存储类型分布式文件存储对象存储直接附加存储DAS块存储表存储存储域网络SANIPSANFCSAN网络附加存储NAS日志详单类存储NoSQL存储Google文件系统GFSHadoop分布式文件系统OLTP关系数据库OLAP数据仓库BC-oNestAmazonS3BigTableHBaseSwiftCassandraMongodb存储虚拟化企业用户面对日益复杂的异构平台,不同厂商的产品,不同种类的存储设备,给存储管理带来诸多难题。数据应用已不再局限于某一企业和部门,而分布于整个网络环境。系统整合、资源共享、简化管理、降低成本以及自动存储将成为信息存储技术的发展要求。存储虚拟化技术(StorageVirtualization)是解决这些问题的有效手段,现成为信息存储技术的主要发展方向。随着网络存储的飞速发展给存储虚拟化赋予了新的内涵。使之成为共享存储管理中的主流技术。

存储虚拟化的基本原理是:把多个存储介质模块(如硬盘、磁盘、磁带)通过一定手段集中管理,把不同接口协议(如SCSI,iSCSI或FC等)的物理存储设备(如JBOD,RAID和磁带库等)整合成一个虚拟的存储池,根据需要为主机创建和提供虚拟存储卷。即把不同存储硬件抽象出来,以管理工具来实现统一的管理,不必再管后端的介质到底是什么。存储虚拟化

虚拟化的目的主要有三个:抽象,隐藏,隔离。存储虚拟化的目的是为了提高设备使用效率,统一数据管理功能,设备构件化,降低管理难度,提高可扩展性,数据跨设备流动,其技术如下图所示。从系统的观点看,存储虚拟化有3种途径:基于主机的存储虚拟化、基于网络的存储虚拟化、基于存储设备的存储虚拟化。基于主机的存储虚拟化

基于主机的虚拟存储依靠于代理软件,它们安装在一个或多个主机上,实现存储虚拟化的控制和治理。它的实现方式一般由操作系统下的逻辑卷管理软件完成(安装客户端软件),不同操作系统的逻辑卷管理软件也不相同。优点支持异构的存储系统缺点:占用主机资源,降低应用性能存在操作系统和应用的兼容性问题导致主机升级、维护和扩展非常复杂,而且容易造成系统不稳定性需要复杂的数据迁移过程,影响业务连续性。基于网络的存储虚拟化

基于网络的虚拟化方法是在网络设备之间实现存储虚拟化功能,它将类似于卷管理的功能扩展到整个存储网络,负责管理Host视图、共享存储资源、数据复制、数据迁移及远程备份等,并对数据路径进行管理避免性能瓶颈。它的实现方式通过在存储域网(SAN)中添加虚拟化引擎实现。优点与主机无关,不占用主机资源能够支持异构主机、异构存储设备使不同存储设备的数据管理功能统一构建统一管理平台,可扩展性好缺点:部分厂商数据管理功能弱,难以达到虚拟化统一数据管理的目的部分厂商产品成熟度较低,仍然存在和不同存储和主机的兼容性问题。基于存储设备的存储虚拟化

基于存储设备的存储虚拟化方法依赖于提供相关功能的存储模块,它的实现方式是,在存储控制器上添加虚拟化功能(虚拟化引擎)。优点与主机无关,不占用主机资源数据管理功能丰富。缺点:一般只能实现对本设备内磁盘的虚拟化不同厂商间的数据管理功能不能互操作多套存储设备需配置多套数据管理软件,成本较高。存储虚拟化技术对比

不同的存储虚拟化技术都有其适用场景和优势,下表给出了三种存储虚拟化技术各种特性的对比。比较内容基于主机基于存储设备基于网络存储视图一致性差好好单点管理否是是主机是否安装管理软件需要不需要不需要独立于主机或存储设备非独立非独立独立统一存储池是是是存储分配灵活性差好好性能差差好SAN扩展性差好好SAN高可用性差好好SAN安全性差好好相对价格低高中应用案例多少少主要用途使服务器的存储空间可以跨越多个异构存储阵列,常用于在不同磁盘阵列之间做数据镜像保护异构存储系统整合和统一数据管理(如容灾备份)异构存储系统整合和统一数据管理(如容灾备份)适用场景主机已采用SF卷(即Storage

Foundation,一种磁盘管理工具)管理,需要新接多台存储设备;存储系统中包含异构阵列设备;业务持续能力与数据吞吐要求较高系统中包括自带虚拟化功能的高端存储设备与若干需要利旧的中低端存储系统包括不同品牌和型号的主机与存储设备;对数据无缝迁移及数据格式转换有较高时间保证提纲存储基础知识云存储概念与技术原理对象存储技术存储技术趋势传统块存储与对象存储在传统的存储系统中用文件或块作为基本的存储单位,块设备要记录每个存储数据块在设备上的位置;而在对象存储系统中,对象是数据存储的基本单元,Object维护自己的属性,从而简化了存储系统的管理任务,增加了灵活性,在存储设备中,所有对象都有一个对象标识,通过对象标识OSD命令访问该对象。对象存储架构对象存储的核心是将数据通路(数据读或写)和控制通路(元数据)分离,并且基于对象存储设备(Object-basedStorageDevice,OSD)构建存储系统,每个对象存储设备具有一定的智能,能够自动管理其上的数据分布。对象存储结构由对象、对象存储设备、元数据服务器、对象存储系统的客户端四部分组成。对象的组成对象是系统中数据存储的基本单位,每个Object是数据和数据属性集的综合体,数据属性可以根据应用的需求进行设置,包括数据分布、服务质量等。对象基本存储单元名字空间:对象ID数据元数据元数据类似于inode,描述了对象在磁盘上的块分布属性根据需要而定义E.g.多媒体对象的延迟和吞吐请求因此,对象存储就是实现对象具有高性能、高可靠性、跨平台以及安全的数据共享的存储体系,是块和文件之外的存储形式对象(Object)包含了文件数据以及相关的属性信息,可以进行自我管理对象存储结构

传统的访问层次和虚拟数据访问模型对象存储系统组成

对象(Object)包含了文件数据以及相关的属性信息,可以进行自我管理OSD(Object-basedStorageDevice)一个智能设备,是Object的集合文件系统文件系统运行在客户端上,将应用程序的文件系统请求传输到MDS和OSD上元数据服务器(MetadataServer,MDS)系统提供元数据、Cache一致性等服务网络连接网络连接是对象存储系统的重要组成部分。它将客户端、MDS和OSD连接起来,构成了一个完整的系统对象的分类OSD(Object-basedStorageDevice)

每个OSD都是一个智能设备,具有自己的存储介质、处理器、内存以及网络系统等,负责管理本地的Object,是对象存储系统的核心。OSD同块设备的不同不在于存储介质,而在于两者提供的访问接口。OSD的主要功能包括数据存储和安全访问。目前国际上通常采用刀片式结构实现对象存储设备。OSD的主要功能

OSD提供三个主要功能:(1)数据存储。OSD管理对象数据,并将它们放置在标准的磁盘系统上,OSD不提供块接口访问方式,Client请求数据时用对象ID、偏移进行数据读写。(2)智能分布。OSD用其自身的CPU和内存优化数据分布,并支持数据的预取。由于OSD可以智能地支持对象的预取,从而可以优化磁盘的性能。(3)每个对象元数据的管理。OSD管理存储在其上对象的元数据,该元数据与传统的inode元数据相似,通常包括对象的数据块和对象的长度。而在传统的NAS系统中,这些元数据是由文件服务器维护的,对象存储架构将系统中主要的元数据管理工作由OSD来完成,降低了Client的开销。OSD功能说明:OSD使用Object对所保存的数据进行管理。它将数据存放到磁盘的磁道和扇区,将若干磁道和扇区组合起来构成Object,并且通过此Object向外界提供对数据的访问。每个Object同传统的文件相似,使用同文件类似的访问接口,包括Open、Read、Write等。但是两者并不相同,每个Object可能包括若干个文件,也可能是某个文件的一部分,且是独立于操作系统的。除了具体的用户数据外,OSD还记录了每个Object的属性信息,主要是物理视图信息。将这些信息放到OSD上,大大减轻了元数据服务器的负担,增强了整个存储系统的并行访问性能和可扩展性。如图显示了OSD的作用。文件系统

文件系统对用户的文件操作进行解释,并在元数据服务器和OSD间通信,完成所请求的操作。现有的应用对数据的访问大部分都是通过POSIX文件方式进行的,对象存储系统提供给用户的也是标准的POSIX文件访问接口。接口具有和通用文件系统相同的访问方式,同时为了提高性能,也具有对数据的Cache功能和文件的条带功能。同时,文件系统必须维护不同客户端上Cache的一致性,保证文件系统的数据一致元数据服务器(MetadataServer)

MDS控制Client与OSD对象的交互,主要提供以下功能:(1)对象存储访问:MDS构造、管理描述每个文件分布的视图,允许Client直接访问对象。MDS为Client提供访问该文件所含对象的能力,OSD在接收到每个请求时将先验证该能力,然后才可以访问。(2)文件和目录访问管理:MDS在存储系统上构建一个文件结构,包括限额控制、目录和文件的创建和删除、访问控制等。(3)ClientCache一致性:为了提高Client性能,在对象存储系统设计时通常支持Client方的Cache。由于引入Client方的Cache,带来了Cache一致性问题,MDS支持基于Client的文件Cache,当Cache的文件发生改变时,将通知Client刷新Cache,从而防止Cache不一致引发的问题。对象存储与传统存储的对比存储接口存储系统优点缺点块级存储块块存储设备如:SAN,提供高性能的随机I/O和数据吞吐率可扩展性和可管理性较差、价格较高、不能满足成千上万CPU规模的系统文件储存文件块存储设备+文件系统如:NAS,扩展性好、易于管理、价格便宜开销高、带宽低、延迟大,不利于高性能集群中应用对象存储对象块存储设备+文件系统+定位逻辑+应用程序支持高并行性、可伸缩的数据访问,管理性好、安全性高、适合高性能集群使用处于发展阶段,相应的硬件、软件支持有待进一步完善基于Hadoop构建对象存储系统系统组成:对象访问接口层(AccessEdge)、对象元数据存储层(MetaDataStorage)、对象实体数据存储(DataNode)和归档管理(ArchiveManagement)59基于Hadoop构建对象存储系统HDFS上的对象数据存储:为了减少HDFS中小文件的数据,将小的对象文件和归档文件归档。60基于Hadoop构建对象存储系统桶的创建和删除61基于Hadoop构建对象存储系统对象的创建62基于Hadoop构建对象存储系统对象的删除63基于Hadoop构建对象存储系统小文件的归档管理:主要由周期性执行的MapReduce任务完成64提纲存储基础知识云存储概念与技术原理对象存储技术存储技术趋势存储技术趋势存储技术趋势包括以下几个方面:1)存储虚拟化2)固态硬盘SSD3)重复数据删除4)语义化检索5)存储智能化6)混合存储系统7)软件定义存储SDS存储技术趋势1)存储虚拟化存储虚拟化是目前以及未来的存储技术热点,目前最新的存储虚拟化技术有自动分级存储(HSM)、自动精减配置(Thinprovision)、云存储(Cloudstorage)、分布式文件系统(Distributedfilesystem),另外还有诸如动态内存分区、SAN和NAS虚拟化。2)语义化检索数据检索目前主要分为两类,一是基于文件名,二是基于文件内容。存储系统完全可以实现语义化的检索,通过文件属性和关系来检索文件,并用关系网络(类似社会化网络)来表示检索结果。面对海量的数据,精确、高效地检索出自己需要的数据是第一步,语义化检索符合存储的技术发展趋势。3)存储智能化对于存储系统来说,智能化代表着自动化、自适应、兼容性、自治管理、弹性应用,通过对系统的监控、分析和挖掘来发现数据应用的特点和使用者的行为模式并动态调整配置,从而达到最佳的运行状态,存储智能化越来越成为存储技术的发展趋势。4)混合存储系统大数据和云计算环境下海量增长的数据对存储系统的超高容量和体系结构带来了极大的挑战。利用新型存储器良好的写性能、固态硬盘良好的读性能和传统磁盘大容量低成本的特性组合成的混合存储系统可能是未来发展的方向。存储技术趋势5)SSD固态硬盘(SSD,solidstatedisk)是目前倍受存储界广泛关注的存储新技术,它被看作是一种革命性的存储技术,可能会给存储行业甚至计算机体系结构带来深刻变革。SSD与传统磁盘不同,它是一种电子器件而非物理机械装置,它具有体积小、能耗小、搞干扰能力强、寻址时间极小(甚至可以忽略不计)、IOPS高、I/O性能高等特点。对于存储系统来说,SSD最大突破是大幅提高了IOPS,摩尔定理的效力再次显现,通过简单地用SSD替换传统磁盘,就可能可以达到和超越综合运用缓存、预读、高并发、数据局部性、磁盘调度策略等软件技术的效用。SSD已经开始被广泛接受并应用,当前主要的限制因素包括价格、使用寿命、写性能抖动等。从最近两年的发展情况来看,这些问题都在不断地改善和解决,SSD的发展和广泛应用将势不可挡。存储技术趋势6)重复数据删除重复数据删除(Deduplication)是一种目前主流且非常热门的存储技术,可对存储容量进行有效优化。它通过删除数据集中重复的数据,只保留其中一份,从而消除冗余数据。Dedupe技术可以帮助众多应用降低数据存储量,节省网络带宽,提高存储效率、减小备份窗口,节省成本。Dedupe技术目前大量应用于数据备份与归档系统,因为对数据进行多次备份后,存在大量重复数据。事实上,它也可以用于很多场合,包括在线数据、近线数据、离线数据存储系统。信息呈现的指数级增长方式给存储容量带来巨大的压力,而dedupe是最为行之有效的解决方案,因此固然其有一定的不足,它大行其道的技术趋势无法改变。更低碰撞概率的hash函数、多核、GPU、SSD等,这些技术推动dedupe走向成熟,由作为一种产品而转向作为一种功能,逐渐应用到近线和在线存储系统存储技术趋势7)软件定义存储定义:即SDS(SoftwareDefinedStorage),没有统一标准定义,一般是指存储资源由软件自动控制,通过抽象、池化和自动化,将标准服务器内置存储、直连存储、外置存储或云存储等存储资源整合起来,实现应用感知,或者基于策略驱动的部署、变更和管理,最终达到存储即服务的目标。与分布式存储区别:“分布式”的理念是软件定义存储的基础,从概念上来说,软件定义存储的范围更大,除了存储之外,还包括管理、计算、网络接口等相关概念。或者说,分布式存储就是一种链接方式,而软件定义存储就是类似华为等企业所研发的软件产品,可以说软件定义存储是以分布式存储的基础的企业存储解决方案。2025/3/21DistributedComputing71Questions1)简述存储组网的几种形式(DAS,NAS,SAN),及其适用范围。2)简述RAID的技术原理。3)简述磁盘热备的技术原理。4)简述快照技术原理。5)简述分布式块存储的概念及其优缺点。6)简述分布式对象存储的概念及原理。7)简述NoSQL的概念及原理。8)简述存储虚拟化的几种形式,及其适用范围。9)查阅相关资料,了解重复数据删除及数据压缩的原理。第7章云原生技术提纲7.1 云原生的概念与架构7.2 云原生关键技术7.3 云原生应用开发7.4 云原生技术特色云原生的概念云原生计算基金会(CloudNativeComputingFoundation,CNCF)组织对云原生的定义是:云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。代表技术:容器、服务网格、微服务、不可变基础设施和声明式API。云原生本质上是一种基于云的软件架构思想,以及基于云进行软件开发实践的一组方法论。通过学习云原生的应用架构设计理念和云原生包含的各种适用于云环境、发挥云端优势的技术,使个人或企业能够顺利地在云端环境进行应用设计、开发和运维。云原生的架构云原生架构有4个要点,即微服务、容器、DevOps、持续交付云原生的架构微服务:微服务是将应用作为小型服务集合开发的架构方法,其中每个服务都可以实施业务功能,每个微服务都可以独立于应用中的其他服务进行部署、升级、扩展和重新启动。容器:容器技术是云原生概念兴起的基础,与标准虚拟机相比,容器体积小、速度快。DevOps:通过自动化工具协作和沟通,让开发、测试和运维之间能够模糊边界,从而更快、更频繁地交付更稳定的软件。持续交付:在不影响用户使用服务的前提下频繁把新功能发布给用户使用。提纲7.1 云原生的概念与架构7.2 云原生关键技术7.3 云原生应用开发7.4 云原生技术特色微服务定义微服务(microservice)是一种软件架构风格,它以专注于单一责任与功能的小型功能区块(smallbuildingblock)为基础,利用模块化的方式组合出复杂的大型应用程序,各功能区块使用与语言无关的API集相互通信。特点采用模块化的设计风格,更加适合大型应用开发可以将模块化的服务跨多个服务器和基础设施进行部署,充分满足自身业务需求,具有高度的可扩展性

拥有出色的弹性,只要确保正确构建,这些独立的服务就不会彼此影响典型开发框架比较著名的有SpringCloud、Dubbo和Dropwizard等目前最为流行的开发框架为SpringCloudSpringCloudSpringCloud服务发现—SpringCloudNetflixEurekaEureka由EurekaServer和EurekaClient组成EurekaServer提供服务注册服务,各个EurekaClient启动后,会在EurekaServer中进行注册EurekaServer本身也是一个服务,默认情况下会自动注册到注册中心EurekaServer之间可以相互注册,组成高可用的注册中心来提高系统的稳定性。当一个服务注册至注册中心后,相当于在集群中发现了该服务,这样当服务消费者需要通过远程调用获取这个服务的内容时,就可以通过注册中心找到该服务。SpringCloud客户端负载均衡—SpringCloudNetflixRibbon在微服务架构中,一个服务可能会被部署多份以提高服务的可用性,当多个相同服务的提供者被注册至注册中心后,注册中心会注册该服务的所有提供者,当服务消费者需要调用该服务时,注册中心会查询所有可用的服务提供者,这时可以通过Ribbon基于负载均衡算法做到负载均衡地请求其中一个服务提供者实例。Ribbon(负载均衡器)的作用正是提供负载均衡机制,当为Ribbon配置服务提供者地址列表后,Ribbon就可以基于某种负载均衡算法,自动帮助服务消费者处理请求。Ribbon提供的负载均衡算法有多种,例如轮询、加权响应时间、随机和区域感知轮询。SpringCloud断路器—SpringCloudNetflixHystrix断路器能够统计一段时间内调用失败的次数,并决定是正常请求依赖的服务还是直接返回。当对特定服务的调用的不可用达到一个阈值(Hystrix是5秒20次)时,断路器将会被打开。断路器被打开后,可以避免连锁故障,fallback方法直接返回一个固定值SpringCloud服务消费者—SpringCloudOpenFeignFeign是一种声明式、模板化的HTTP客户端,主要作为服务消费者用于调用其他服务。Feign大大简化了服务调用客户端的开发量,通过简单的注解就能完成对服务提供方的接口绑定。Feign整合了Ribbon,所以能够做到负载均衡地调用服务。Feign也整合了Hystrix,所以具有断路器的功能,当服务调用失败后,会返回预先设定的fallback函数的值。SpringCloud服务网关—SpringCloudNetflixZuul当一个请求到达系统后,应该最先到达网关,由网关进行统一鉴权等操作后再将请求转发至各个具体的服务。Zuul的主要功能是路由转发和过滤器。Zuul默认和Ribbon结合实现了负载均衡的功能。分布式配置—SpringCloudConfig动态拉取远程数据仓库的配置文件,并把配置文件应用至对应的微服务中容器概念:容器是一种允许在资源隔离的过程中运行应用程序和其依赖项的、轻量的、操作系统级别的虚拟化技术,运行应用程序所需的所有必要组件都被打包为单个镜像,该镜像是可以重复使用的。当镜像运行时,它运行在独立的环境中,并不会和其他的应用共享主机操作系统的内存、CPU或磁盘。容器特点:容器实现的是操作系统级虚拟化,具有轻量级的特点,与虚拟机相比较,容器性能更好,一般能做到秒级启动。容器没有自己的OS,直接共享宿主机的内核,也没有管理程序(hypervisor)这一层进行资源隔离和限制,所有对于容器进程的限制都是基于操作系统本身的能力来进行的。容器在版本控制、计算环境可移植性和标准化方面也有很多优点。容器Docker容器技术:用于研发、测试、交付和运行软件应用的容器引擎。容器Docker使用户可以在容器中封装和运行软件应用。高资源利用率与隔离性使我们可以在同一时间、同一服务器上运行多个容器。容器轻量的特性使它们可以在系统内核中直接运行,而不需要对应用的额外负载进行管理。Kubernetes概念:Kubernetes是一个可移植的、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。功能服务发现和负载均衡存储编排自动部署和回滚自动完成装箱计算自我修复密钥与配置管理特性不限制支持的应用程序类型不部署源代码,也不构建应用程序不提供应用程序级别的服务作为内置服务不要求日志记录、监视或警报解决方案不提供或不要求配置语言/系统不提供也不采用任何全面的机器配置、维护、管理或自我修复系统。Kubernetes架构主从分布式结构,其节点在角色上分为Master节点和Node节点最小部署单元:

PodMaster组件:APIServeretcdControllerManagerSchedulerNode组件:KubeletProxy容器运行时服务网格概念服务网格是一个专门处理服务通信的基础设施层。它的职责是在由云原生应用组成服务的复杂拓扑结构下进行可靠的请求传送。架构服务网格的基础设施层主要分为两部分:控制平面与数据平面。每个服务实例都与一个反向代理服务器实例配对特点微服务治理与业务逻辑解耦可以实现异构系统的统一治理一定的可观察性和流量控制提供了保护网络调用的功能和基础设施提纲7.1 云原生的概念与架构7.2 云原生关键技术7.3 云原生应用开发7.4 云原生技术特色实例概述云原生应用开发实例——线上考试系统业务:集题库、组卷、发布、考试、评卷、系统考试报告业务闭环的考试平台设计:使用SaaS模式基于SpringCloud的微服务技术构建。在数据的设计模式上为每一个租户新建独立的Schema或者Database共享数据库实例,因为考试服务为互联网应用,所以选择SpringCloud微服务技术为项目基础支撑技术,同时使用Kubernetes容器编排系统进行考试系统的部署和运维。考试系统主要分为基础数据服务、系统管理、试卷中心、考试中心四个模块系统设计系统架构设计

采用分布式体系架构设计,前端由Nginx服务器反向代理,访问网关,由网关将请求分发给对应微服务,服务与服务之间通过Feign进行数据接口的调用,服务均被注册至Eureka中,将SpringCloud微服务使用Kubernetes进行容器化部署。系统设计功能模块划分

系统设计基础框架设计:主要分为以下5个部分es-util:工具类es-log:统一异常处理切面、错误码,统一日志收集切面es-core:Entity、DTO、Controller等Base类、请求应答报文类、封装公共字段注解自动注入功能切面es-cache-redis:RedisAPI封装、Redis分布式锁es-config:集成Swagger,便于查看API发布系统设计功能模块详细设计

以系统管理微服务为例,系统管理微服务主要包括组织机构管理模块、公司管理模块、部门管理模块、资源管理模块、职位管理模块、用户管理模块、角色管理模块、参数管理模块、用户在线管理模块和登录模块。系统管理微服务的设计主要包括以下几个方面:各个层级POJO的Base类设计Controller的Base类设计持久层框架的设计错误码的设计API的设计系统设计动态模型设计

动态模型用于描述系统的过程和行为,通常使用时序图、流程图、状态图和活动图等描述系统的动态模型,可以将需求设计明确化、可视化。通过动态模型的评估,可以及时发现系统中设计的缺陷,避免不必要的损失。下图为系统管理微服务中的功能流程图(右图接下)系统设计动态模型设计

系统网关的工作时序图系统实现系统实现流程首先在本地和服务器上配置好所需要的环境,搭建公用代码仓库,进行SpringCloudConfig配置,以便分布式部署同步配置文件根据所设计的E-R图构建相应的数据库和表,规范好每个字段对应的属性和主外键约束,并录入一些示例数据每位工程师开发各自负责的基础框架,并把它们集成为基础框架es-common进行第一次集成开发,每位工程师开发自己负责的部分,开发完成后进行第一次集成测试进行第二次集成开发,每位组员开发各自负责的部分,开发完成后进行第二次集成测试。开发模式按照第一次集成开发的模式前端开发最终集成测试各个模块功能,修复Bug将本地部署的服务迁到云服务器,使用Kubernetes进行编排管理系统实现开发可能需要的软件系统实现开发可能需要的插件系统实现后端服务的开发编写所需功能的API编写该功能模块对应的ExceptionCode枚举类,在Service层抛出Service异常,在Controller层抛出Business异常编写该功能所涉及的DTO、VO、Query、QueryVO等POJO编写Service接口与对应的实现类,实现类主要使用所配置的Tk.MyBatis通用Mapper实现,无须XML配置的单表增删改查操作编写Controller对API进行实现在Controller中使用Service进行服务调用,并进行一些数据验证,不符合则抛出异常Controller的方法中需要对入参进行参数验证、以保证进入方法中参数的合法性系统实现前端的实现

项目采用了微服务的后端架构开发,服务间均采用API通信,因此可以很容易做到前后端分离,前端开发技术的选择不限。SpringCloud的使用实例服务注册和发现——创建服务注册中心(EurekaServer)创建一个Maven工程,并在pom文件中引入SpringCloudEurekaServer相关依赖EurekaServer的配置文件application.yml如右图所示启动一个服务注册中心,只需要一个注解@EnableEurekaServer,需要在Springboot工程的启动Application类上加该注解SpringCloud的使用实例服务注册和发现——创建服务提供者(EurekaClient)创建一个Maven工程,并在pom文件中引入SpringCloudEurekaClient相关依赖通过注解@EnableEurekaClient表明自己是一个EurekaClient。在配置文件中注明自己的服务注册中心的地址,application.yml配置文件如下:启动工程,打开http://localhost:8761,即EurekaServer的网址,就可以看到注册中心SpringCloud的使用实例服务消费者(Feign)新建一个Maven工程,并在pom文件中引入Feign的起步依赖spring-cloud-starter-feign、Eureka的起步依赖spring-cloud-starter-netflix-eureka-client和其他相关依赖。在程序的启动类ServiceFeignApplication,加上@EnableFeignClients注解,开启Feign的功能:SpringCloud的使用实例服务消费者(Feign)定义一个Feign接口,通过@FeignClient(“服务名”)来指定调用哪个服务。比如在代码中调用了service-hi服务的“/hi”接口,代码如下之后就可以通过SpringCloud的自动注入注解@Autowired对其他微服务进行调用,Feign会负责调用,并自动实现负载均衡SpringCloud的使用实例断路器(Hystrix)在配置文件中加入以下代码SchedualServiceHiHystric需要实现SchedualServiceHi接口,并将其注入IoC容器中,代码如下要开启Feign,只需在@Feign注解中加上fallback的指定类SpringCloud的使用实例路由网关——创建Zuul网关新建一个Maven工程,在pom文件中引入Zuul所需的spring-cloud-starter-netflix_x0002_zuul、spring-cloud-starter-netflix-eureka-client和其他相关依赖。配置文件application.yml如左示代码在其入口Application类中加上注解@EnableZuulProxy,开启Zuul的功能:SpringCloud的使用实例路由网关——服务过滤Zuul不仅是路由,还能过滤,做一些安全验证。下面的代码展示了Zuul的鉴权功能:使用了JWT进行Token生成,在header中携带对应的Token和userId的请求才允许访问。SpringCloud的使用实例分布式配置中心(SpringCloudConfig)——构建配置服务器创建一个Maven工程,引入配置服务器所需的spring-cloud-config-server和其他相关依赖。在程序的入口Application类加上@EnableConfigServer注解,开启配置服务器的功能,代码如下SpringCloud的使用实例分布式配置中心(SpringCloudConfig)——构建配置服务器在程序的配置文件perties中做以下配置SpringCloud的使用实例分布式配置中心(SpringCloudConfig)——构建配置客户端创建Maven项目,引入spring-cloud-starter-config和其他相关依赖。其配置文件bootstrap.properties如下:程序的入口类,写一个API接口“/hi”,返回从配置中心读取的foo变量的值,代码如下:持续集成与部署使用的技术统一的代码仓库在GitHub、Gitee、GitLab等公有或私有的代码仓库平台上构建一个Project作为项目的统一代码仓库使用Jenkins持续集成Jenkins可以结合Git版本控制工具和GitHub等云远程代码仓库使用,并选择Maven作为项目构建工具。持续集成与部署将SpringCloud微服务封装为Docker镜像创建SpringCloud微服务对应的Dockerfile文件。这里使用7.3.4节中的service-hi服务提供者,具体如下:使用命令dockerbuild-tservice-hi:v0.0.1构建Docker镜像。使用命令dockerrun--nameservice-hi-d-p8762:8762service-hi:v0.0.1,运行构建好的微服务镜像,并将宿主机的8762端口映射到容器的8762端口。在Eureka注册中心中查看注册项,注册上后表示镜像能够正常使用。持续集成与部署使用Kubernetes中的Deployment部署高可用微服务Pod:Pod是可以在Kubernetes中创建和管理的、可部署的最小计算单元。Pod可以由一个甚至是一组共享相同运行环境的容器组成。执行以下命令可以创建Pod:持续集成与部署使用Kubernetes中的Deployment部署高可用微服务Service:Kubernetes的Service资源为一组提供相同功能服务的Pod充当入口执行以下命令创建该Service,把服务和8762端口暴露出来:持续集成与部署使用Kubernetes中的Deployment部署高可用微服务Deployment:Deployment可以创建指定数量的Pod并将其部署到各个Node上,可完成更新、回滚等操作。使用以下命令创建Deployment:持续集成与部署零停机时间滚动部署编辑service-hi-deployment.yaml文件,修改容器镜像来引用新的镜像service-hi:v0.0.2,保存并执行以下命令:可以使用以下命令检查滚动部署的状态:持续集成与部署回滚如果当前版本有问题,则需要回滚至前一个版本。执行以下命令:

返回:再执行:

返回:提纲7.1 云原生的概念与架构7.2 云原生关键技术7.3 云原生应用开发7.4 云原生技术特色云原生应用的12要素目的:为构建如下的软件即服务(SaaS)应用提供方法论使用标准化流程自动配置,从而使新的开发者花费最少的学习成本加入这个项目。尽可能和操作系统划清界限,在各个系统中提供最大的可移植性。适合部署在现代的云计算平台,从而在服务器和系统管理方面节省资源。将开发环境和生产环境之间的差异降至最低,并使用持续交付实施敏捷开发。可以在工具、架构和开发流程不发生明显变化的前提下实现扩展。12要素(12-Factor)应用是一系列云原生应用架构的模式集合,用来说明什么样的应用才是云原生应用,它们关注速度、安全、通过声明式配置扩展、可横向扩展的无状态/无共享进程以及部署环境的整体松耦合云原生应用的12要素1.基准代码“一份基准代码”是指基准代码和应用之间总是保持一一对应的关系。一旦有多个基准代码,则不是一个应用,而是一个分布式系统。多个应用共享一份基准代码有悖于12-Factor原则。解决方法是将共享的代码拆成独立的类库,通过依赖管理去使用它们。多份部署”是指每个应用只对应一份基准代码,但可以同时存在多份部署,每份部署相当于运行一个应用的实例。区别在于:可以存在不同的配置文件对应不同的环境,例如开发环境、测试环境、预发布环境、生产环境等。可以使用不同的版本。云原生应用的12要素2.依赖12-Factor原则下的应用会通过依赖清单来显式确切地声明所有的依赖项。在运行工程中通过依赖隔离工具来保证应用不会去调用系统中存在但依赖清单中未声明的依赖项。显式声明依赖项的优点在于可以简化环境配置流程,开发者关注应用的基准代码,而依赖库则由依赖库管理工具来管理和配置。3.配置12-Factor原则要求代码和配置严格分离,配置单独存储,避免将配置硬编码写在代码中。12-Factor原则建议将应用的配置存储在环境变量中,环境变量可以方便在不同的部署环境中修改,而不侵入原有的代码。环境变量的粒度要足够小且相对独立。云原生应用的12要素4.后端服务对于12-Factor应用来说,后端服务都是附加资源,没有区别对待,当其中一份后端服务失效后,可以切换到原先备份的后端服务中,而不需要修改代码(可能需要修改配置)。12-Factor应用与后端服务保持松耦合的关系。5.构建、发布、运行12-Factor应用严格区分构建、发布、运行三个步骤,每一个发布版本对应一个唯一的发布ID,可以使用时间戳或递增的版本序列号。部署新代码之前,由开发人员触发构建操作,构建阶段可以相对复杂一些,方便错误信息被展示出来并得到妥善处理。运行阶段可以人为触发或自动运行,运行阶段应该保持尽可能少的模块。云原生应用的12要素6.进程12-Factor应用的进程必须是无状态且无共享的,任何需要持久化的数据都要存储在后端服务中。12-Factor应用更倾向于在构建步骤执行二进制文件的编译,而不是在运行阶段。7.端口绑定应用通过端口绑定提供服务,并监听发送至该端口的请求。8.并发12-Factor应用的进程具有无共享、水平分区的特性,使得水平扩展较为容易。12-Factor应用的进程不需要守护进程或者写入PID文件,而是通过进程管理器(例如systemd)来管理输出流、响应崩溃的进程,以及处理用户触发的重启或者关闭超级进程的操

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论