开发者社区> 问答> 正文

如何使用oss加速器?

如何使用oss加速器?

展开
收起
古月虎 2024-07-28 15:01:05 14 0
2 条回答
写回答
取消 提交回答
  • 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指定路径
    image.png
    可以通过以下两种形式的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;
        }
    }
    

    ——参考链接

    2024-07-28 16:59:33
    赞同 1 展开评论 打赏
  • 要使用OSS加速器,遵循以下步骤:
    1.创建OSS加速器

    • 登录OSS管理控制台。
    • 选择“数据服务 > OSS加速器”。
    • 点击“创建OSS加速器”,设置名称、可用区、加速域名、容量(至少20TB,5的整数倍)。
    • 查看并确认吞吐能力,点击“确定”。

    2.设置加速策略

    • 选择目标加速器,点击“设置加速路径”。
    • 添加加速策略,可选择“指定路径加速”或“加速整个Bucket”。
    • 如需实时更新热点文件,勾选“同步预热”。

    3.访问加速器

    • 对于加速整个Bucket,通过Java SDK初始化时,使用OSS加速域名,如http://oss-cache-cn-region.aliyuncs.com
    • 若要加速指定路径,分别使用正常OSS域名和加速域名进行数据读写分流。

    通过以上步骤,您可以有效提升OSS中文件的访问速度,特别是对于频繁访问的热点文件。记得根据实际需求调整加速器配置和策略。

    2024-07-28 15:30:44
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
OSS运维进阶实战手册 立即下载
《OSS运维基础实战手册》 立即下载
OSS运维基础实战手册 立即下载