1、加速整个Bucket
通过Java SDK在ossClient初始化时,全局使用OSS加速域名实现加速整个Bucket的数据传输。
// 填写OSS加速器域名。
String acclerator_oss_endpoint = "http://cn-beijing-internal.oss-data-acc.aliyuncs.com";
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(normal_oss_endpoint, accessKeyId, accessKeySecret);
OSSObject ob = ossClient.getObject(bucketName,objectname);
OSSObject ob = ossClient.putObject(bucketName,objectname,inputStream);
2、加速Bucket指定路径
可以通过以下两种形式的Endpoint实现以上数据读写分流场景。
oss-cn-beijing.aliyuncs.com:通过OSS域名上传数据以及下载normal_data/*下的常规数据。
oss-cache-cn-beijing-h.aliyuncs.com:通过OSS加速域名加速下载hot_data/*下的热数据。
示例代码如下:
public class Demo {
// 请确保已设置环境变量AccessKeyId和AccessKeySecret。
private static String acceskeyId = System.getenv("AccessKeyId");
private static String accessKeySecret = System.getenv("AccessKeySecret");
// 使用OSS Endpoint上传数据至OSS Bucket。
private static String normal_oss_endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// 使用OSS加速器Endpoint下载数据。
private static String acclerator_oss_endpoint = "https://cn-hangzhou-internal.oss-data-acc.aliyuncs.com";
// 填写Bucket名称,例如examplebucket。
private static String bucketName = "examplebucket";
// 填写用于存储热数据的Object名称。
private static String object_hot = "hot_data/filetest";
// 填写用于存储常规数据的Object名称。
private static String object_normal = "normal_data/filetest";
// 填写上传的文件内容。
private static String content = "helloworld";
public static void main(String[] args) throws IOException {
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(normal_oss_endpoint, accessKeyId, accessKeySecret);
// 将object_hot的数据上传到标准OSS。
uploadFile(object_hot, ossClient);
// 将object_normal的数据上传到标准OSS。
uploadFile(object_normal, ossClient);
// 通过OSS加速器下载hot_data/filetest。
downloadFile(object_hot, ossClient);
// 通过OSS下载normal_data/filetest。
downloadFile(object_normal, ossClient);
// 关闭OSSClient。
ossClient.shutdown();
}
public static void printObjectContent(OSSObject ob) throws IOException {
//// 读取文件内容。
BufferedReader reader = new BufferedReader(new InputStreamReader(ob.getObjectContent()));
while (true) {
String line = reader.readLine();
if (line == null) { break; }
System.out.println("content:" + line);
}
}
/*
*全部上传到OSS。
*/
public static void uploadFile(String objectName, OSS ossClient) {
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(content.getBytes());
InputStream contentInputStream = (InputStream) byteArrayInputStream;
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, contentInputStream);
// 如果不显式设置Endpoint,将使用ossclient初始化时设置的值。
PutObjectResult result = ossClient.putObject(putObjectRequest);
System.out.println("Put objectName:" + objectName + " to " + normal_oss_endpoint + " resultID:" + result.getRequestId());
putObjectRequest.setEndPoint(normal_oss_endpoint);
}
/*
*根据objectName的前缀判断需要使用的Endpoint。
*/
public static Object downloadFile(String objectName, OSS ossClient) throws IOException {
String endpoint = "";
if (objectName.startsWith("normal_data")) {
endpoint = normal_oss_endpoint;
} else if (objectName.startsWith("hot_data")) {
endpoint = acclerator_oss_endpoint;
}
GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, objectName);
// 如果不显式设置Endpoint,将使用ossclient初始化时设置的值。
getObjectRequest.setEndPoint(endpoint);
OSSObject ob = ossClient.getObject(getObjectRequest);
System.out.println("Get Object" + objectName + " from " + endpoint + " resultID" + ob.getRequestId());
printObjectContent(ob);
return ob;
}
}
——参考链接。
要使用OSS加速器,遵循以下步骤:
1.创建OSS加速器:
2.设置加速策略:
3.访问加速器:
http://oss-cache-cn-region.aliyuncs.com
。 通过以上步骤,您可以有效提升OSS中文件的访问速度,特别是对于频繁访问的热点文件。记得根据实际需求调整加速器配置和策略。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。