接入阿里云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--公有云分布式存储的主要内容,如果未能解决你的问题,请参考以下文章