Chubby

谷歌技术"三宝"之BigTable(转)

淺唱寂寞╮ 提交于 2020-05-07 19:42:13
谷歌技术"三宝"之BigTable(转) 原文地址: http://blog.csdn.net/opennaive/article/details/7532589 2006年的OSDI有两篇google的论文,分别是BigTable和Chubby。Chubby是一个分布式锁服务,基于Paxos 算法 ;BigTable是一个用于管理结构化数据的分布式存储系统,构建在GFS、Chubby、SSTable等google技术之上。相当多的google应用使用了BigTable,比如Google Earth和Google Analytics,因此它和 GFS 、 MapReduce 并称为谷歌技术"三宝"。 与GFS和MapReduce的论文相比,我觉得BigTable的论文难懂一些。一方面是因为自己对 数据库 不太了解,另一方面又是因为对数据库的理解局限于关系型数据库。尝试用关系型数据模型去理解BigTable就容易"走火入魔"。在这里推荐一篇文章(需要FQ): Understanding HBase and BigTable ,相信这篇文章对理解BigTable/ Hbase 的数据模型有很大帮助。 1 什么是BigTable Bigtable是一个为管理大规模结构化数据而设计的分布式存储系统,可以扩展到PB级数据和上千台服务器。很多google的项目使用Bigtable存储数据

ZooKeeper面试题(2020最新版)

*爱你&永不变心* 提交于 2020-05-07 11:50:13
文章目录 1. ZooKeeper 是什么? 2. ZooKeeper 提供了什么? 3. Zookeeper 文件系统 4. Zookeeper 怎么保证主从节点的状态同步? 5. 四种类型的数据节点 Znode 6. Zookeeper Watcher 机制 -- 数据变更通知 7. 客户端注册 Watcher 实现 8. 服务端处理 Watcher 实现 9. 客户端回调 Watcher 10. ACL 权限控制机制 11. Chroot 特性 12. 会话管理 13. 服务器角色 14. Zookeeper 下 Server 工作状态 15. 数据同步 16. zookeeper 是如何保证事务的顺序一致性的? 17. 分布式集群中为什么会有 Master主节点? 18. zk 节点宕机如何处理? 19. zookeeper 负载均衡和 nginx 负载均衡区别 20. Zookeeper 有哪几种几种部署模式? 21. 集群最少要几台机器,集群规则是怎样的?集群中有 3 台服务器,其中一个节点宕机,这个时候 Zookeeper 还可以使用吗? 22. 集群支持动态添加机器吗? 23. Zookeeper 对节点的 watch 监听通知是永久的吗?为什么不是永久的? 24. Zookeeper 的 java 客户端都有哪些? 25. chubby 是什么,和

2020最新Java工程师面试题-ZooKeeper篇(附答案)

雨燕双飞 提交于 2020-04-22 00:42:16
持续更新内容涵盖:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL、Spring、Spring Boot、Spring Cloud、RabbitMQ、Kafka、 Linux 等技术栈(滴滴滴.会持续更新哦,记得点赞、关注、分享三连击哈). 1. ZooKeeper 面试题? ZooKeeper 是一个开放源码的分布式协调服务,它是集群的管理者,监视着集群 中各个节点的状态根据节点提交的反馈进行下一步合理操作。 最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户。 分布式应用程序可以基于 Zookeeper 实现诸如数据发布/订阅、负载均衡、命名 服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列等功能. Zookeeper 保证了如下分布式一致性特性 : 1、顺序一致性 2、原子性 3、单一视图 4、可靠性 5、实时性(最终一致性) 客户端的读请求可以被集群中的任意一台机器处理, 如果读请求在节点上注册了 监听器,这个监听器也是由所连接的 zookeeper 机器来处理 。 对于写请求,这些 请求会同时发给其他 zookeeper 机器并且达成一致后,请求才会返回成功. 因此, 随着 zookeeper 的集群机器增多,读请求的吞吐会提高但是写请求的吞吐会下降。

2020最新Java工程师面试题-ZooKeeper篇(附答案)

一个人想着一个人 提交于 2020-04-21 03:35:50
持续更新内容涵盖:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL、Spring、Spring Boot、Spring Cloud、RabbitMQ、Kafka、 Linux 等技术栈(滴滴滴.会持续更新哦,记得点赞、关注、分享三连击哈). 1. ZooKeeper 面试题? ZooKeeper 是一个开放源码的分布式协调服务,它是集群的管理者,监视着集群 中各个节点的状态根据节点提交的反馈进行下一步合理操作。 最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户。 分布式应用程序可以基于 Zookeeper 实现诸如数据发布/订阅、负载均衡、命名 服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列等功能. Zookeeper 保证了如下分布式一致性特性 : 1、顺序一致性 2、原子性 3、单一视图 4、可靠性 5、实时性(最终一致性) 客户端的读请求可以被集群中的任意一台机器处理, 如果读请求在节点上注册了 监听器,这个监听器也是由所连接的 zookeeper 机器来处理 。 对于写请求,这些 请求会同时发给其他 zookeeper 机器并且达成一致后,请求才会返回成功. 因此, 随着 zookeeper 的集群机器增多,读请求的吞吐会提高但是写请求的吞吐会下降。

分布式最强算法之Paxos透析

只谈情不闲聊 提交于 2020-04-15 20:06:24
【推荐阅读】微服务还能火多久?>>> 前言 上一篇: 《分布式数据一致性模型有哪些?》 提到了Base理论提到了一个重要的点就是 「 最终一致性 」 有什么方式能实现这种一致性呢? 本文主要对以下两个问题进行介绍: 一致性算法Paxos透析? Paxos算法的应用场景? Paxos算法透析 Google Chubby的作者Mike Burrows说过,世上只有一种一致性算法,那就是Paxos,所有其他一致性算法都是Paxos算法的不完整版。Paxos算法是公认的晦涩,很难可能能将清楚,但是工程上也很难实现,所以有很多Paxos算法的工程实现,如Raft,ZAB,微信的PhxPaxos等。 Paxos算法是莱斯利·兰伯特(Leslie Lamport)1990年提出的一种基于消息传递的一致性算法,它曾就此发表了《The Part-Time Parliament》,《Paxos Made Simple》,由于采用故事的方式来解释此算法,感觉还是很难理解。 为什么要需要Paxos 因为 「 数据一致性 」 在常见的分布式系统中,总会发生诸如机器宕机或网络异常(包括消息的延迟、丢失、重复、乱序,还有网络分区)(也就是会发生异常的分布式系统)等情况。Paxos算法需要解决的问题就是如何在一个可能发生上述异常的分布式系统中,快速且正确地在集群内部对某个数据的值达成一致

玩转Redis-老板带你深入理解分布式锁

六眼飞鱼酱① 提交于 2020-04-06 12:53:14
前言 公司交给了萌新小猿一个光荣而艰巨的项目,该项目需要使用分布式锁,这可难道了小猿,只是听说过分布式锁很牛掰,其他就一概不知了,唉不懂就问呗,遂向老板请教。 老板:我们每天不都在经历分布式锁吗,我来给你回忆回忆。 小猿:好勒,瓜子板凳已备好。 本文结构 为什么要使用分布式锁 分布式锁有哪些特点 分布式锁流行算法及其优缺点 基本算法 relock算法 token算法 数据库排它锁、ZooKeeper分布式锁、Google的Chubby分布式锁 总结 1、为什么要使用分布式锁 这个问题应该拆分成以下2个问题回答。 1.1、为什么使用锁 保证在同一时刻共享资源只能被一个客户端访问; 根据锁用途分为以下两种: 共享资源只允许一个客户端操作; 共享资源允许多个客户端操作; 1.1.1、仅允许一个客户端访问 共享资源的操作不具备幂等性。 常见于 数据的修改、删除操作; 在上面的例子中, 人物事件 系统含义 经理A-N 多个线程 码农小猿-调高空调温度 非幂等共享资源 秘书的允许 获取锁 1.1.2、允许多个客户端操作 主要应用场景是:共享资源的操作具有幂等性; 如 数据的查询。 既然都具有幂等性了,为什么还需要分布式锁呢,通常是为了效率或性能,避免重复操作(尤其是消耗资源的操作)。例如我们常见的缓存方案。 在上面的例子中, 人物事件 | 系统含义 ---|--- 经理A-N | 多个线程

Google使用什么数据库?

こ雲淡風輕ζ 提交于 2020-02-25 15:48:02
是Oracle还是MySQL或者他们自己构建的东西? #1楼 Google主要使用Bigtable。 Bigtable是一个分布式存储系统,用于管理结构化数据,旨在扩展到非常大的规模。 有关更多信息,请从 此处 下载文档。 Google还为其部分应用程序使用Oracle和MySQL数据库。 您可以添加的任何其他信息非常感谢。 #2楼 Spanner 是Google全球分布式关系数据库管理系统(RDBMS),是 BigTable 的继承者。 Google声称它不是一个纯粹的关系系统,因为每个表都必须有一个主键。 这 是论文的链接。 Spanner是Google的可扩展,多版本,全局分布和同步复制的数据库。 它是第一个在全球范围内分发数据并支持外部一致的分布式事务的系统。 本文描述了Spanner的结构,功能集,各种设计决策的基本原理以及暴露时钟不确定性的新颖时间API。 此API及其实现对于支持外部一致性和各种强大功能至关重要:过去的非阻塞读取,无锁只读事务以及整个Spanner中的原子模式更改。 Google发明的另一个数据库是 Megastore 。 这是摘要: Megastore是一种存储系统,旨在满足当今互动在线服务的需求。 Megastore以一种新颖的方式将NoSQL数据存储的可扩展性与传统RDBMS的便利性相结合,并提供强大的一致性保证和高可用性。

【转】分布式、高并发、多线程Multithreading

蓝咒 提交于 2019-12-06 16:24:02
一、分布式系统 在计算机领域,当单机性能达到瓶颈时,一般有两种方式解决性能问题, 一是堆硬件,进一步提升配置; 二是分布式,水平扩展、垂直拆分。 分布式系统有很多种:分布式文件系统、分布式数据库、分布式WebService、分布式计算等等, 面向的情景不同,但分布式的思路大致相同,万法归一吧! 以下内容主要来自: 分布式系统架构思想 1.1、分布式系统实现的两种方式【水平扩展、垂直拆分】 1.1.1、简单的例子 假设我们有一台服务器,它可以承担1百万/秒的请求,这个请求可以的是:通过http访问网页、通过tcp下载文件、jdbc执行sql、RPC调用接口等等方式,现在我们有一条数据的请求是2百万/秒,很显然服务器很难hold住,会各种拒绝访问,甚至宕机,怎么办呢? 一台机器解决不了的问题,那就两台。所以我们加一台机器,每台承担1百万。如果请求继续增加呢,两台解决不了的问题,那就三台呗。这种方式我们称之为水平扩展,如果实现请求的平均分配便是负载均衡了。 另一个例子,我们现在有两个数据请求,数据190万,数据280万,上面那台机器也hold不住,我们加一台机器来负载均衡一下,每台机器处理45万数据1和40万数据2,但是平分太麻烦,不如一台处理数据1,一台处理数据2,同样能解决问题,这种方式我们称之为垂直拆分。 水平扩展和垂直拆分是分布式架构的两种思路,但并不是一个二选一的问题

关于分布式事务、两阶段提交协议、三阶提交协议

ぃ、小莉子 提交于 2019-12-06 02:51:29
随着大型网站的各种高并发访问、海量数据处理等场景越来越多,如何实现网站的高可用、易伸缩、可扩展、安全等目标就显得越来越重要。为了解决这样一系列问题,大型网站的架构也在不断发展。提高大型网站的高可用架构,不得不提的就是分布式。在 分布式一致性 一文中主要介绍了分布式系统中存在的一致性问题。本文将简单介绍如何有效的解决分布式的一致性问题,其中包括什么是 分布式事务 , 二阶段提交 和 三阶段提交 。 分布式一致性回顾 在分布式系统中,为了保证数据的高可用,通常,我们会将数据保留多个副本(replica),这些副本会放置在不同的物理的机器上。为了对用户提供正确的增\删\改\差等语义,我们需要保证这些放置在不同物理机器上的副本是一致的。 为了解决这种分布式一致性问题,前人在性能和数据一致性的反反复复权衡过程中总结了许多典型的协议和算法。其中比较著名的有 二阶提交协议 (Two Phase Commitment Protocol)、 三阶提交协议 (Three Phase Commitment Protocol)和 Paxos算法 。 分布式事务 分布式事务是指会涉及到操作多个数据库的事务。其实就是将对同一库事务的概念扩大到了对多个库的事务。目的是为了保证分布式系统中的数据一致性。分布式事务处理的关键是必须有一种方法可以知道事务在任何地方所做的所有动作,提交或回滚事务的决定必须产生统一的结果

关于分布式事务、两阶段提交协议、三阶提交协议

笑着哭i 提交于 2019-12-05 20:21:42
随着大型网站的各种高并发访问、海量数据处理等场景越来越多,如何实现网站的高可用、易伸缩、可扩展、安全等目标就显得越来越重要。为了解决这样一系列问题,大型网站的架构也在不断发展。提高大型网站的高可用架构,不得不提的就是分布式。在 分布式一致性 一文中主要介绍了分布式系统中存在的一致性问题。本文将简单介绍如何有效的解决分布式的一致性问题,其中包括什么是 分布式事务 , 二阶段提交 和 三阶段提交 。 分布式一致性回顾 在分布式系统中,为了保证数据的高可用,通常,我们会将数据保留多个副本(replica),这些副本会放置在不同的物理的机器上。为了对用户提供正确的增\删\改\差等语义,我们需要保证这些放置在不同物理机器上的副本是一致的。 为了解决这种分布式一致性问题,前人在性能和数据一致性的反反复复权衡过程中总结了许多典型的协议和算法。其中比较著名的有 二阶提交协议 (Two Phase Commitment Protocol)、 三阶提交协议 (Three Phase Commitment Protocol)和 Paxos算法 。 分布式事务 分布式事务是指会涉及到操作多个数据库的事务。其实就是将对同一库事务的概念扩大到了对多个库的事务。目的是为了保证分布式系统中的数据一致性。分布式事务处理的关键是必须有一种方法可以知道事务在任何地方所做的所有动作,提交或回滚事务的决定必须产生统一的结果