接入阿里云OSS--公有云分布式存储

Posted 旧时星空

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了接入阿里云OSS--公有云分布式存储相关的知识,希望对你有一定的参考价值。

Ceph搭建基于私有云的分布式存储

部署简单

开源

客户端支持多语言

可靠性高

性能高

分布式,可扩展性强

###接入阿里云OSS–公有云分布式存储

选择阿里云OSS的原因

对象存储服务

可靠性:服务可靠性,数据持久性

安全性:资源隔离存储,访问鉴权

易用性:标准restful风格API,多种语言SDK接入

处理能力:海量规模,图片处理,音视频转码

OSS相关专业术语

Bucket–存储空间,存储对象的容器

Object–对象或者文件

Endpoint–OSS访问域名

Region–区域或者数据中心

AccessKey–资源访问密钥

Object Meta–文件元信息,即文件的描述类信息

Data --文件数据

Key–文件名

ACL(Access Control List)–存储空间或者文件的权限(public-read-write公共读写、public-read公告读私有写、private私有读写、default默认权限)

开始使用OSS

配置信息

const(
  OSSBucket="buckettest-filestore2"
  OSSEndpoint="oss-cn-shenzhen.aliyuns.com"
  OSSAccesskeyID=""
  OSSAccesskeySecret=""
)

封装上传下载等操作

oss_conn.go

import(
cfg"rgo/config"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)

var ossCli*oss.Client
//创建oss Client对象
func Client()*oss.Client
    if ossCliy!=nil
        return ossCli
    
    ossCli,err:=oss.New(cfg.OSSEndpoint,cfg.OSSAccesskeyID,cfg.OSSAccesskeySecret)
    if err!=nil
        fmt.Println(err.Error())
        return nil
    
    return ossCli


//获取bucket存储空间
func Bucket()*oss.Bucket
    cli:=Client()
    if cli!=nil
        bucket,err:=cli.Bucket(cfg.OSSBucket)
        if err!=nil
            fmt.Println(err.Error())
            return nil
        
        return bucket
    

在handler中的文件上传出添加如下代码,将文件上传到OSS中

ossPath:="oss/"+fileMeta.FileSha1
err=oss.Bucket().PutObject(ossPath,newFile)
if err!=nil
    fmt.Println(err.Error())
    w.Write([]byte("Upload failed!")
            return

            fileMeta.Location=ossPath

在oss_conn.go中继续编写下载功能API

//临时授权下载URL
func DownloadURL(onjectName string)string
    signedURL,err:=Bucket().SignURL(objName,oss.HTTPGet,3600)
    if err!=nil
        fmt.Println(err.Error())
        return ""
    
    return signedURL

在handler.go中编写生成URL的API

//生成oss文件的下载地址
func DownloadURLHandler(w http.ResponseWriter,r*http.Request)
    r.ParseForm()
    filehash:=r.form.Get("filehash")
    //从文件表查找记录
    row,_:=dblayer.GetFileMeta(filehash)
    signedURL:=oss.DownloadURL(row.FileAddr)
    w.Write([]byte(signedURL))

以上是关于接入阿里云OSS--公有云分布式存储的主要内容,如果未能解决你的问题,请参考以下文章

接入阿里云OSS--公有云分布式存储

python2系列 接入阿里云oss sdk 实现上传脚本,亲测

MinIO 快速入门之一 —— MinIO 简介

阿里云OSS怎么接到dede去

学相伴接入OSS后访问速度快了10倍

学相伴接入OSS后访问速度快了10倍