初识ZooKeeper
来源:互联网 发布:淘宝logo尺寸大小 编辑:程序博客网 时间:2024/05/29 17:24
Welcome to Apache ZooKeeper™
Apache ZooKeeper is an effort to develop and maintain an open-source server which enables highly reliable distributed coordination.
What is ZooKeeper?
ZooKeeper is a centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services. All of these kinds of services are used in some form or another by distributed applications. Each time they are implemented there is a lot of work that goes into fixing the bugs and race conditions that are inevitable(不可避免的). Because of the difficulty of implementing these kinds of services, applications initially usually skimp(克扣) on them ,which make them brittle(易碎的)in the presence of change and difficult to manage. Even when done correctly, different implementations of these services lead to management complexity when the applications are deployed.
ZooKeeper: Because Coordinating Distributed Systems is a Zoo
ZooKeeper: A Distributed Coordination Service for Distributed Applications
ZooKeeper is a distributed, open-source coordination(协同) service for distributed applications. It exposes a simple set of primitives(原生的) that distributed applications can build upon to implement higher level services for synchronization, configuration maintenance, and groups and naming. It is designed to be easy to program to, and uses a data model styled after the familiar directory tree structure of file systems. It runs in Java and has bindings for both Java and C.
Design Goals
Data model and the hierarchical(分层的) namespace
Nodes and ephemeral(临时|短暂) nodes
Unlike is standard file systems, each node in a ZooKeeper namespace can have data associated with it as well as children. It is like having a file-system that allows a file to also be a directory. (ZooKeeper was designed to store coordination data: status information, configuration, location information, etc., so the data stored at each node is usually small, in the byte to kilobyte range.) We use the term znode to make it clear that we are talking about ZooKeeper data nodes.
Znodes maintain a stat structure that includes version numbers for data changes, ACL changes, and timestamps, to allow cache validations and coordinated updates. Each time a znode's data changes, the version number increases. For instance, whenever a client retrieves(检索) data it also receives the version of the data.
The data stored at each znode in a namespace is read and written atomically. Reads get all the data bytes associated with a znode and a write replaces all the data. Each node has an Access Control List (ACL) that restricts who can do what.
ZooKeeper also has the notion(概念) of ephemeral nodes. These znodes exists as long as the session that created the znode is active. When the session ends the znode is deleted. Ephemeral nodes are useful when you want to implement...
Conditional updates(条件更新) and watches (资源并发修改问题)
Guarantees
ZooKeeper is very fast and very simple. Since its goal, though, is to be a basis for the construction of more complicated services, such as synchronization, it provides a set of guarantees. These are:
Sequential Consistency(有序 连贯) - Updates from a client will be applied in the order that they were sent.
Atomicity - Updates either succeed or fail. No partial results.
Single System Image - A client will see the same view of the service regardless of the server that it connects to.
Reliability - Once an update has been applied, it will persist from that time forward until a client overwrites the update.
Timeliness - The clients view of the system is guaranteed to be up-to-date within a certain time bound.
Simple API
One of the design goals of ZooKeeper is provide a very simple programming interface. As a result, it supports only these operations:
- create
creates a node at a location in the tree
- delete
deletes a node
- exists
tests if a node exists at a location
- get data
reads the data from a node
- set data
writes data to a node
- get children
retrieves a list of children of a node
- sync
waits for data to be propagated
For a more in-depth discussion on these, and how they can be used to implement higher level operations, please refer to 。。。
Implementation
ZooKeeper Components shows the high-level components of the ZooKeeper service. With the exception of the request processor, each of the servers that make up the ZooKeeper service replicates its own copy of each of components.
ZooKeeper ComponentsThe replicated database is an in-memory database containing the entire data tree. Updates are logged to disk for recoverability, and writes are serialized to disk before they are applied to the in-memory database.- 初识ZooKeeper
- ZooKeeper 初识
- 初识ZooKeeper
- 初识ZooKeeper
- 初识ZooKeeper
- zookeeper 初识
- 初识ZooKeeper。
- ZooKeeper学习笔记:初识zookeeper
- 【ZooKeeper 基础篇】初识
- dubbo/zookeeper初识
- kafka 的 zookeeper 初识
- ZooKeeper_2_初识ZooKeeper
- 初识zookeeper和Dubbo
- 初识Hive,Zookeeper
- Zookeeper笔记(一)初识Zookeeper
- 从Paxos到ZooKeeper-初识ZooKeeper
- Zookeeper学习笔记-1-初识
- 初识Lily, Lily=Hadoop+Zookeeper+HBase+Solr
- 生成随机字符串(三种方式)
- 堆与最大堆
- ios 数据结构和算法
- TCP/IP三次握手,四次挥手,图解
- 线程池与队列
- 初识ZooKeeper
- 移动端那些事儿(四)移动端开发注意事项
- 当坚持不下去的时候(节选)
- Android 用signkey.jks签名文件对 Apk 进行签名
- web常见安全漏洞
- UI组件——WebViewClient部分api解释
- 有关http关于b/s模式的理解
- Imutable Record 类型
- 矩阵组合