5月1号开始算开心网谷歌账号被停用停用9天的话还能恢复谷歌账号被停用吗


声明文中大部分的观点来自于文獻[1]中的描述但也夹杂了部分本人自己的理解,所以不能保证本文的正确性真想深入了解Chubby还是好好读原版论文吧:)

前言MapReduce 很多人已经知道叻,但关于Chubyy似乎熟悉它的就非常有限这倒是不奇怪,因为MapReduce是一个针对开发人员的 ProgrammingModel自然会有很多人去学习它,而Chubby更多的是一种为了实现MapReduce戓者Bigtable而构建的内部的 工具对于开发人员来说基本上是透明的。文献[1]我反复读了至少有两三天但感觉也只是一个囫囵吞枣的结果,里面囿很多工程实现上的细节如果不是自己 亲自去设计或者实现,很难体会到其中的道理和奥妙但是,对于这样一个分布式service的研究还是讓我对一个分布式系统的结构和设计思想有了更加直 观的感觉。

定一个Value于是每个Process都提出了一个Value,consensus就是指只有其中的一个Value能够被选中作为朂后确定的值并且 当这个值被选出来以后,所有的Process都需要被通知到


表面上看,这个问题很容易解决比如设置一个server,所有的process都 向这个server提交一个Value这个server可以通过一个简单的规则来挑选出一个Value(例如最先到达的Value被选中),然后由这个 server通知所有的Process但是在分布式系统中,就会囿各种的问题发生例如,这个server崩溃了怎么办所以我们可能需要有几台 server共同决定。还有Process提交Value的时间都不一样,网络传输过程中由于延遲这些Value到达server的顺序也都没有保证
为 了解决这个问题,有很多人提出了各种各样的Protocol这些Protocol可以看做是一组需要遵循的规则,按照这些规则这些Process就能 够选举出一个唯一的Value。其中最有名的一个Protocol就是Paxos算法。(八卦一下Paxos的提出者叫做Lamport,有很多分布 式的算法都是他提出的他还昰Latex的作者,大牛啊...)想更加了解Paxos算法可以参考文献[2],很漂亮的一篇文章

那么 这些和Chubby有什么关系呢?其实Chubby就是为了这个问题而构建出来嘚只是它并不是一个Protocol或者是一个算法,而是google精 心设计的一个service这个service不仅能够解决一致性问题,还有其它的一些很实用的好处会在下文慢慢介绍。

server上创建同一个文件当然,最终只有一个server能够获准创建这个文件这个server就成为了master,它会在这个文件中写入自己 的地址这样其咜的server通过读取这个文件就能知道被选出的master的地址。


Chubby是什么
从 上面的这个实例可以看出Chubby首先是一个分布式的文件系统。Chubby能够提供机制使得client鈳以在Chubby service上创建文件和执行一些文件的基本操作说它是分布式的文件系统,是因为一个Chubby cell是一个分布式的系统一般包含了5台机器,整个文件系统是部署在这5台机器上的


但是,从更高一点的语义层面上Chubby是一个 lock service,一个针对松耦合的分布式系统的lock service所谓lock service,就是这个service能够提供开發人员经常用的“锁”“解锁”功能。通过Chubby一个分布式系统中的上千个client都能够 对于某项资源进行“加锁”,“解锁”
那么,Chubby是怎样實现这样的“锁”功能的就是通过文件。Chubby中的“锁”就是文件在上例 中,创建文件其实就是进行“加锁”操作创建文件成功的那个server其实就是抢占到了“锁”。用户通过打开、关闭和读取文件获取共享锁或者独占锁; 并且通过通信机制,向用户发送更新信息

综上所述,Chubby是一个lock service通过这个lock service可以解决分布式中的一致性问题,而这个lock service的实现是一个分布式的文件系统

可能会有人问,为什么不是直接实现一個类似于Paxos算法这样的Protocol来解决一致性问题而是要通过一个lock service来解决?文献[1]中提到用lock service这种方式有几个好处:


1. 大部分开发人员在开始开发service的时候都不会考虑到这种一致性的问题,所以一开始都不会使用consensus protocol只有当service慢慢成熟以后,才开始认真对待这个问题采用lock service可以使得在保持原有嘚程序架构和通信机制的情况下,通过添加简单的语句就可以解决一致性问题;
2. 正如上文实例中所展现很多时候并不仅仅是选举出一个master,还需要将这个master的地址告诉其它人或者保存某个信息这种时候,使用 Chubby中的文件不仅仅是提供锁功能,还能在文件中记录下有用的信息(比如master的地址)所以,很多的开发人员通过使用Chubby来保存 metadata和configuration
3. 一个基于锁的开发接口更容易被开发人员所熟悉。并不是所有的开发人员都叻解consensus protocol的但大部分人应该都用过锁。
可以看出之所以用lock service这样的形式,是因为Chubby不仅仅想解决一致性问题还可以提供更多更有用的功能。倳实上Google有很多开发人员将Chubby当做name service使用,效果非常好

关于lock service,还有两个名词需要提及 lock,即如果某个文件被锁住以后如果有其他的人直接訪问它,那么这种行为是会产生exception的
service的负载要小很多,因为加锁解锁并不会太频繁其它的差别详见文献[1]。

上图就是Chubby的系统架构
由于整個Chubby系统比较复杂,且细节很多我个人又将整个系统分为了三个部分:

每个master都具有一定的期限,成为master lease在这个期限中,副本们不会再选举┅个其它的master
为 了安全性和容错的考虑,所有的replicas(包括master)都维护的同一个DB的拷贝但是,只有master能够接受client提交的操作对 DB进行读和写而其它嘚replicas只是和master进行通信来update它们各自的DB。所以一旦一个master被选举出来后,所有的 client端都之和master进行通信(如图所示)如果是读操作,那么master一台机器僦搞定了如果是写操作,master会通知其它的 replicas进行update这样的话,一旦master意外停机那么其它的replicas也能够很快的选举出另外一个master。

再说说Chubby的文件系统


湔 文说过Chubby的底层实现其实就是一个分布式的文件系统。这个文件系统的接口是类似于Unix系统的例如,对于文件名“/ls/foo /wombat/pouch”ls表示的是“lock service”,foo表示的是某个Chubby cell的名字wombat/pouch则是这个cell上的某个文件目录或者文件名。如果一个client端使用Chubby library来创建这样一个文件名那么这样一个文件就会在Chubby cell上被创建。
Chubby的文件系统由于它的特殊用途做了很多 的简化例如它不支持文件的转移,不记录文件最后访问时间等等整个文件系统只包含有文件和目录,统一称为“Node”文件系统采用Berkeley DB来保存Node的信息,主要是一种map的关系Key就是Node的名字,Value就是Node的内容
还有一点需要提及的 是,Chubby cell和client之间鼡了event形式的通知机制client在创建了文件之后会得到一个handle,并且还可以订阅一系列的event例 如文件内容修改的event。这样的话一旦client相关的文件内容被修改了,那么cell会通过机制发送一个event来告诉client该文件被 修改了
这里大致包含两部分的内容:cache的同步机制和KeepAlive握手协议。
为 了降低client和cell之间通信嘚压力和频率client在本地会保存一个和自己相关的Chubby文件的cache。例如如果client通过 Chubby library在cell上创建了一个文件那么在client本地,也会有一个相同的文件在cache中创建这个cache中的文件的内容和cell 上文件的内容是一样的。这样的话client如果想访问这个文件,就可以直接访问本地的cache而不通过网络去访问cell
cache有两個状态,有效和无效当 有一个client要改变某个File的时候,整个修改会被master block然后master会发送无效标志给所有cache了这个数据的client(它维护了这么一个表),當其它client端收到这个无效标志 需要注意的是master并不是发送update给client而是发送无效标志给client。这是因为如果发送update给client那么每 一次数据的修改都需要发送┅大堆的update,而发送无效标示的话对一个数据的很多次修改只需要发送一个无效标示,这样大大降低了通信量

至于KeepAlive协议,则是为了保证client囷master随时都保持着联系client和master每隔一段时间就会KeepAlive 一次,这样的话如果master意外停机,client可以很快的知道这个消息然后迅速的转移到新的master上。并且这种转移对于client

总结 其实在我的这篇文章中,还有一个很大的主题没有提及那就是Chubby的容错机制。基本上容错这个思想贯穿了文献[1]的始終,也正是因此我很难将 它单独提取出来解释,因为它散落在了Chubby系统设计的所有角落我个人感觉,容错是一个分布式系统设计的核心思想在设计的时候要求考虑到所有可能 会发生的错误,不仅仅包括了硬件的错误网络的故障,还包括了开发人员可能出现的错误我想,这是我读这篇文章[1]最大的收获

}

原标题:Google 停用 Nexus 品牌:一个忍辱负重嘚亲儿子之死

毫无疑问即将到来的 iPhone 7 当然是今年下半年最令人关注的手机,没有之一相比之下,虽然 Google 也很可能在之后的几个月中发布由 HTC 玳工的新一代 Android 手机但它的关注度就没有 iPhone 那么高了。

然而今天一个大新闻让我们不得不把目光暂时从 iPhone 7 上移开,转向 Google因为根据权威媒体 Android Central 嘚消息, Google 将会在今年的新手机上放弃已经使用将近七年的「Nexus」品牌转而选择另一个新的品牌,而新品牌将会更加靠近「Google」这个母品牌

洎 2009 年 12 月第一代 Nexus 手机发布以来,它走过了将近七年的时间但,很遗憾「七」这个数字似乎对 Nexus 不是一个幸运数。在「七年之痒」遇上了将會在「7 号」发布的「iPhone 7」我们终于要对它说再见了。

故事的开启:告诉你 Android 该是什么样的

2010 年 1 月 5 日Google 在山景城总部正式发布了其首款自有品牌掱机 Nexus One,这也是「Nexus」这个品牌第一次登上历史舞台该机是全世界第一款采用 Android

}

我要回帖

更多关于 谷歌账号被停用 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信