简介

  • OSS:阿里云对象存储服务(Object Storage Service),是阿里云提供的海里、安全、低成本、高可靠的云存储服务。您可以通过调用API上传和下载数据,也可以通过web控制台对数据进行简单的管路。它将数据文件以对象的形式上传到存储空间(bucket)中。

    开通OSS服务

  • 登录阿里云官网,注册账号,首页点击产品,在下拉菜单点击对象存储OSS,点击立即开通,开通后创建空间,然后就可以开始上传文件了。
  • 上传方式有多种,可以通过OSS控制台直接上传、通过代码上传、通过图形化管理工具ossbrowser等上传
  • 图形化管理工具

  • Ossutil:命令行管理工具,提供简介方便的object管理命令。简单来讲就是通过简单的命令行,即可实现往OSS上传输的功能,当然也包括其他的功能。
  • 文件总量小于30T时适用,大于30T建议使用ossimport类的工具

    代码方式

  • OSSClient:OSS服务的Java客户端,它为调用者提供了一系列的方法,用于和OSS服务进行交互。
  • 引入依赖:

    <dependency>
        <groupId>com.aliyun.oss</groupId>
        <artifactId>aliyun-sdk-oss</artifactId>
        <version>3.1.0</version>
    </dependency>
    
  • OSS配置文件

    ossclient.endpoint:https://xxx.aliyuncs.com #ossutil的基本endpoint配置,必须为一个二级域名,表示OSS对外服务的访问域名
    ossclient.accessKeyId:xxx #访问OSS使用的AccessKeyID
    ossclient.accessKeySecret:xxx #访问OSS使用的AccessKeySecret(密钥)
    ossclient.bucketName:xxx #存储空间,所有要存储的对象都必须隶属某个存储空间
    
  • OSS通过使用AccessKeyId和AccessKeySecret对称加密的方法来验证某个请求的发送者身份。AccessKeyId用于标识用户;AccessKeySecret是用户用于加密签名字符串和OSS用来验证签名字符串的密钥,必须保密。
  • 新建OSSClient:

    String key = "<key>";
    String secret = "<secret>";
    OSSClient client = new OSSClient(key, secret);
    
  • 上面的方式使用默认域名作为OSS的服务地址。如果你想自己制定域名,可以传入endpoint参数来指定

    做法解析

  • 一般做法是用户在浏览器上传到应用服务器,然后应用服务器再把文件上传到OSS
  • 这种方法有三个缺点:
  1. 上传慢,中间需要经过应用服务器,网络传送多了一倍,而且OSS是采用BGP带宽,能保证各地运营商的速度。
  2. 扩展性不好,如果后续用户多了,应用服务器就会成为瓶颈。
  3. 费用高,因为OSS上传流量是免费的。如果数据直接传到OSS,不走应用服务器,那么将能省下几台应用服务器
  • BGP带宽:边界网关协议,运行于TCP上的一种自治系统(AS)的路由协议。通俗来讲,就是电信、移动、联通和一些拥有AS自治域的运营商可以通过BGP来实现多线互联。打个比喻,出差去伤害(网站),可以选择公路(电信)、飞机(联通)、高铁(移动)等多种方式,BGP就好比一个只能App,可以帮助用户选择最佳的交通形式,并且可以在出现临时问题时,自动帮用户选择最佳的交通方式
  • 改进方法,由于技术问题,暂不列出