您的位置:

OSS阿里云:全球领先的云端对象存储服务

OSS阿里云(Object Storage Service)是一种安全、高可靠、高可扩展的云端对象存储服务。它可以通过 APIs 对象存储控制台或者 SDK 开发工具完成对云端文件的上传、下载、删除等基本操作。本文将从多个方面详细介绍OSS阿里云的特点及其适用的场景。

一、高可靠的存储

OSS可以存储任意类型的文件,包括文本、图像、音频、视频文件等。存储文件时,OSS默认采用3副本存储模式,将数据在3个不同的物理存储设备上存储,确保数据的安全性和高可靠性。同时,OSS也支持存储方式选择自定义,根据用户需求来选择其他存储方式,如副本数、单副本速度等等。

代码示例:

// 存储时采用默认的3副本存储模式
ossClient.putObject(bucketName, objectName, inputStream);

// 存储时,自定义存储方式和参数
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, inputStream);
putObjectRequest.setStorageClass(StorageClass.IA); // 设置对象存储类型为低频访问存储
putObjectRequest.setCannedACL(CannedAccessControlList.PublicRead); // 设置对象ACL为公共读
ossClient.putObject(putObjectRequest);

二、高性能的上传下载

在OSS上上传/下载文件时,它具有高可靠性、高速度、高吞吐量的特点。OSS的上传功能支持断点续传,同时也支持服务器端复制和分片上传。OSS的下载功能支持全站加速,加速下载来自世界各地的用户请求。

代码示例:

// 文件上传
File file = new File("localFile");
ossClient.putObject(bucketName, objectName, file);

// 断点续传上传
// ...
ossClient.uploadPart(uploadPartRequest);

// 文件下载
OSSObject ossObject = ossClient.getObject(bucketName, objectName);
InputStream inputStream = ossObject.getObjectContent();

// 加速下载
GeneratePresignedUrlRequest request = new GeneratePresignedUrlRequest(bucketName, objectName, HttpMethod.GET);
request.setExpiration(new Date(System.currentTimeMillis() + 3600 * 1000L));
URL url = ossClient.generatePresignedUrl(request);

三、API多样性

OSS提供了多种API方式,包括RESTful API、Java SDK、Python SDK、Ruby SDK、PHP SDK、.NET SDK等等。多种API方式可以方便用户在不同的开发环境和开发框架中使用。用户可以根据自己的需求来选择最适合的API方式。

代码示例:

// Java SDK上传文件
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
ossClient.putObject(bucketName, objectName, new File(localFilePath));

// Python SDK下载文件
auth = oss2.Auth(access_key_id, access_key_secret)
bucket = oss2.Bucket(auth, endpoint, bucket_name)
with open(local_file_path, 'wb') as f:
    for chunk in oss2.resumable_download(bucket, object_name, progress_callback=percentage):
        f.write(chunk)

// PHP SDK删除文件
$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
$ossClient->deleteObject($bucket, $object);

四、应用场景

OSS可用于媒体资产管理、智能家居、物联网、在线教育、电商等多个行业。以下是一些使用场景的简要介绍。

1. 媒体资产管理

用户可以将大量的视频、音频、图片等媒体资产存储在OSS上,并通过CDN加速进行高效分发。这里的媒体资产管理可分为在线制作和后期制作两个环节。

2. 智能家居

在智能家居数码产品中(如摄像头、门锁、智能音箱),基于OSS存储的图片和视频数据即可存储到云端,支持数据覆盖、多媒体管理等一系列操作,方便用户随时随地查看家中各种设备状态。

3. 物联网

OSS可以存储物联网设备生成的数据和文件(如传感器、集控器、网关)等,同时支持与Web端进行交互,为采集、存储和使用数据提供高效、安全的解决方案。

4. 在线教育

在线教育行业需要存储大量的视频、音频课件,作为教育资源供TA支持教学使用。OSS的高可靠性和数据访问速度使得学生、老师可以快速地获取教育资源。

5. 电商

OSS可以作为电商行业中存储商品图片、视频、文档等资源的云端存储服务。例如,用户在购物过程中可以选择图片放大查看、甚至是视频播放;商家可以通过OSS来托管大规模的商品详情页图片等资源。

总之,不同行业可以依据自身需求差异选择使用OSS进行当地存储或进行全球化部署,同时,通过OSS的多样性API,使得用户可以方便地在不同设备和场景中使用OSS。

代码示例:

// 媒体资产管理
// ...
OSSObject object = ossClient.getObject(bucketName, objectName);
InputStream inputStream = object.getObjectContent();
// do something with inputStream

// 智能家居
// ...
// OSS盘提供的摄像头获取和视频回看功能。
// 中转服务器得到摄像头推送过来的图片或视频流,存储到oss盘中。
// App端请求获取摄像头回看,中转服务器从oss盘中获取对应的图片或视频流。

// 物联网
// ...
public List querySensorData(String productKey, String deviceName,
                                          String startTimestamp, String endTimestamp) {
    List
    deviceDataList = new ArrayList<>();
    QueryDeviceDataRequest request = new QueryDeviceDataRequest();
    request.setProductKey(productKey);
    request.setDeviceName(deviceName);
    request.setStartTime(startTimestamp);
    request.setEndTime(endTimestamp);
    for (DataEntry entry : client.getDeviceData(request).getData()) {
        DeviceData deviceData = JSONSerializer.deserialize(entry.getData(), DeviceData.class);
        deviceData.setTime(entry.getTime());
        deviceDataList.add(deviceData);
    }
    return deviceDataList;
}

// 在线教育
// ...
OSSObject ossObject = ossClient.getObject(bucketName, objectName);
InputStream inputStream = ossObject.getObjectContent();

// 电商
// ...
OSSObject ossObject = ossClient.getObject(bucketName, objectName);
InputStream inputStream = ossObject.getObjectContent();
// do something with inputStream