admin管理员组

文章数量:1545395

JavaEE与云服务知识概括

  • 文件、块、对象存储
  • IaaS、SaaS 和 PaaS
  • IDaaS
  • 中台
  • 服务器、域名、端口、备案
  • 低代码与引擎
  • java沙箱
  • 私有化和公有化部署
  • LICENSE与LICENSE服务器
  • 组件、套件、 中间件、插件

文件、块、对象存储

存储简介:

  • 根据不同的分类形式,存储也会被分为不同的类型,但用途是一致的:存储的最终目的是存放数据。
  • 对于这种第三方存储,我们也可以叫他中介库。
  • 存储的分类有很多种形式:
    本地存储外置存储:
    <1>本地存储:就是使用内存或者硬盘进行存储。
    <2>外置存储:就是会用U盘或移动硬盘进行存储。
    DAS(Direct Attach STorage)SAN(Storage Area Network)NAS(Network Attached Storage):
    <1>DAS:是直接连接于主机服务器的一种储存方式,每一台主机服务器有独立的储存设备,每台主机服务器的储存设备无法互通,需要跨主机存取资料时,必须经过相对复杂的设定,若主机服务器分属不同的操作系统,要存取彼此的资料,更是复杂,有些系统甚至不能存取。通常用在单一网络环境下且数据交换量不大,性能要求不高的环境下,可以说是一种应用较为早的技术实现。
    <2>SAN:是一种用高速(光纤)网络联接专业主机服务器的一种储存方式,此系统会位于主机群的后端,它使用高速I/O 联结方式, 如 SCSI, ESCON 及 Fibre- Channels。一般而言,SAN应用在对网络速度要求高、对数据的可靠性和安全性要求高、对数据共享的性能要求高的应用环境中,特点是代价高,性能好。例如电信、银行的大数据量关键应用。它采用SCSI 块I/O的命令集,通过在磁盘或FC(Fiber Channel)级的数据访问提供高性能的随机I/O和数据吞吐率,它具有高带宽、低延迟的优势,在高性能计算中占有一席之地,但是由于SAN系统的价格较高,且可扩展性较差,已不能满足成千上万个CPU规模的系统。
    <3>NAS:NAS(Network Attached Storage):是一套网络储存设备,通常是直接连在网络上并提供资料存取服务,一套 NAS 储存设备就如同一个提供数据文件服务的系统,特点是性价比高。例如教育、政府、企业等数据存储应用。它采用NFS或CIFS命令集访问数据,以文件为传输协议,通过TCP/IP实现网络化存储,可扩展性好、价格便宜、用户易管理,如目前在集群计算中应用较多的NFS文件系统,但由于NAS的协议开销高、带宽低、延迟大,不利于在高性能集群中应用。
    块存储文件存储对象存储
    <1>块存储:是块设备,一切磁盘形式存在的存储都是块设备,即块存储。
    1、块存储强调裸磁盘。
    2、所有以磁盘形式直接提供给主机的或服务器访问的存储都是块存储。
    3、块存储使用时文件系统在客户端。
    <2>文件存储文件存储的存储端多了一层文件系统,通过文件系统的调度后再对外提供存储资源。
    1、文件存储易于共享。
    2、块存储加文件系统打包后对外提供存储服务(NAS)。
    <3>对象存储:是一种全新的存储架构,综合了块存储和文件存储的优点
    1、特点:速度快,易于共享扩展性强。
    2、文件存储是以传统的目录架构存储的而对象存储是二层结构的文件系统。
  • 注意:
    一般来说SAN和DAS形式存储的都是用块存储。
    而文件存储和对象存储一般都是NAS形式。

DAS、NAS、SAN三种技术的比较和分析:

  • 针对Linux集群对存储系统高性能和数据共享的需求,国际上已开始研究全新的存储架构和新型文件系统,希望能有效结合SAN和NAS系统的优点,支持直接访问磁盘以提高性能,通过共享的文件和元数据以简化管理,
  • 目前对象存储系统已成为Linux集群系统高性能存储系统的研究热点,如Panasas公司的Object Base Storage Cluster System系统和Cluster File Systems公司的Lustre等。

对象存储服务OSS:

  • 无论是基于C/S架构(部分资源在本地),还是B/S架构(全部资源在服务器)的应用,都要面临一个文件存储的问题。
  • 对于文件存储最常见的有两种解决方案:
    直接存储到应用服务器的本地中
    <1>存储到服务器本地,小的应用程序,是没有什么问题的。
    <2>但是如果文件多了,大了,本地存储的速率、安全性都受到极大的挑战。I/O吞吐会让系统不堪重负。
    处理后直接存入到数据库中:
    <1>存储到数据库中,数量少的时候,还能解决一点问题,同样的对于大数据量,是灾难性的。
  • 新的解决方案:OBS对象存储,让海量小文件存储变得轻而易举。存储速度上很有保障,同时对于数据的备份和安全,云产品都有比较完美的考虑。价格也是白菜价,可谓物美价廉。现在已经成为团队内部的备选组件。
    ①对象存储同兼具SAN高速直接访问磁盘特点及NAS的分布式共享特点。
    ②核心是将数据通路(数据读或写)和控制通路(元数据)分离,并且基于对象存储设备(Object-based Storage Device,OSD)构建存储系统,每个对象存储设备具有一定的智能,能够自动管理其上的数据分布。
  • 代码的接口方法,也比较简单,直接根据SDK接入即可。
  • 主要用来解决如下的几种业务场景:
    小图片的存储。APP开发过程中,小图片的上传和展示频率很高。
    编辑器(例如UEditor)中的图片存储,此处需要单独书写点代码,完成存储工作。

OSS使用中的基本概念:

  • Bucket(存储空间):
    ①Bucket是用户用来管理所存储0bject的存储空间。每个用户可以拥有多个Bucket。Bucket的名称在0SS的范围内必须是全局唯一的,一旦创建之后无法修改名称。Bucket内部的Object数目是没有限制的。
    ②Bucket对于用户来说是一个管理Object的单元,所有的Object都必须隶属于某个Bucket。Bucket有一些属性用来控制Region、0bject的访问控制、Object的生命周期等,这些属性是作用在该Bucket下所有的Object上的,因此用户可以灵活创建不同的Bucket来完成不同的管理功能。
    ③Bucket命名规范:
    <1>只能包括小写字母,数字和短横线(-)
    <2>必须以小写字母或者数字开头
    <3>长度必须在3-63字节之间
  • Object(对象,文件):
    ①Object是OSS存储数据的基本单元,称为OSS的对象,也被称为OSS的文件。
    ②Object命名规范:
    <1>使用UTF-8编码
    <2>长度必须在1-1023字节之间
    <3>不能以“/”或者“”字符开头
    <4>注意:Object的名字是大小写敏感的
  • Region (区域):
    ①Region表示OSS的数据中心所在的区域,物理位置。用户可以根据费用、请求来源等综合选择数据存储的Region。一般来说,距离用户更近的Region访问速度更快。目前已经开通的Region有杭州,上海,深圳,北京,青岛,香港,美国,新加坡。
    ②Region是在创建Bucket的时候指定的,一旦指定之后就不允许更改,该Bucket下所有的0bject都存储在对应的数据中心,目前不支持Object级别的Region设置。
  • Endpoint(访问域名):
    ①Endpoint表示OSS对外服务的访问域名。 OSS以HTTP REST API的形式对外提供服务,当访问不同的Region的时候,需要不同的域名。通过内网和外网访问同一个Region所需要的Endpoint也是不同的。
  • AccessKey(访问密钥):
    ①AccessKey,简称AK,指的是访问身份验证中用到的Accesskeyld和AccessKeySecret. OSSitt aAccessKeyIdHAccessKeySecretxf FKIU密的方法来验证某个请求的发送者身份。
    ②AccesskeyId用于标示用户,AccessKeySecret是用户用于加密签名字符串和0SS用来验证签名字符串的密钥,其中AccesskeySecret必须保密。

通过API/SDK上传文件:

  • 概述:用户可遍历所有需上传的文件,通过API/SDK中的PutObjectPostObjectMultipartUpload三个接口完成上传操作。
  • 区别:
    PutObject:是可用于服务器端上传不易太大的文件;
    Post0bject适合于通过html表单直接上传文件到bucket,不经过用户的应用服务器:
    MultipartUpload支持断点上传,适合于网络质量较差或者文件大小较大的情况下的上传。
  • 优缺点:
    ①优点:适用场景广泛、使用灵活:
    ②缺点:操作复杂、速度较慢。
  • 步骤:
    ①打开OSS网站的帮助与文档,点击SDK开发包下载,点击JAVA/SDK开发包下载。
    ②导入JAVA/SDK开发包中的JAR包。
    ③编写方法
    ④PutObject注意事项:
    <1>用户在metaData中指定Content-MD5请求头,0SS会计算body的Content-MD5并检查一致性:
    <2>如果Head中没有加入Content length参数,会返回411 Length Required错误:
    <3>ID/KEY/ENDPOINT设置有误会报403,错误码:AccessDenied。
public class OSSObjectSample{
   
	//访问id	
	private static final String ACCESS_ID ="your access key id";
	//访问密钥
	private static final String ACCESS_KEY ="your access key secret";
	//访问地址
	private static final String Endpoint="http://oss-cn-guangzhou.aliyuncs";
	
	public static void main(String[] args) throws Exception{
   
		//桶地址
		String bucketName

本文标签: 知识javaEE