zookeeper 到底是个啥
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了zookeeper 到底是个啥相关的知识,希望对你有一定的参考价值。
1. 什么是Zookeeper大数据集群包括多种类型的服务节点,如何协调各节点之间的服务,需要一种强有力的工具来完成。如果我们把大数据集群中的每个服务节点当作一种动物,那么ZooKeeper便是这里的动物管理员了。借助百度百科的定义,ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务。
Zookeeper提供的服务功能有:
1) 数据注册功能;
2) 数据查询功能;
3) 数据监听功能;
Zookeeper能用来做什么:
a) 分布式系统中主从协调
b) 分布式系统中配置信息同步
c) 分布式系统中分布式共享锁(Master选举)
d) 分布式系统中负载均衡
e) 分布式系统中明名称服务
2. Zookeeper的数据组织形式
Zookeeper的数据存储形式是key-value, key类型与平时我们看到的类型不太一样,这里是一种类似路径的形式,如”/aa/bb”。 value值是byte[]字节数组类型。 我们称它为ZNode。
ZNode根据其特点不同,可以分为三种类型:持久(persistent)节点、顺序(sequential)节点和临时(ephemeral)节点。
持久节点: 一经创建,就会一直存储,除非客户端主动删除该节点。
顺序节点:客户端在创建此类节点时,会在该节点后拼接上一个序号,类似/aa0000000001,/aa0000000002...
临时节点:创建此类节点时,客户端必须和zookeeper服务端保持心跳。
其中还可以将这三种节点进行组合:
永久节点+顺序节点;
临时节点+顺序节点; 参考技术A Zookeeper是一个分布式协调服务(a service for coordinating processes of distributed applications)。
ZooKeeper is a centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services.本回答被提问者采纳 参考技术B 动物管理员
NoSQL到底是个啥?
NoSQL到底是个啥?
NoSQL(not only sql,不仅仅是一项全新的数据库革命性运动,泛指非关系型数据库,对于NoSQL这个新兴的名词,每个人的理解都不同。其实NoSQL一词最早出现于1988年,是Carlo Strizzi开发的一个轻量、开源、不提供SQL功能的关系数据库。但是到2009年,Johan Oskarsson 发起了一次关于分布式开源数据库的讨论,来自Rackspace的Eric Evans再次提出了Nosql的概念,这时的NoSQL最普遍的解释是“非关系联型”,强调Key-Value存储和文档数据库的优点,而不是单纯的反对RDBMS.
NoSQL的迅速发展以及由于NoSQL中没有像传统数据库那样定于数据的组织方式为关系型的,所以只要内部的数据组织采用了非关系型的方式,就可以称之为NoSQL数据库、所以随之带来了开源社区上百种所谓的NoSQL数据库,让人眼花缭乱。对于NoSQL并没有一个明确的范围和定义,但是他们都普遍存在下面一些共同特征:
● 不需要定义:不需要事先定义数据模式,预定于表结构。数据中心的每条记录都可能有不同的属性和格式。当插入数据时,并不需要预先定于它们的模式。
●弹性可扩展:可以在系统运行的时候,动态增加或者删除节点。不需要停机维护,数据可以自动迁移。
●分布式:相对于将数据存放于同一个节点,NoSQL数据库需要将数据进行分区,将记录分散在多个节点上面。通常分区的同时还要做复制。这样既提高了并行性能,又能保证没有单点失效的问题。
●BASE:相对于事务严格的ACID特性,NoSQL数据库保证的事BASE特性。BASE是最终一致性和软事务。
NoSQL优势:
避免不必要的复杂性、高吞吐量、高水平扩展能力;比如随着互联网web2.0网站的兴起、传统的关系数据库在应对web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则是由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据和多重数据类带来的挑战,尤其是大数据应用难题。
NoSQL劣势:
数据模型和查询语言没有经过数据验证,没有坚实的理论基础;不支持ACID特性,当然使用SQL数据库可以解决这个问题;有此NoSQL数据库过于简单,比如Memcache只是一个内存数据库,适用于某些特性场景;最大的劣势就是没有统一的数据查询模型,每种NoSQL产品都有自己的语言使用方式。
由于NoSQL数据库并没有一个统一的架构,两种NoSQL数据库之间不同,甚至远远超过两种关系型数据库的不同。可以说,NoSQL各有所长,成功的NoSQL必然特别适用于某些场合或者某些应用,在这些场合中会远远胜过关系型数据库和其它的NSQL。
什么是NewSQL?
通过比较可以发现NoSQL跟SQL之间的对立性太强了,基于NoSQL跟SQL之间的某种差异,比如NoSQL有的功能没有,如分布式、简单数据模型;而SQL有的特性NoSQL又没有,如ACID功能;当然不管哪种数据库,不管其劣势还是优势都有其适用的场景。而SQL很难实现分布式的原因在于,SQL自身的日志机制、锁机制以及缓冲区管理机制。于是就出来NewSQL数据库的概念,所谓的NewSQL是什么呢?就是像和SQL于NoSQL独有的特性。
目前NewSQL大概有两类:
第一类是拥有关系型数据库产品和服务,并将关系型数据库的好处与优势带入到分布式架构上,简单来说就是把ACID引入到分布式中;
第二类是提供了关系型数据库的性能,达到不用考虑的水平扩展的方式,简单来说就是改变SQL架构使得它不用水平扩展,不用运行在分布式环境中就能够带来性能上的提升。
NoSQL的分类?
总的来说,如今的数据库市场真是百花齐放,大概分类SQL、NoSQL、NewSQL以及缓存数据库系统。
首先需要明确的一点,NoSQL数据库并不是要取代广泛应用的传统数据库,而是采用一种非关系型的方式解决数据的存储和计算的问题。目前,可以将众多的NoSQL数据库按照内部的数据组织形式进行如下分类;
(1)键值(Key-Value)存储数据库
这一类数据库主要会使用到一个哈希表,这个表中又一个特定的键和一个指针指向指定的数据。Key-value模型对于IT系统来说的优势在于简单、易部署。但是如果DBA只对部分值进行查询或更新的时候,Key-value就显得效率低下了。
数据模型:key-value
优点:查找速度快
缺点:数据无结构,通常只被当做字符串或二进制数据
应用场景:内存缓存
典型产品:Tokeyo,Redis(一键多值),Dynameo,Oracle BDB以及Memcache(一键一值),但Memcache虽然是Key-avlue存储但是它是缓存数据库。
(2)列存储数据库
顾名思义,是按列存储数据的。最大的特点是方便存储结构化和半结构化数据,方便做数据压缩,对针对某一列或者某几列的查询有非常大的IO优势。
数据模型:数据按列存储、将同一列数据存在一起
优点:查找迅速、可扩展性强、易于实现分布式
缺点:功能相对SQL很有限
应用场景:分布式文件或分布式存储
典型产品:Cassandra,HBase,Bigtable
(3)文档型数据库
文档数据库的灵感是来自于Lotus Notes办公软件的,而且它同第一种键值存储相类似。该类型的数据模型是版本化的,半结构化的文档以特定的格式存储,比如JSON。文档数据库可以看作是键值数据库的升级版,允许之间嵌套键值。
数据模型:与键值类似,但value指向类似一个容器(文档),容器内有一组信息
优点:数据格式要求不严格,无需提前定义结构,每个文档字段随意
缺点:查询性能不高(比SQL可能稍微好点),缺乏统一查询语法
应用场景:只要ACID就可以使用
因此,我们总结NoSQL数据库在以下的这几种情况下比较适用
1、数据模型比较简单;
2、需要灵活性更强的IT系统;
3、对数据性能要求比较高;
4、不需要高度的数据一致性;
5、对于给定key比较容易映射复杂值得环境;
人生最大的喜悦是每个人都说你做不到,你却完成它了!
以上是关于zookeeper 到底是个啥的主要内容,如果未能解决你的问题,请参考以下文章