精华内容
下载资源
问答
  • 云存储已经成为业界最为火热的概念之一,大家都众说纷“”,而且慢慢开始相信这样一个互联网的未来:未来是时代,没有存储设备,一切都存储里。毫无疑问,是数据中心的未来,随着数据中心以及物联网和移动...
  • 之前使用华为云数据库其实主要是为了存储自己的图片,但后面发现如果用数据库存储图片的话将面临主要两个问题。       第一,数据库数据类型有限制,不方便我们操作,不够灵活,当我们想要再...

    前言

          之前使用华为云数据库其实主要是为了存储自己的图片,但后面发现如果用数据库存储图片的话将面临主要两个问题。
          第一,数据库数据类型有限制,不方便我们操作,不够灵活,当我们想要再存储其它东西的时候还需要修改数据库列的类型。
          第二,因为我主要是为了存储图片,如果想要通过python存储图片到数据库的话,中间有一个数据类型转化的过程,每次都需要转码以及解码,这个过程浪费了很多时间以及资源。(还有很多脑细胞)
          因此,我选择了数据库+云存储的方式来实现图片的存储以及管理(很多人应该都是这么做的吧)
          本文呢就是主要介绍一下怎么通过python来创建以及使用华为云的云数据存储服务OBS。(最基础的,自己使用的经验,没用到的也没去接触)
          刚开始我有点担心速度的问题,后面发现我想多了,图片大小1.17MB,上传速度实测0.5s左右,下载速度实测也在0.5s左右。
          如果发现文章哪里有问题,欢迎指正。

    创建桶

          首先呢,我们在华为云的服务列表里的存储类里面找到对象存储服务OBS。进入之后我们点击右上角的创建桶。在这里插入图片描述
          具体怎么配置的话还是看你的使用情况,我的因为是经常性的使用且都是小文件,所以是这么配置的。在这里插入图片描述
          配置完成后点立即创建就完成了。官方介绍的使用流程是分成五步的,但是我因为没有特殊需求就没有进行配置,感兴趣的话可以自己了解下。我们刚刚完成了第一步的创建,第二第三步我直接跳过了,第四项的话它默认是帮你监控的,如果你需要监控其它什么数据的话看可以自己设置下,最后的第五步就是需要你花钱了(创建桶是免费的)在这里插入图片描述
          我们点击购买资源包。下面的这个是我买的配置,主要是单az和多az那里别选错了,其它的根据自己的需求来就行了。同样价格还是很便宜的。在这里插入图片描述
          购买之后我们基本就配置的差不多了。下面一步,我们需要找到个人凭证。在这里插入图片描述
          在我的凭证里面有个访问密钥,我们新增一个密钥。新增完成后网页会自动下载一个csv文件。别误删了,每个密钥好像都是只能下载这一次。当然,不嫌麻烦可以再新增。。。csv文件里面总共有三项。第一项是你华为云账号的名称,后面的Access Key Id和Secret Access Key就是你的id和密码了。此外,我们还需要一个信息,就是我们创建桶的访问地址,我们点击我们的桶,在基本信息里面可以看到个访问域名,我们将这个信息记下来。下面我们就可以开始python端的实现了。

    python端实现

          同样我这里就是使用的官方的SDK,具体的大家可以在官方SDK文档里面找,我这里给大家演示的就是文件的上传和下载了。
          首先我们要安装官方的SDK,就直接跟安装其它第三方库一样pip install esdk-obs-python就可以了。

    文件上传

    from obs import ObsClient
    from datetime import datetime
    
    start = datetime.now()#用来计时
    # 创建ObsClient实例
    obsClient = ObsClient(
        access_key_id='Access Key Id',#刚刚下载csv文件里面的Access Key Id
        secret_access_key='Secret Access Key',#刚刚下载csv文件里面的Secret Access Key
        server='https://访问域名'#这里的访问域名就是我们在桶的基本信息那里记下的东西
    )
    # 使用访问OBS
    # 调用putFile接口上传对象到桶内
    resp = obsClient.putFile('桶的名称', '文件存储在桶内的名称', file_path='要上传的那个文件的本地路径')
    if resp.status < 300:
        # 输出请求Id
        print('requestId:', resp.requestId)
    else:
        # 输出错误码
        print('errorCode:', resp.errorCode)
        # 输出错误信息
        print('errorMessage:', resp.errorMessage)
    # 关闭obsClient
    obsClient.close()
    end = datetime.now()
    print(end-start)#打印出使用的总时间
    

    文件下载

    from obs import ObsClient
    from datetime import datetime
    
    start = datetime.now()#用来计时
    # 创建ObsClient实例
    obsClient = ObsClient(
        access_key_id='Access Key Id',#刚刚下载csv文件里面的Access Key Id
        secret_access_key='Secret Access Key',#刚刚下载csv文件里面的Secret Access Key
        server='https://访问域名'#这里的访问域名就是我们在桶的基本信息那里记下的东西
    )
    # 调用getObject接口下载桶内对象
    # 本地路径记得加上文件名和后缀  比如F:/test_picture/1.jpg
    resp = obsClient.getObject('桶的名称', '文件存储在桶内的名称', downloadPath='下载到的本地路径')
    if resp.status < 300:
        print('requestId:', resp.requestId)
        print('url:', resp.body.url)
    else:
        print('errorCode:', resp.errorCode)
        print('errorMessage:', resp.errorMessage)
    
    # 关闭obsClient
    obsClient.close()
    end = datetime.now()
    print(end-start)#打印出使用的总时间
    
    展开全文
  • 据说华为云对象存储OMS服务的复制功能挺牛逼的,能够在线复制其他云上的对象存储文件,体验一下效果如何。 对象存储适合存放非结构化数据,如图片、视频、文件等等。用文本文件测试一下效果。 【思路】 1、在腾讯云...

    【实验目的】
    据说华为云对象存储OMS服务的复制功能挺牛逼的,能够在线复制其他云上的对象存储文件,体验一下效果如何。
    对象存储适合存放非结构化数据,如图片、视频、文件等等。用文本文件测试一下效果。

    【思路】
    1、在腾讯云对象存储COS上创建一个标准存储桶。
    2、通过python写一个爬虫脚本,爬取糗事百科网站上第一页的笑话,每个笑话作为一个文件,调用腾讯的SDK接口自动存放到腾讯云对象存储COS中。
    3、使用华为云对象存储服务OMS将腾讯云对象存储COS中的笑话文件在线复制到华为云,观察路径结构是否相同。
    4、通过python脚本,分别调用腾讯云和华为云上的SDK接口,将所有笑话读出来,并分别保存到一个文件中。通过beyondcompare工具对比内容是否一致。
    5、python爬虫程序继续爬取第二页的笑话并上传至腾讯云的对象存储COS中,检查笑话文件是否从腾讯云同步到华为云上。
    6、重复步骤4,检查对象存储中增量部分内容是否一致。

    【操作步骤】
    1、编写python爬虫代码,将糗事百科上主页第一页笑话爬取到本地,存放为文件。Python爬虫代码参考后文。爬虫脚本运行结果和文件生成情况如下。


    2、在腾讯云创建测试桶和测试目录,OK。


    3、安装腾讯云对象存储COS的SDK插件。本文测试的爬虫脚本在笔记本的windows环境上运行,在笔记本上的命令行中执行命令“pip install -U cos-python-sdk-v5”
    4、在腾讯云的控制台-访问管理-云API密钥-API密钥管理-新密钥。记录好appid和密钥,后续SDK API调用需要通过密钥验证调用者的身份和权限。


    5、python爬虫获取的笑话,不用在本地生成文件了,直接写入到对象存储的指定文件夹“糗事百科笑话”的文件中。篇幅有限,这里截图值包含了部分文件列表。这部分代码见附录1


    6、在华为云上创建一个OBS桶,并下载华为云的访问密钥。

    7、启动华为云对象存储OMS服务,根据提示输入腾讯云和华为云的桶信息。

    8、选择指定迁移文件夹“糗事百科笑话”。

    9、迁移完成,到华为云对象存储OBS中检查,文件夹“糗事百科笑话”和下级的笑话文件已经全部拷贝过来。华为云目前暂只支持按修改时间进行排序,不支持按照文件名,对比起来不方便。后面用第三方工具beyondcompare进行专项对比数据一致性。


    10 、安装华为云对象存储OBS的python版本SDK工具,步骤参考:帮助中心 > OBS Python SDK API参考 数据类型
    https://support.huaweicloud.com/api-obs_python_sdk_api_zh/zh-cn_topic_0119681269.html
    11、通过Python脚本分别读取华为云和腾讯云上的所有笑话文件,并分别保存到文件“华为云上的笑话.txt”和“腾讯云上的笑话.txt”中。使用第三方工具beyondcompare进行数据一致性的对比,对比方式二进制对比,即逐字节对比。对比结果是华为云从腾讯云复制过来的笑话,数据是一致的。这部分python代码见附录2.


    12、测试增量同步的情况。思路如下:
    <a>糗事百科首页的笑话,每隔几分钟就会更新成新笑话,使用爬虫脚本再次爬取笑话。
    <b>第1个笑话以追加更新的方式加入到joke_1.txt中,更新后joke_1.txt中保存2个笑话。
    <c>第2个笑话已覆盖更新的方式写入到joke_2.txt中,更新后joke_2.txt中保存最新的1个笑话。
    <d>其他笑话文件,暂不更新。
    这部分python代码见附录3。

    备注:
    <a>腾讯云对象存储COS目前不支持“追加写”的方式更新对象,对于频繁更新的文件,如日志文件,费时又费钱。
    <b>华为云对象存储OBS支持“追加写”的方式更新对象,有一些限制条件,详情见:https://support.huaweicloud.com/devg-obs_python_sdk_doc_zh/zh-cn_topic_0120253011.html

    13、增量更新结果说明,从腾讯云上的更新时间确认,仅笑话1和笑话2是增量数据。下一步重点关注华为云对象存储复制功能OMS是否只同步更新了这2个文件。PS:腾讯云不支持按照修改时间排序文件名,查找哪个文件更新了,很不方便。

    14、观察华为云对象存储OBS和复制服务OMS,没有进行自动更新,也没有按钮触发更新同步信息。需要在华为云对象存储中,手动创建新的复制任务,此时只会同步增量数据(即笑话1和笑话2)。原理:复制任务会先读取源端对象存储的元数据,用于对比哪些文件发生了变化,然后只复制有更新的文件。 操作步骤参加上面第7/8步。
    15、观察华为云对象存储的更新时间,发现只有笑话1和笑话2有更新,从传输的数据量也说明了新的复制任务只进行了增量同步。PS:华为云对象存储支持按修改时间进行排序,在大量文件中查找哪些文件有更新时,华为云比腾讯云更方便。


    16、重复步骤11,通过python脚本分别将腾讯云和华为云更新后的笑话下载,并分别汇总到一个文本文件中,进行逐字节比较。经确认,两边数据完全一致。脚本代码见附录2。

    【结论】
    1、华为云对象存储服务复制服务OMS,支持全量和增量复制其他云厂商(AWS、阿里云、腾讯云、百度云、金山云、青云、七牛云)的对象存储。
    2、复制后,两个平台上的文件是字节级的一致性。

    【心得】
    本文仅以腾讯云对象存储做测试,发现有2点是华为云对象存储做的更好的地方:
    1、华为云支持按照修改时间显示哪些文件最近被修改了,方便寻找更新文件。腾讯云不支持。
    2、华为云支持文件以“追加写”的方式更新文件,对于频繁更新的文件,省钱又高效。腾讯云不支持“追加写”方式更新。

    【附录-python脚本】
    附录1:爬虫程序读取糗事百科的笑话并存放到腾讯云对象存储上。

    #!/usr/bin/python3
    #-*- coding: utf-8 -*-
    
    import sys
    
    #网络爬虫所需的插件
    import urllib.request
    import re
    
    #腾讯云对象存储COS所需的插件
    from qcloud_cos import CosConfig
    from qcloud_cos import CosS3Client
    
    ###开始爬虫,从糗事百科网站获取笑话###
    #将爬虫伪装成浏览器,避免被网站屏蔽
    headers=("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 Safari/537.36 SE 2.X MetaSr 1.0")
    opener = urllib.request.build_opener()
    opener.addheaders = [headers]
    urllib.request.install_opener(opener)
    
    #获取所有的笑话内容
    webUrl = "http://www.qiushibaike.com/8hr/page/1"
    webContent=urllib.request.urlopen(webUrl).read().decode("utf-8", "ignore")
    matchPat = '<div class="content">.*?<span>(.*?)</span>'
    jokes = re.compile(matchPat, re.S).findall(webContent)
    jokeCount = len(jokes)
    ###结束爬虫###
    
    ###开始将笑话全部存放到腾讯云对象存储中###
    secret_id = 'AKIDwgAPOAcwwf7OOBpz1nJYdU6SaT7xxx'     # 替换为用户的secret_id
    secret_key = 'MSIsCFMErDKCwUp142qRq20kHafWxxxx'     # 替换为用户的secret_key
    region = 'ap-chengdu'
    token = None
    config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token) 
    client = CosS3Client(config)
    
    for idx in range(jokeCount):    
        joke = re.sub(r'\n', "", str(jokes[idx]))  #删除换行符
        joke = re.sub(r'<br/>', "", joke)  #删除多余标签
        file_name = "joke_" + str(idx+1) + ".txt"
        file_path = '糗事百科笑话/' + file_name
        response = client.put_object(Bucket='tx-lyc-cos-1256385300',Body=joke,Key=file_path)
        print(response['ETag'])    
        print(str(joke))
        print("======")
    ###结束将笑话全部存放到腾讯云对象存储中###

    附录2:分别读取华为云和腾讯云的对象存储中的笑话,用于进行一致性对比。

    #!/usr/bin/python3
    #-*- coding: utf-8 -*-
    
    import sys
    
    #访问华为云对象存储所需的插件
    from obs import ObsClient
    from obs import *
    
    #访问腾讯云对象存储所需的插件
    from qcloud_cos import CosConfig
    from qcloud_cos import CosS3Client
    
    ###开始 读取华为云中的笑话###
    ak='HUPPCP5G6IGAC08Oxxxx'
    sk='ql3wxcugPsA9sdczRYae2w87h84Uah72ryvPxxxx'
    region ='https://obs.cn-south-1.myhwclouds.com'
    obsClient = ObsClient(access_key_id = ak, secret_access_key= sk, server = region)
    bucket = 'hello-obs-demo'
    resp = obsClient.listObjects(bucketName=bucket, prefix='糗事百科笑话/joke')
    files = resp.body.contents
    fileCount = len(files)
    
    #将这些文件中的笑话内容分别读出来,并写入名为“华为云上的笑话.txt”文件中
    fo = open('华为云上的笑话.txt',  'wb')
    fileCount = len(files)
    jokeInfo = '笑话总数:' + str(fileCount)
    fo.write(jokeInfo.encode('utf-8', 'ignore'))
    
    for idx in range(fileCount):
            file = files[idx]
            fileName = '\n\n===' + file.key + '===\n'
            fo.write(fileName.encode('utf-8', 'ignore'))
            fileBody = obsClient.getObject(bucketName=bucket, objectKey=file.key, loadStreamInMemory='True')
            fo.write(fileBody.body.buffer)
    fo.close()
    obsClient.close()
    print('读取华为云上的笑话结束,总数:' + str(fileCount))
    ###结束 读取华为云中的笑话###
    
    ###开始 读取腾讯云中的笑话###
    secret_id = 'AKIDwgAPOAcwwf7OOBpz1nJYdU6SaT7Xxxx'     # 替换为用户的secret_id
    secret_key = 'MSIsCFMErDKCwUp142qRq20kHafW9xxx'     # 替换为用户的secret_key
    config = CosConfig(Region='ap-chengdu', SecretId=secret_id, SecretKey=secret_key, Token='')  
    client = CosS3Client(config)
    bucket = 'tx-lyc-cos-1256385300'
    objList = client.list_objects(Bucket=bucket, Prefix='糗事百科笑话/joke')
    files = objList['Contents']
    
    #将这些文件中的笑话内容分别读出来,并写入名为“腾讯云上的笑话.txt”文件中
    fo = open('腾讯云上的笑话.txt',  'wb')
    fileCount = len(files)
    jokeInfo = '笑话总数:' + str(fileCount) 
    fo.write(jokeInfo.encode('utf-8', 'ignore'))
    
    for idx in range(fileCount):
        file = files[idx]
        fileName = '\n\n===' + file['Key'] + '===\n'
        fo.write(fileName.encode('utf-8', 'ignore'))    
        fileBody = client.get_object(Bucket=bucket,  Key=file['Key'])
        fo.write(fileBody['Body'].get_raw_stream().read())
        
    fo.close()
    print('读取腾讯云上的笑话结束,总数:' + str(fileCount))
    ###结束 读取腾讯云中的笑话###

    附录3:测试笑话1文件追加最新的笑话(即存储新旧2个笑话),笑话2文件替换成新的笑话,其他文件保持不变。用于测试增量同步的情况。

    #!/usr/bin/python3
    #-*- coding: utf-8 -*-
    
    import sys
    
    #网络爬虫所需的插件
    import urllib.request
    import re
    
    #腾讯云对象存储所需的插件
    from qcloud_cos import CosConfig
    from qcloud_cos import CosS3Client
    
    ###开始从糗事百科完整上爬取笑话内容###
    #浏览器伪装池,将爬虫伪装成浏览器,避免被网站屏蔽
    headers=("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 Safari/537.36 SE 2.X MetaSr 1.0")
    opener = urllib.request.build_opener()
    opener.addheaders = [headers]
    urllib.request.install_opener(opener)
    
    #获取糗事百科首页中的第1个和第2个笑话
    webUrl = "http://www.qiushibaike.com/8hr/page/1"
    webContent=urllib.request.urlopen(webUrl).read().decode("utf-8", "ignore")
    matchPat = '<div class="content">.*?<span>(.*?)</span>'
    jokes = re.compile(matchPat, re.S).findall(webContent)
    joke1 =  re.sub(r'\n', "", str(jokes[0]))  #删除换行符
    joke1 =  re.sub(r'<br/>', "", joke1)  #删除多余标签
    joke2 =  re.sub(r'\n', "", str(jokes[1]))  #删除换行符
    joke2 =  re.sub(r'<br/>', "", joke2)  #删除多余标签
    ###结束获取笑话###
    
    ###开始将笑话全部存放到腾讯云对象存储中###
    secret_id = 'AKIDwgAPOAcwwf7OOBpz1nJYdU6SaT7Xxxxx'     # 替换为用户的secret_id
    secret_key = 'MSIsCFMErDKCwUp142qRq20kHafWxxxx'     # 替换为用户的secret_key
    region = 'ap-chengdu'    # 替换为用户的region
    token = None               # 使用临时秘钥需要传入Token,默认为空,可不填
    config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token)  # 获取配置对象
    client = CosS3Client(config)
    bucket = 'tx-lyc-cos-1256385300'
    
    #下载第一个笑话的内容到joke_1.txt中
    fp = open('joke_1.txt', "wb")
    jokeBody = client.get_object(Bucket=bucket,  Key='糗事百科笑话/joke_1.txt')
    fp.write(jokeBody['Body'].get_raw_stream().read())
    print("下载旧的笑话")
    
    #将新爬取的笑话1,追加到joke_1.txt中
    sepString = '\n====joke_1.txt中的新笑话如下====\n'
    fp.write(sepString.encode('utf-8', 'ignore'))
    fp.write(joke1.encode('utf-8', 'ignore'))
    fp.close()
    rsp = client.put_object_from_local_file(Bucket='tx-lyc-cos-1256385300', LocalFilePath='joke_1.txt', Key='糗事百科笑话/joke_1.txt' )
    print("写入新的笑话1")
    
    #将新爬取的笑话2,直接覆盖腾讯云对象存储中的joke_2.txt中
    rsp = client.put_object(Bucket='tx-lyc-cos-1256385300', Body=joke2,Key='糗事百科笑话/joke_2.txt' )
    print("写入新笑话2")
    ###结束将笑话全部存放到腾讯云对象存储中###

     

    展开全文
  • 华为云对象存储服务-图片处理特性指南.pdf
  • 通过使用Java+SDK管理华为云对象存储OBS,了解对象存储的基本原理和操作,熟悉SDK的使用方法,为后续需要开发复杂功能提供入门准备。 准备动作 1、电脑上安装Java开发环境+Eclipse,可参考网上的教程: Java安装...

    实验目的

    通过使用Java+SDK管理华为云对象存储OBS,了解对象存储的基本原理和操作,熟悉SDK的使用方法,为后续需要开发复杂功能提供入门准备。

    准备动作

    1、电脑上安装Java开发环境+Eclipse,可参考网上的教程:
    Java安装教程:http://www.runoob.com/java/java-environment-setup.html#win-install
    Eclipse+汉化教程:https://blog.csdn.net/weixin_41848531/article/details/81736414

    2、下载华为云OBS SDK(https://developer.huaweicloud.com/sdk?OBS),笔者编辑本文时,最新版本是OBS Java SDK 3.0.0 ,SDK安装过程如下:
    a.下载OBS Java SDK开发包。
    b. 在Eclipse中创建一个Java工程
    b. 将解压后的文件:esdk-obs-java-<versionId>.jar 以及third_party文件夹下所有的JAR包拷贝到您的项目目录中。
    c. 在Eclipse中选择您的工程,右击选择 Properties > Java Build Path > Add JARs。

    3、下载OBS的访问密钥key文件。
    a. 登陆华为云网站(www.huaweicloud.com),进入OBS控制台,下载访问密钥。

    密钥key是一个xxx.csv的表格文件,其中Access Key Id对应OBS API中的ak,Secret Access Key对应OBS API中的sk。

    密钥key的作用:
    通过网站访问对象存储OBS,需要先通过账号密码登陆网站。通过代码访问OBS,如果也需要输入账号密码,就会使得的代码变复杂。因此密钥key可以认为是经过加密的账号和密码,代码中可直接使用。 密钥key文件只在生成的时候提供下载,因此下载后需妥善保存。

    4、打开JDK包中的开发指南《对象存储Java SDK开发指南.doc》内含丰富的说明。

    操作步骤

    1、在eclipse工程中左侧工具栏中找到自动生成的xxx.java,编写一个java类,输出欢迎语句。点击eclispe工具栏上的 调试或运行按钮,在结果中可看到欢迎语句。

    package main;
    
    import java.io.*;
    import java.io.IOException;
    
    public class main {
    	
    	public static void main(String[] args) 
    	{
    		System.out.println("welcome to china!!!");	
    	}			
    }

    2、创建一个OBS客户端。电脑是访问OBS的客户端,华为云的OBS是服务器。
    2.1 公有云的数据中心是分区域的,每个OBS访问地址都是通过“后缀endpoint”来指定数据是存放在哪个区域的数据中心的。
    “后缀endpoint”的查询地址:https://developer.huaweicloud.com/endpoint

    2.2 创建一个OBS客户端
    新增导入OBS相关库文件,并在main函数中添加OBS客户端的打开和关闭操作。

    import com.obs.services.ObsClient;
    import com.obs.services.exception.ObsException;
    import com.obs.services.model.*;
    
    
    String endPoint = "https://yourdomainname"; 
    String ak = "*** Provide your Access Key ***"; 
    String sk = "*** Provide your Secret Key ***"; 
    // 创建ObsClient实例 
    ObsClient obsClient = new ObsClient(ak, sk, endPoint); 
      
    // 关闭obsClient 
    obsClient.close();

    3.3 参考《对象存储服务Java SDK开发指南.doc》分别编辑创建桶、上传对象和查看所有对象,具体代码参考后续完整代码。

    3.4 点击eclipse的调试或运行按钮,在控制台中显示创建桶成功,显示所有对象成功。
    控制台中提示日志插件和性能统计错误,不影响功能,可忽略不计。

    3.5 在华为云OBS 对象存储控制台中,可看到新增生成的桶和上传的文件。

    完整代码

    package main;
    
    import java.io.*;
    import java.io.IOException;
    
    import com.obs.services.ObsClient;
    import com.obs.services.exception.ObsException;
    import com.obs.services.model.*;
    
    
    public class main {
    	
    	/* 初始化OBS客户端所需的参数 */
    	private static final String endPoint     = "https://your endpoint";
    	private static final String ak           = "your ak";
    	private static final String sk           = "your sk";
    	private static final String g_bucketName = "hello-obs-demo";
    	private static final String g_bucketLoc  = "cn-south-1";
    
    	public static void main(String[] args) 
    	{
    		System.out.println("welcome to china!!!");
    		
    		/* 创建OBS客户端 */
    		ObsClient obsClient = new ObsClient(ak,sk,endPoint);
    		ObsBucket obsBucket;
    		
    		try 
    		{
    			/* 创建一个桶 */
    			obsBucket = createBucket(obsClient);			
    	
    			/* 从本地笔记本上传文件到桶里面 */
    			uploadFile(obsClient, obsBucket);
    						
    			/* 列举对象(文件)的信息 */
    			listFile(obsClient,obsBucket);
    			
    			/* 关闭客户端 */
    			
    		}
    		catch (ObsException e)
    		{
    			System.out.println("main 函数出现错误!!!");
    		}
    		
    		/* 关闭obs客户端  */
    		closeObsClient(obsClient);				
    	}
    	
    	
    	/* 创建一个桶 */
    	private static ObsBucket createBucket(ObsClient obsClient) throws ObsException
    	{
    		ObsBucket obsBucket = new ObsBucket(g_bucketName,g_bucketLoc);
            obsClient.createBucket(obsBucket);
            System.out.println("Create bucket:" + g_bucketName + " successfully!");	
            return obsBucket;
    	}
    	
    	/* 创建一个对象(文件) */
    	private static void uploadFile(ObsClient obsClient, ObsBucket obsBucket) throws ObsException
    	{
    		File newfile = new File("C:\\Users\\xiaoniu\\Desktop\\temp\\hello.txt");
    		obsClient.putObject(obsBucket.getBucketName(), "folder/", newfile);
    		obsClient.putObject(obsBucket.getBucketName(), "hello1", newfile);
    		obsClient.putObject(obsBucket.getBucketName(), "hello2", newfile);
    	}
    	
    	/* 列举对象(文件)的信息 */
    	private static void listFile(ObsClient obsClient, ObsBucket obsBucket) throws ObsException
    	{
    		System.out.println("开始测试桶里面的对象信息");
    		ObjectListing objList = obsClient.listObjects(obsBucket.getBucketName());
    		for (ObsObject obj : objList.getObjects())
    		{
    			System.out.println("--:"+obj.getObjectKey()+" (size=" + obj.getMetadata().getContentLength()+")");			
    		}
    	}
    	
    	/* 关闭客户端 */
    	private static void closeObsClient(ObsClient obsClient) 
    	{		
    			try
    			{
    				obsClient.close();
    			}
    			catch (IOException e)
    			{
    				System.out.println("close obs client error.");
    			}	
    			
    	}
    		
    }
    
    
    

     

    展开全文
  • OBS即对象存储服务(Object Storage Service),是一个基于对象的海量存储服务,为客户提供海量、安全、高可靠、低成本的数据存储能力,包括:创建、修改、删除桶,上传、下载、删除对象等。 OBS系统和单个桶都没有...

    一、OBS是什么

    OBS即对象存储服务(Object Storage Service),是一个基于对象的海量存储服务,为客户提供海量、安全、高可靠、低成本的数据存储能力,包括:创建、修改、删除桶,上传、下载、删除对象等。

    OBS系统和单个桶都没有总数据容量和对象/文件数量的限制,为用户提供了超大存储容量的能力,适合存放任意类型的文件,适合普通用户、网站、企业和开发者使用。由于OBS是一项面向Internet访问的服务,提供了基于HTTP/HTTPS协议的Web服务接口,用户可以随时随地连接到Internet的电脑上,通过OBS管理控制台或客户端访问和管理存储在OBS中的数据。此外,OBS支持SDK和OBS API接口,可使用户方便管理自己存储在OBS上的数据,以及开发多种类型的上层业务应用。

    OBS还提供图片处理特性(Image Processing),为用户提供稳定、安全、高效、易用、低成本的图片处理服务,包括:图片剪切、图片缩放、图片水印、格式转换等。

    云服务实现了在多区域部署基础设施,具备高度的可扩展性和可靠性,用户可根据自身需要指定区域使用OBS,由此获得更快的访问速度和实惠的***。

    二、为什么要用OBS

    对象存储可以简单理解为用来存储图片、音频、视频等非结构化数据的数据池。相对于主机服务器,具有读写速度快,利于分享的特点。那为什么现在越来越多的企业、开发者选用对象存储服务呢?简单罗列了五个点:

    1、网站数据动静分离,大幅提升网页性能

    一般情况下,我们都是建议使用主机服务器和对象存储分工合作的方式来存储网站数据。主机服务器主要负责存储网站的动态数据,对象存储则用来存储网站的静态文件。从而实现网站的动静分离,当用户访问一个网站时,分别从主机服务器和对象存储的服务器同步读取数据,可以大幅的提升网页性能。

    2、单独的文件管理界面,管理网站文件和本地电脑一样方便

    无论是华为云、腾讯云、阿里云、七牛云,对象存储都有单独的管理控制台,华为云和腾讯云还有专门的电脑客户端。你不必打开网站,就可以像使用百度云盘一样使用对象存储来管理你的网站文件,除了上传、下载、预览等常用功能,还可以直接在对象存储上进行图片处理/媒体转码/数据分析等。

    3、本质是”内置大容量硬盘的分布式服务器“,同一个文件支持跨域共享

    对象存储的本质是“内置大容量硬盘的分布式服务器”,对象存储有自己的CPU、内存、网络和磁盘系统,具备一定的智能,同一个对象存储数据池可以新建不同的存储桶(bucket),分别用来存储不同网站的数据,彼此互不干扰。而且同一个文件可以引用到不同的网站,可以有效的减少数据冗余。

    4、储存节点多,支持跨地域实时同步,实现异地容灾

    假设你的图片等数据存储在你自己的服务器上,只能通过定期数据备份的方式保护你的数据。数据量大的话,每次备份都需要大量的时间和占用大量的磁盘空间,管理起来还不方便。

    如果你的数据放置在对象存储的数据池了,并与网站关联。那么静态文件的备份就可以交给对象存储。你只需要对网站少量的动态文件进行备份。省时省力。

    比如我使用对象存储,我在离我最近的节点【深圳】来存储网站的图片等静态文件。但是考虑到极端情况,比如深圳节点由于突然停电,可能导致数据全部丢失。但如果之前我选择了【杭州】作为第二个存储节点,而且设置【深圳】节点的数据实时增量同步到【杭州】节点。那么就算深圳节点的数据丢失了,但是我在杭州的数据还是可以使用。等到恢复供电,我再把数据从杭州节点同步回深圳节点就可以了。这就是我们说的异地容灾。

    5、成本低,资源弹性伸缩,按需付费

    现在华为云对象存储(简称OBS)40G容量一年的价格大概是9块钱,腾讯云对象存储(简称cos)也有免费的50G容量,加上10G的免费下行流量。已经可以满足大部分个人站点的使用需求。不像服务器的流量是固定的,包含在服务器的费用里面了。无论你用或不用,都是这么多。对象存储可以是根据你的实际使用量进行计费。

    image.png

    三、华为云OBS的优势

    这个就不自由发挥,直接看华为云官网对于OBS的优势介绍吧:

    image.png

    四、如何使用华为云OBS

    1、在使用华为云OBS之前,简单说一下接入华为云OBS的几种方式:

    比较常用的就是管理控制台和OBS Browser

    首先是管理控制台,在管理控制台可以进行桶管理,点击具体的桶可以进入详细管理界面

    image.png

    包括数据统计、对象管理、权限管理、配置管理、域名管理、跨区域复制以及图片处理等功能,界面设计简单明了,操作相对也比较方便。

    image.png

    然后是OBS Browser,这是个客户端桌面工具,打开登录后可以如百度网盘般进行文件的操作:

    image.png

    2、如何使用这些工具来进行文件管理

    这里我就以OBS Browser为例展开说明:

    首先,我们需要登录华为云控制台,在“我的凭证”中新增访问密钥,然后下载到本地(访问密钥是一个名为“credentials.csv”的文件)

    我们在登录OBS Browser的时候需要使用到里面的AK(Access Key)和SK(Secret Key)

    image.png

    登录后就进入到主界面了:

    image.png

    在这里我们可以添加桶:

    image.png

    可以在桶中进行文件夹管理和文件管理:

    image.png

    OBS支持多文件/文件夹同时上传,一次最多可以上传500个文件和文件夹,对于批量上传来说是非常有用的一个功能。

    对于单个对象,我们可以方便的对其存储类别、ACL、对象策略等进行配置管理,同时还能够复制访问链接,进行移动、复制、删除、下载等功能:

    image.png

    3、如何访问对象

    简单来说我们可以用rest接口来请求访问对象

    请求URL的构成示例: <schema>://<bucketname>.<endpoint>/<objectname>?querystrings

    schema:http或https

    bucketname:桶名

    endpoint:桶所在区域的区域域名

    objectname:对象名

    querystrings:查询参数

    例如,如果您有一个位于中国华北区1的名为test-bucket的桶,期望访问桶中一个名为test-object对象的acl,华北区1的EndPoint地址是obs.cn-north-1.myhuaweicloud.com,则正确的访问URL为 https://test-bucket.obs.cn-north-1.myhuaweicloud.com/test-object?acl

    一般这样请求会提示认证失败:

    image.png

    这个意思是说我们需要在请求中加入签名进行认证,否则无权限进行访问,那么添加签名有以下几种方式:

    暂时用URL形式来访问,加上签名后如下:(这个URL可以在OBS Browser中点分享进行获取)

    image.png

    image.png

    五、华为云OBS  vs  腾讯云COS

    好了,大概了解了华为云的OBS使用之后,我们来对比一下腾讯云的COS

    这两个云的对象存储服务我都有使用过,由于使用不是特别深入,所以对比过程中也参考了很多的资料,并且对于各自官网相关的介绍也进行了对比。

    1、工具对比

    上表中可以看到,华为云对象存储在性能方面有较大的领先优势,这个得益于华为云对象存储软硬件及网络方面的核心优势。

    1.硬件

    首先是硬件上的,就在2018年3月份,华为云就表示,其OBS对象存储服务已经摒弃10GE网络,全面部署25GE网络。

    25GE即25Gbps(也就是3.125GB/s),是公认的下一代数据中心互联解决方案,得益于华为在网络设备的领导者地位,华为云是国内第一家全面进入25GE时代的云服务商,先进的以太网标准和全自研的设备给予了华为云远超对手的上下行宽带速度,这也是华为云在大文件宽带测试中网速一骑绝尘的根本原因。

    除此之外,华为云还使用了大容量的NVMe标准SSD硬盘,电脑DIYer应该对它非常熟悉,NVMe标准SSD用超高的读写速度保证了文件读写的高性能,规避了机械硬盘频繁寻道的问题,而且通过高速SSD的引入,可以大幅提升云存储系统的整体性能表现。

    2.底层优化的软件

    在硬盘数以万计的大集群数据中心中,硬盘故障是常态,所以很多时候故障硬盘的数据恢复就会成为影响IO请求速度的重要原因之一。

    为此华为提出了lrc算法,lrc是一种先进的数据恢复算法。一般来讲,如果一份数据分散放在4、5个机房当中,当某个机房中的硬盘故障时,传统的恢复算法会请求读取其它机房中的数据以恢复故障硬盘中的文件。

    但华为的lrc可以把这个读取范围限制在本机房中,换句话说,系统只需要读取就近的数据即可恢复故障硬盘,而无需再跨机房读取数据占用宝贵的宽带资源。

    除了改良的lrc算法外,华为还对底层软件做了诸多优化,例如使用了Append only接口来延长磁盘使用寿命;提供了新的增强实例c3ne,保证客户端不成为瓶颈;对IP路径端到端做了内存免拷贝处理,大大减少了CPU负担,提高了带宽速度等等等等。

    凭借着先进硬件配备与软件优化,华为云OBS才取得了如此傲人的成绩。

    附:腾讯云COS客户端登录页和管理页

    image.png    image.png

     

    来源:华为云社区  作者:真爱无敌

    展开全文
  • 华为大数据云对象存储服务

    千次阅读 2019-06-12 20:00:00
    毫无疑问,是数据中心的未来,随着数据中心以及物联网和移动设备的快速发展,我们已经来到一个信息爆炸的时代,据IDC报告,当下数据以每年50%左右的速度快速增长,截至2020年全球数据规模将达44ZB。 那么,问题...
  • SpringBoot 集成华为云对象存储服务OBS1. 登录华为云获取所需资料1. Access Key Id、Secret Access Key2. 桶名称、终端节点访问Endpoint、访问域名2. 导入依赖3. 创建工具类 对象存储服务OBS 1. 登录华为云获取所需...
  • 华为云对象存储OBS架构 华为云对象存储服务(Object Storage Service ,OBS)是一个基于对象的海量存储服务,为客户提供海量、安全、高可靠、低成本的数据存储能力。 OBS的基本组成是桶和对象,其中对象是OBS中数据...
  • 本文来自客户使用CommVault备份软件备份到华为云对象存储的实践。使用CommVault备份软件的可以参考。备份到华为云的优势:公有云可以天生充当客户的异地备份中心,省去客户自建异地备份中心的成本。华为OBS由于兼容...
  • 目的:方便某些不能使用... 代码: #pragma once #include #include #include #include #include //Access Key ID #define OBS_AK "xxx" //Secret Access Key #define OBS_SK "xxx" //OBS存储地址 #define OBS_URL ...
  • 摘要:作为公有的数据底座,大量的应用场景产生的数据都会存储到OBS对象存储服务中,如直播、电商、大数据可视化、机器学习、物联网等。其灵活的权限配置功能,能够解决如共享少部分数据或者数据全部托出等实际...
  • 对象存储服务OBS 获取终端节点(Endpoint) 我的是: https://obs.cn-north-4.myhuaweicloud.com maven中添加依赖 <!--华为云OBS对象存储管理--> <dependency> <groupId>...
  • 一般像阿里云、腾讯云、百度云、华为云都会有这样的存储。 像七牛云、又拍云则会给你些免费的存储空间,但随着流量的增多还是会收取一定量的费用,一般像存写博客上的图片还是绰绰有余的,所以还是值得一试的。 ...
  • 用于展示华为云obs区域存储及文件批量上传,解决404静态页面访问自动生成,微信检测云域名接口(接口已写出,检测api需自行解决)
  • 阿里 500GB 136这是套餐价。阿里的国外服务器多又好。 七牛云 500GB 133.02 100GB低频存储。50GB加速。100G外网流出 200W get 100W put/delete 注。请求数计费非常低,可以忽略。主要是存储空间计费。胜在...
  • 首先注册华为云帐号,然后开通对象存储服务,让人不爽的是,开通之前你至少要往你的帐户预存100元。。。 然后,新建存储空间 对于存储空间的权限设置在这里 然后可以在存储空间下面新建文件夹或者直接...
  • java操作华为OBS对象存储服务器

    千次阅读 2019-11-19 19:20:39
    华为OBS对象存储 一.SDK概述 对象存储服务软件开发工具包(OBS SDK,Object Storage Service Software Development Kit)是对OBS服务提供的REST API...相关开发包请从华为云OBS开发工具包(SDK)(https://develo...
  • 简介:将项目上所有的 图片、pdf文件、视频等上传到华为云 并获取到华为云的文件地址进行访问 准备工作 composer准备 1.composer.json里添加需要的require 并 composer update 2.如果要新增命名空间Obs 需要在 ...
  • 阿里的产品种类繁多,今天让我们一起来了解下对象存储(Object Storage Service,简称OSS)吧! 什么是对象存储呢? 简单来说,对象存储OSS是阿里提供的海量、安全和高可靠的存储服务。存储容量和处理...
  • 为了减轻服务器的压力,决定用阿里对象存储服务,以下是我对此次应用的总结 对象存储迁移工具的应用(本文以单机部署为例) 工具下载地址:...
  • 对象存储服务稍复杂,可以通过obsfs并行文件系统工具挂载到linux系统,但如需挂载windows系统需要额外部署存储网关服务,本文不详细介绍 使用方法 购买弹性文件服务,创建文件系统. 选择配置 需要选择SFS只...
  • 华为云对象储存服务,使用JAVASDK对象上传服务,需要传输本地文件绝对路径绝对路径才可以上传,但是,现在浏览器是不支持获取本地文件绝对路径得, 所以我现在传输文件得时候,先上传到我得服务器,然后在转存到...
  • 阿里云对象存储OSS具有高可靠性,存储空间分为同城冗余ZRS和本地冗余LRS两种,阿里云百科来详细说下阿里云对象存储OSS冗余类型及同城冗余ZRS和本地冗余LRS的价格: 阿里云对象存储OSS 对象存储OSS同城冗余和本地...
  • 由于我的服务器是腾讯的,我这里的对象存储是腾讯的COS。 1,首先你要有腾讯的账号,登陆之后在控制台,找到对象存储服务,进去之后找到下面的入口,新建存储桶 2,然后我们再生成秘钥 我们先找到访问管理菜单...
  • 华为云官网 直接从官网找到并选择合适的套餐购买就行。 二:yml配置 #华为云obs配置 obs: end-point: https://obs.cn-north-4.myhuaweicloud.com #每个区域一个,这里是北京四 bucket-name: tong-name #桶名,可以...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,563
精华内容 2,625
关键字:

华为云对象存储