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
原創文章,作者:RMDXS,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/360912.html
微信掃一掃
支付寶掃一掃