zookeeper分布式锁

怎么理解分布式、高并发、多线程?(含面试题和答案解析)

喜欢而已 提交于 2019-11-28 16:20:26
看到分布式、高并发、多线程这三个词的时候,很多人是不是都认为分布式=高并发=多线程? 当面试官问到高并发系统可以采用哪些手段来解决,或者被问到分布式系统如何解决一致性的问题,是不是一脸懵逼? 确实,在一开始接触的时候,不少人都会分布式、高并发、多线程将三者混淆,误以为所谓的分布式高并发的系统就是能同时供海量用户访问,而采用多线程手段不就是可以提供系统的并发能力吗?实际上,他们三个总是相伴而生,但侧重点又有不同。 接下来我就看看分布式、高并发、多线程这三者之间到底有什么区别? 什么是分布式? 分布式更多的一个概念,是为了解决单个物理服务器容量和性能瓶颈问题而采用的优化手段。该领域需要解决的问题极多,在不同的技术层面上,又包括:分布式文件系统、分布式缓存、分布式数据库、分布式计算等,一些名词如Hadoop、zookeeper、MQ等都跟分布式有关。从理念上讲,分布式的实现有两种形式: 水平扩展:当一台机器扛不住流量时,就通过添加机器的方式,将流量平分到所有服务器上,所有机器都可以提供相当的服务; 垂直拆分:前端有多种查询需求时,一台机器扛不住,可以将不同的需求分发到不同的机器上,比如A机器处理余票查询的请求,B机器处理支付的请求。 什么是高并发? 相对于分布式来讲,高并发在解决的问题上会集中一些,其反应的是同时有多少量:比如在线直播服务,同时有上万人观看。

zookeeper基础

谁说我不能喝 提交于 2019-11-28 01:36:31
1. zookeeper的由来   Zookeeper 最早起源于雅虎研究院的一个研究小组。在当时,研究人员发现,在雅虎内部很多大型系统基本都需要依赖一个类似的系统来进行分布式协调,但是这些系统往往都存在分布式单点问题。   所以,雅虎的开发人员就试图开发一个通用的无单点问题的分布式协调框架,以便让开发人员将精力集中在处理业务逻辑上。   关于“ZooKeeper”这个项目的名字,其实也有一段趣闻。在立项初期,考虑到之前内部很多项目都是使用动物的名字来命名的(例如著名的Pig项目),雅虎的工程师希望给这个项目也取一个动物的名字。时任研究院的首席科学家 Raghu Ramakrishnan 开玩笑地说:“在这样下去,我们这儿就变成动物园了!”此话一出,大家纷纷表示就叫动物园管理员吧,因为各个以动物命名的分布式组件放在一起,雅虎的整个分布式系统看上去就像一个大型的动物园了。   而 Zookeeper 正好要用来进行分布式环境的协调,于是,Zookeeper 的名字也就由此诞生了。 2. zookeeper概览   ZooKeeper 是一个开源的分布式协调服务。ZooKeeper 框架最初是在“Yahoo!"上构建的,用于以简单而稳健的方式访问他们的应用程序。   后来,Apache ZooKeeper 成为 Hadoop,HBase 和其他分布式框架使用的有组织服务的标准。  

分布式协调服务zookeeper

时间秒杀一切 提交于 2019-11-27 22:34:13
ps.本文为《从Paxos到Zookeeper 分布式一致性原理与实践》笔记之一 ZooKeeper ZooKeeper曾是Apache Hadoop的一个子项目,是一个典型的分布式数据一致性的解决方案,分布式应用程序可以基于它实现数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、master选举、分布式锁和分布式队列等。 ZooKeeper是Google的Chubby一个开源的实现,由雅虎创建,是Hadoop和Hbase的重要组件。 ZooKeeper没有直接采用paxos算法,而是采用了一种被称为ZAB(Zookeeper Atomic Broadcast)的一致性协议 ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。 ZooKeeper可以保证如下分布式一致性特性 顺序一致性:从同一个客户端发起的事务请求,最终将会严格地按照其发起顺序被应用到Zookeeper中; 原子性:所有事务的请求结果在整个集群中所有机器上的应用情况是一致的,也就是说,要么在整个集群中所有机器上都成功应用了某一个事务,要么都没有应用,没有中间状态; 单一视图:无论客户端连接的是哪个Zookeeper服务器,其看到的服务端数据模型都是一致的。 可靠性:一旦服务端成功应用了一个事务,并完成对客户端的响应

Zookeeper在分布式架构中的应用

半世苍凉 提交于 2019-11-27 20:31:43
Zookeeper 是一个高性能、高可靠的分布式协调系统,是 Google Chubby 的一个开源实现。 Zookeeper 能够为分布式应用提供一致性服务,提供的功能包括: 配置维护、域名服务、分布式同步、组服务等。它 以Fast Paxos算法为基础的,Paxos 算法存在活锁的问题,即当有多个proposer交错提交时,有可能互相排斥导致没有一个proposer能提交成功,而Fast Paxos作了一些优化,通过选举产生一个leader (领导者),只有leader才能提交proposer。 很多工作中用过的组件如Dubbo、kafka、Solr、Hadoop、HBase等都需要依赖Zookeeper。 近日了解到 Kafka 正在酝酿重大更新,可能会提供自管理的元数据仲裁机制以消除对 Zookeeper 的依赖,社区呼吁也相当强烈。那么一般而言 Zookeeper 在分布式系统中扮演什么角色?目前 Zookeeper 都应用在哪些分布式架构中?本文从 Zookeeper 可以聊起,盘点那些离不开 Zookeeper 的分布式技术架构! 一. Zookeeper 概述 Zookeeper 是一个高性能、高可靠的分布式协调系统,是 Google Chubby 的一个开源实现。 Zookeeper 能够为分布式应用提供一致性服务,提供的功能包括: 配置维护、域名服务、分布式同步

什么是zookeeper

我的未来我决定 提交于 2019-11-27 19:10:31
zookeeper 是一个分布式服务框架,是Apache Hadoop 的一个子项目,主要用来解决分布式应用中经常遇到的一些数据管理问题, 如:数据发布订阅、负载均衡、统一命名服务、master选举、状态同步服务、集群管理服务、配置管理、分布式队列、分布式锁 设计目标: 1、简单的数据结构:共享的树形结构,类似文件系统,存储于内存中 2、可以构建集群:避免单点故障,3-5台就可以组装成集群,超过半数可以对外提供服务 3、顺序访问:对于每个读请求,zk会分配一个全局的递增编号,利用这个特性可以实现高级协调服务 4、高性能:基于内存操作,服务于非事物请求,适用于读操作为主的业务场景 来源: https://www.cnblogs.com/huyang0726/p/11373548.html

初识Solr(二):Solr集群(SolrCloud)搭建

∥☆過路亽.° 提交于 2019-11-27 17:52:17
一、SolrCloud   SolrCloud(solr 云)是Solr提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用 SolrCloud。当一个系统的索引数据量少的时候是不需要使用SolrCloud的, 当索引量很大,搜索请求并发很高,这时需要使用SolrCloud来满足这些需求 。    SolrCloud是 基于Solr和Zookeeper的分布式搜索方案 ,它的主要思想是使用 Zookeeper 作为 集群的配置信息中心 。 二、Zookeeper   顾名思义zookeeper就是动物园管理员,他是用来管hadoop(大象)、Hive(蜜蜂)、pig(小猪)的管理员, Apache Hbase和 Apache Solr 的分布式集群都用到了zookeeper;    Zookeeper:是一个分布式的、开源的程序协调服务,是hadoop项目下的一个子项目 Zookeeper的功能 1、配置管理   在我们的应用中除了代码外,还有一些就是各种配置。比如数据库连接等。一般我们都是使用配置文件的方式,在代码中引入这些配置文件。但是当我们只有一种配置,只有一台服务器,并且不经常修改的时候,使用配置文件是一个很好的做法。   但是如果我们配置非常多,有很多服务器都需要这个配置,而且还可能是动态的话使用配置文件就不是个好主意了。   

ZooKeeper系列(一)—— ZooKeeper 简介及核心概念

巧了我就是萌 提交于 2019-11-27 12:04:45
一、Zookeeper简介 Zookeeper 是一个开源的分布式协调服务,目前由 Apache 进行维护。Zookeeper 可以用于实现分布式系统中常见的发布/订阅、负载均衡、命令服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列等功能。它具有以下特性: 顺序一致性 :从一个客户端发起的事务请求,最终都会严格按照其发起顺序被应用到 Zookeeper 中; 原子性 :所有事务请求的处理结果在整个集群中所有机器上都是一致的;不存在部分机器应用了该事务,而另一部分没有应用的情况; 单一视图 :所有客户端看到的服务端数据模型都是一致的; 可靠性 :一旦服务端成功应用了一个事务,则其引起的改变会一直保留,直到被另外一个事务所更改; 实时性 :一旦一个事务被成功应用后,Zookeeper 可以保证客户端立即可以读取到这个事务变更后的最新状态的数据。 二、Zookeeper设计目标 Zookeeper 致力于为那些高吞吐的大型分布式系统提供一个高性能、高可用、且具有严格顺序访问控制能力的分布式协调服务。它具有以下四个目标: 2.1 目标一:简单的数据模型 Zookeeper 通过树形结构来存储数据,它由一系列被称为 ZNode 的数据节点组成,类似于常见的文件系统。不过和常见的文件系统不同,Zookeeper 将数据全量存储在内存中,以此来实现高吞吐,减少访问延迟。

zookeeper与分布式系统

大憨熊 提交于 2019-11-27 07:38:08
1.1. 分布式系统基础知识 一个 tomcat 打天下的时代,不能说完全淘汰了,在一个管理系统,小型项目中还经常使用,这并不过分,出于成本的考虑,这反而值得提倡。 1.1.1. 分布式系统是什么 分布式系统:一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统 这是分布式系统,在不同的硬件,不同的软件,不同的网络,不同的计算机上,仅仅通过消息来进行通讯与协调 这是他的特点,更细致的看这些特点又可以有:分布性、对等性、并发性、缺乏全局时钟、 故障随时会发生。 1.1.1.1. 分布性 既然是分布式系统,最显著的特点肯定就是分布性,从简单来看,如果我们做的是个电商项目,整个项目会分成不同的功能,专业点就不同的微服务,比如用户微服务,产品微服务,订单微服务,这些服务部署在不同的 tomcat 中,不同的服务器中,甚至不同的集群中,整个架构都是分布在不同的地方的,在空间上是随意的,而且随时会增加,删除服务器节点,这是第一个特性 1.1.1.2. 对等性 对等性是分布式设计的一个目标,还是以电商网站为例,来说明下什么是对等性,要完成一个分布式的系统架构,肯定不是简单的把一个大的单一系统拆分成一个个微服务,然后部署在不同的服务器集群就够了,其中拆分完成的每一个微服务都有可能发现问题,而导致整个电商网站出现功能的丢失。 比如订单服务,为了防止订单服务出现问题

zookeeper学习系列(1)

拟墨画扇 提交于 2019-11-27 06:26:57
什么是Zookeeper 1、zookeeper是基于 Apache协议,高可用,高可靠,分布式,开元的分布式环境协同工作系统 -----集群、Java、不需要其它套件、可以更任何其它的系统结合 2、提供实现同步(数据同步、状态同步)、配置管理(100台服务器公用相同的配置文件)、分组 和 命名等服务、 3、Google Chubby的开源实现 4、通过Java或C++调用 为什么使用Zookeeper 1、大部分分布式应用需要一个主控、协调器或控制器来管理屋里分布的子程序(如资源、任务分配等) 2、目前,自家开发类似于Zookeeper的服务 3、Zookeeper:提供通用的分布式锁服务,用以协调分布式应用。(通讯) Zookeeper与Hadoop的关系 1、Hadoop生态系统的一员 2、独立于Hadoop 来源: oschina 链接: https://my.oschina.net/u/562875/blog/285789

Zookeeper--Zookeeper是什么

孤街醉人 提交于 2019-11-27 00:00:53
Google的三篇论文影响了很多很多人,也影响了很多很多系统。这三篇论文一直是分布式领域传阅的经典。根据MapReduce,于是我们有了Hadoop;根据GFS,于是我们有了HDFS;根据BigTable,于是我们有了HBase。而在这三篇论文里都提及Google的一个lock service---Chubby,哦,于是我们有了Zookeeper。 随着大数据的火热,Hxx们已经变得耳熟能详,现在作为一个开发人员如果都不知道这几个名词出门都好像不好意思跟人打招呼。但实际上对我们这些非大数据开发人员而言,Zookeeper是比Hxx们可能接触到更多的一个基础服务。但是,无奈的是它一直默默的位于二线,从来没有Hxx们那么耀眼。那么到底什么是Zookeeper呢?Zookeeper可以用来干什么?我们将如何使用Zookeeper?Zookeeper又是怎么实现的? 伴随着Zookeeper有两篇论文:一篇是Zab,就是介绍Zookeeper背后使用的一致性协议的(Zookeeper atomic broadcast protocol),还有一篇就是介绍Zookeeper本身的。在这两篇论文里都提到Zookeeper是一个分布式协调服务(a service for coordinating processes of distributed applications)