关于Google Cloud Storage

Google Cloud Storage有益于大文件的存储与服务(serve)。此外,Cloud Storage提供了对访问控制列表(ACLs)的使用,提供了对上传中断的恢复功能以及其他的特性。Google Cloud Storage client库对应用自动使用恢复功能,提供了一种健壮的导(stream)数据到Cloud Storage的方法。

关于client library

Google Cloud Storage client库使你的应用可以从Cloud Storage的buckets读文件或向其写文件。这个库支持对Cloud Storage的大量数据的读写处理,能够进行内部错误处理和重试,所以你不需要自己写代码来完成这种事情。而且,它使用预读取提供了读缓冲,所以你的应用可以变得更有效。当对Cloud Storage进行读写时,client库使用HTTPS,所以你的数据在传输过程中是加密的。

Google Cloud Storage client库包含以下的功能:

● 一个接口对象(GcsService),支持以下的Cloud Storage访问:

1.将一列存在的Cloud Storage对象组成一个新对象(GcsService.compose)。

2.复制一个存在的Cloud Storage对象(GcsService.copy)

3.创建一个新的或复写一个几经存在的Cloud Storage对象(GcsService.createOrReplace)

4.删除一个Cloud Storage对象(GcsService.delete)

5.为Cloud Storage对象获取元数据(GcsService.getMetaData)

6.列出一个指定的bucket的内容(GcsService.list)

7.打开一个缓冲读取通道从一个大的Cloud Storage对象中读数据[streaming in data](GcsService.openPrefetchingReadChannel)

8.打开一个无缓冲读取通道从一个小的Cloud Storage对象中读数据[streaming in data](GcsService.openReadChannel)

● 一个可写字节通道(GcsOutputChannel),缓冲或无缓冲地写到Cloud Storage.

下载client库

对于下载说明和分发内容,参见 downloads

使用client库

从下面的选项中选择一个:

● 使用默认的Cloud Storage bucket:一个有免费配额的已配置的bucket

● 如果你不想使用默认的bucket,你首先需要激活Cloud Storage。

可选的访问Cloud Storage的方法

Google Cloud Storage client库提供了一个与GAE紧密集成的读写Cloud Storage的方法。使得GAE应用能够在Cloud Storage中创建对象和提供服务。

除了使用Google Cloud Storage client库以外还有其他的方法可以从GAE访问Cloud Storage。你也可以使用下面方法中的任一个:

● Blobstore API

● Cloud Storage REST API

● Cloud Storage Browser

● gsutil Tool

Blobstore API

你可以使用Blobstore API来上传对象到Cloud Storage或从Cloud Storage提供对象[serve objects]。你需要使用BlobstoreService.createGsBlobKey()方法创建一个blob key代表Cloud Storage 对象。这个方法对于从网页上传文件是有用的。当Blobstore API和Images API一起使用时,你可以拥有很强大的方法来提供图像[serve images],因为你可以直接从Cloud Storage中提供图像,绕开了App Engine应用,这可以节省费用[saves on instance hour costs]。

Cloud Storage REST API

你可以使用Cloud Storage REST API读写Cloud Storage。如果你要寻找client库没有提供的某个明确特性的话,REST API将是一个不错的选择。

然而,client库包含了App Engine优化,所以使用REST API可能需要额外的开发时间。注意:App Engine开发服务器支持Cloud Storage Client。它不支持REST API。

Cloud Storage Browser

如果你需要快速上传对象,你可以使用Cloud Storage Browser。

关键的Cloud Storage概念

参见 Cloud Storage documentation查阅完整的概念和技术列表。下面的部分总结了Google Cloud Storage client库的重要概念。

Buckets,objects,ACLs

一个bucket就是可以读写文件的一个存储位置。在使用Cloud Storage client库的时候,你必须总是指定一个bucket。你的项目可以访问多个buckets。client库不支持bucket的创建。你可以通过Cloud Storage browser或gsutil工具手动创建。

访问控制列表(ACLs)控制对buckets以及其中的对象的访问。你的项目和你的App Engine 应用被添加到了ACL,这个ACL允许在激活期间访问bucket。这个允许访问bucket的ACL和潜在的许多管理bucket中对象的ACLs是不同的。因此,你的应用对其激活的bucket拥有读写权限(your app has read and write privileges to the bucket(s) it is activated for),但是它仅仅对在bucket中的由它创建的对象拥有完整的权限。对于其他的应用或个人创建的对象,你的访问权限仅限于对象创建者赋予的部分。

如果一个对象在一个没有显式定义ACL的bucket中被创建的话,它将会使用bucket拥有者分配给bucket的默认的对象ACL。如果bucket的拥有者没有指定默认的对象ACL,那么对象默认就是public-read,这意味着任何被允许访问bucket的人可以读取这个对象。

ACLs以及Google Cloud Storage client库

使用client库的应用不能改变bucket ACL,但是它可以指定一个控制由它创建的对象的ACL。这个可以获得的ACL配置在GcsService.FcsFileOptions object文档的下面做了说明。

修改Cloud Storage 对象

一旦你在bucket中创建了一个对象,它就不能被修改和附加。你必须使用一个包含了你想要变更的内容的同名的新对象来覆盖这个对象。

Cloud Storage和子目录

Cloud Storage client库在创建一个对象时,支持子目录分隔符。但是在Cloud Storage中并没有真正的子目录。一个子目录在Cloud Storage中就是对象文件名的一部分。

比如,你可能认为创建一个对象somewhere/over/the/rainbow.mp3会将文件rainbow.mp3保存在子目录somewhere/over/the/。实际上,对象的名字被设置为了somewhere/over/the/rainbow.mp3。

Retries and exponential backoff

在访问Cloud Storage的时候,万一发生了超时失败,Google Cloud Storage client库会提供一个可配置的机制来自动请求重试。这个机制也提供了exponential backoff来决定最佳处理速度。具体的关于exponential backoff的说明,参见backoff

要改变retries和backoff的默认,请使用 RetryParams类。

在development app server上使用client库

从SDK的版本1.8.1开始,在development server上可以使用client库。它使用本地磁盘提供了Cloud Storage模拟。

价格,配额和限制

在使用Google Cloud Storage client库调用Cloud Storage方面没有宽带费用。然而却有操作和存储费用,以及针对URL fetch配额的调用次数,因为这个库使用URL Fetch服务和Cloud Storage交互。

如果你使用默认的Cloud Storage bucket,你有一个免费的配额。如果你需要更多的配额,你需要让你的应用开始计费,所以你需要为额外的配额付费。

如果你不想使用默认的bucket,你需要激活Cloud Storage( activate Cloud Storage)。如果你选择这样做,那么将没有免费配额并且所有存储在Cloud Storage的数据都要按正常的Cloud Storage数据存储费用付费。Cloud Storage是一个付费使用的服务;你将会被要求按Cloud Storage的价格表付费。

接下来做什么

1.下载client库

2.创建一个App Engine项目并激活Cloud Storage。

3.可选地,如果你有一个使用旧的Cloud Storage API的已有应用,迁移你的应用。

4.查看这个简要的Getting Started指导快速判断对client库的使用。

5.上传和部署你的应用到生产App Engine上。

6.在Cloud Storage上测试应用预期的行为。

Java Client for Google Cloud Storage的更多相关文章

  1. Getting Started(Google Cloud Storage Client Library)

    在运行下面的步骤之前,请确保: 1.你的项目已经激活了Google Cloud Storage和App Engine,包括已经创建了至少一个Cloud Storage bucket. 2.你已经下载了 ...

  2. Downloading the Google Cloud Storage Client Library

    Google Cloud Storage client是一个客户端库,与任何一个生产环境使用的App Engine版本都相互独立.如果你想使用App Engine Development server ...

  3. Activating Google Cloud Storage

    先决条件 你需要下面的内容: 1.一个Google账户,比如来自Gmail.如果你没有,请在Google account signup site注册. 2.一个新的或已经存在的Google Devel ...

  4. google cloud storage products

    https://cloud.google.com/products/storage/ BigTable Cloud Bigtable 是 Google 面向大数据领域的 NoSQL 数据库服务.它也是 ...

  5. 对Google cloud platform 做了点研究

    Google也推出了云计算基础服务, 加上微软Azure,亚马逊AWS, 都齐活了. 下面是研究了一下对其的一个初步了解. 计算: Compute Engine     IaaS平台,提供VM,操作灵 ...

  6. How does java technology relate to cloud computing?

    Java Paas shootout   (@IBM developer) Cloud computing is always a hot topic around IT field today.Ho ...

  7. 使用GCM服务(Google Cloud Messaging)实现Android消息推送

    最近在网上查了关于很多Android消息推送的资料,其中主要有四种方法. 1) 使用GCM服务(Google Cloud Messaging) 2) 使用XMPP协议(Openfire + Spark ...

  8. 使用Google Cloud Platform构建机器学习项目-宠物识别

    宠物识别我们使用到了tensorflow object-detection API  (https://github.com/tensorflow/models/tree/master/researc ...

  9. 通过google cloud API 使用 WaveNet

    Cloud Text-to-Speech 中使用了WaveNet,用于TTS,页面上有Demo.目前是BETA版 使用方法 注册及认证参考:Quickstart: Text-to-Speech 安装g ...

随机推荐

  1. JavaScript DOM编程基础精华03(动态设置,层的操作,性能问题)

    代码是否需要放置到onload中  //如果js代码需要操作页面上的元素,则将该代码放到onload里面.         //因为当页面加载完毕之后页面上才会有相关的元素 //如果js代码中没有操作 ...

  2. 72. Edit Distance

    题目: Given two words word1 and word2, find the minimum number of steps required to convert word1 to w ...

  3. 【原创】Kmeans算法 优缺点分析

    优点: 原理简单(靠近中心点),实现容易(1.2 天),聚类效果中上(依赖K的选择) 缺点: 1. 无法确定K的个数 (根据什么指标确定K) 2. 对离群点敏感 (容易导致中心点偏移) 3. 算法复杂 ...

  4. Ios tab Bar 使用方法

    http://blog.sina.com.cn/s/blog_63578f140100w56m.html UITabBar* tabBar = [[UITabBar alloc] initWithFr ...

  5. tomcat web.xml配置

    关于Tomcat 中 web.xml 文件的配置问题: 1.下面的配置是合法的     <servlet>        <servlet-name>test</serv ...

  6. 1493: [NOI2007]项链工厂

    线段树. 真还就是个线段树.. 除去操作1,2的话,线段树很容易就处理了,问题在于如何处理操作1和2.(这点没想到).. 我们用一个delta维护操作1,如果没有旋转就+k,不然就-k. 每次读入i和 ...

  7. QSettings读写注册表、配置文件

    简述 一般情况下,我们在开发软件过程中,都会缓存一些信息到本地,可以使用轻量级数据库sqlite,也可以操作注册表.读写配置文件. 关于QSettings的使用前面已经介绍过了,比较详细,见" ...

  8. IIS Server is too busy 解决方法(IIS6)

    Server is too busy意思是服务器繁忙,资源不够用 为什么会出现这个问题呢? 因为服务器的配置不同,所能承受的压力不同. 而服务器默认对链接数,线程数等有设置,但这个设置太小,基本不够用 ...

  9. hdu 2204 Eddy's爱好

    // 一个整数N,1<=N<=1000000000000000000(10^18).// 输出在在1到N之间形式如M^K的数的总数// 容斥原理// 枚举k=集合{2,3,5,7,11,1 ...

  10. 【Java集合框架】规则集--Set

    集合: Java主要支持三种: 1.规则集(Set) 用于存储一组不重复的元素 2.线性表(List) 用于存储一个由元素构成的有序集合 3.队列(Queue) 同与数据结构中的队列,存储用先进先出的 ...