SlideShare una empresa de Scribd logo
Integrates: Andrés Felipe Cortes Amaya
Carlos Alberto Hernandez
GNUnify - 2013 1
Las aplicaciones Distribuidas requieren diferentes formas de
coordinación:
 Configuración
 Pertenecía a un grupo
 Elección del Líder
GNUnify - 2013 2
GNUnify - 2013 3
Un sistema distribuido consiste en múltiples
computadoras que se comunican a través de
una red informática e interactúan entre sí
para lograr un objetivo común.
La red es confiable.
La latencia es cero.
El ancho de banda es infinito.
La red es segura.
La topología no cambia.
Hay un administrador.
El costo de transporte es cero.
La red es homogénea.
GNUnify - 2013 4
Coordinación: Un acto que los nodos múltiples
deben realizar juntos.
Ejemplos:
Membresías de grupos
Cierre
Publicador/subscritor
Elección de lider
Sincronización
Conseguir la coordinación del nodo correcta es
muy difícil!
GNUnify - 2013 5
GNUnify - 2013 6
ZooKeeper permite que los procesos distribuidos
se coordinen entre sí a través de un espacio de
nombres jerárquico compartido de los registros
de datos.
- ZooKeeper Wiki
ZooKeeper es mucho más que un
servidor de bloqueo distribuido!
GNUnify - 2013 7
Un servicio de coordinación de alto rendimiento
y código abierto para aplicaciones distribuidas.
Expone servicios comunes en una interfaz
sencilla:
Nombre
Gestión de la configuración
Bloqueos y sincronización
Grupo de servicios
… los desarrolladores no tiene que escribir desde cero
Construir sus propias necesidades.
GNUnify - 2013 8
Administración de Configuración
Los nodos del miembro del clúster arrancan la configuración
desde una fuente centralizada de forma desatendida
Implementación / aprovisionamiento más sencillo
Gestión de clústeres distribuidos
Entradas de nodos / salidas
Estados de los nodos en tiempo real
Servicio de nomenclatura - p. DNS
Sincronización distribuida - bloqueos, barreras, colas
Elección de líder en un sistema distribuido.
Registro de datos centralizado y altamente confiable
(simple)
GNUnify - 2013 9
GNUnify - 2013 10
El servicio ZooKeeper se repite en un conjunto de máquinas
Todas las máquinas almacenan una copia de los datos (en memoria)
Se elige un líder en el inicio del servicio
Los clientes sólo se conectan a un único servidor de ZooKeeper y mantienen una
conexión TCP.
El cliente puede leer desde cualquier servidor ZooKeeper, escribe a través del líder y
necesita un consenso mayoritario.
ZooKeeper tiene un espacio de nombre jerárquico.
Cada nodo en el espacio de nombres se llama como un
ZNode.
Cada ZNode tiene datos (dado como byte []) y
opcionalmente puede tener hijos.
Padre: "foo"
| | | |
| | | |
`- child3:" huevos "
`- nieto1:" 42 "
Rutas de ZNode:
Canónicos, absolutos, separados por slash
Sin referencias relativas.
Los nombres pueden tener caracteres Unicode
GNUnify - 2013 11
Mantenga una estructura de
estadísticas con números de versión
para cambios de datos, cambios de
ACL y marcas de tiempo.
El número de versiones aumenta
con los cambios Los datos se leen y
escriben en su totalidad
GNUnify - 2013 12
Image: http://helix.incubator.apache.org/Architecture.html
Nodos persistentes
Existe hasta que se borre explícitamente
Nodos Efímeros
Existe mientras la sesión esté activa
No puede tener hijos
Nodos de Secuencia (Nombres Únicos)
Añadir un monótonamente creciente contra el final
de la ruta
Se aplica tanto a los nodos persistentes y efímeros
GNUnify - 2013 13
GNUnify - 2013 14
Operation Type
create Write
delete Write
exists Read
getChildren Read
getData Read
setData Write
getACL Read
setACL Write
sync Read
ZNodes are the main entity that a programmer access.
[zk: localhost:2181(CONNECTED) 0] help [zk: localhost:2181(CONNECTED) 1] ls /
ZooKeeper -server host:port cmd args [hbase, zookeeper]
connect host:port
get path [watch] [zk: localhost:2181(CONNECTED) 2] ls2 /zookeeper
ls path [watch] [quota]
set path data [version] cZxid = 0x0
rmr path ctime = Tue Jan 01 05:30:00 IST 2013
delquota [-n|-b] path mZxid = 0x0
quit mtime = Tue Jan 01 05:30:00 IST 2013
printwatches on|off pZxid = 0x0
create [-s] [-e] path data acl cversion = -1
stat path [watch] dataVersion = 0
close aclVersion = 0
ls2 path [watch] ephemeralOwner = 0x0
history dataLength = 0
listquota path numChildren = 1
setAcl path acl
getAcl path [zk: localhost:2181(CONNECTED) 3] create /test-znode HelloWorld
sync path Created /test-znode
redo cmdno [zk: localhost:2181(CONNECTED) 4] ls /
addauth scheme auth [test-znode, hbase, zookeeper]
delete path [version] [zk: localhost:2181(CONNECTED) 5] get /test-znode
setquota -n|-b val path HelloWorld
GNUnify - 2013 15
Los clientes pueden configurar relojes en znodes:
NodeChildrenChanged
NodeCreated
NodeDataChanged
NodeDeleted
Los cambios en un znode activan el reloj y ZooKeeper
envía al cliente una notificación.
Los relojes son disparadores de una vez.
Los relojes son siempre ordenados.
El cliente ve el evento visto antes de los nuevos datos
de znode.
El cliente debe manejar casos de latencia entre
obtener el evento y enviar una nueva solicitud para
obtener un reloj.GNUnify - 2013
16
Los métodos API son sincronizados, así como no
sincronizados
Sincronizar:
exists(“/test-cluster/CONFIGS", null);
No sincronizados:
exists("/test-cluster/CONFIGS", null, new StatCallback() {
@Override
public processResult(int rc, String path, Object ctx, Stat stat)
{
//process result when called back later
}
}, null);
GNUnify - 2013 17
GNUnify - 2013 18
Las solicitudes de lectura se procesan localmente en el servidor
ZooKeeper al que el cliente está conectado actualmente
Las peticiones de escritura se envían al líder y pasan por el
consenso mayoritario antes de que se genere una respuesta.
Consistencia secuencial: Las actualizaciones se aplican en
orden
Atomicidad: las actualizaciones tienen éxito o fallan
Imagen de sistema único: Un cliente ve la misma vista del
servicio independientemente del servidor ZK con el que se
conecta.
Confiabilidad: las actualizaciones persisten una vez
aplicadas, hasta que sobrescriben algunos clientes.
Oportunidad: Se garantiza que la visión de los clientes
sobre el sistema esté actualizada dentro de un plazo
determinado. (Eventual Consistencia)
GNUnify - 2013 19
Cada host de cliente i, i: = 1 .. N
1. Ver en / miembros
2. Crear / Miembros / host - $ {i} como
nodos efímeros
3. Entradas de Nodos o salidas genera
alerta
4 Mantener la actualización / miembros
/ host - $ {i} periódicamente para los
cambios de estado del nodo
(Carga, memoria, CPU, etc.)
host-N
Cluster
host-2
host-1
/members
GNUnify - 2013 20
1. Un znode, dice "/ svc / election-path"
2. Todos los participantes en el proceso
electoral crean un nodo efímero-
secuencial en el mismo camino
electoral.
3. El nodo con el número de secuencia
más pequeño es el líder.
4. Cada nodo "seguidor" escucha el nodo
de la siguiente secuencia inferior.
5. Al retirar el líder, vaya a Elección-
camino y encontrar un nuevo líder, o
convertirse en el líder si tiene el
número de secuencia más bajo.
6. Al vencimiento de la sesión verifique el
estado de elección y vaya a elección si
es necesario
GNUnify - 2013 21
Suponiendo que hay N clientes tratando
de adquirir un bloqueo.
Los clientes crean un znode efímero y
secuencial bajo la ruta / Cluster /
_locknode_
Clientes solicita una lista de hijos para el
znode de bloqueo (es decir, _locknode_)
El cliente con la menor ID de acuerdo con
el orden natural mantendrá la cerradura.
Otros clientes establecen relojes en el
znode con id inmediatamente anterior a su
propio id
Revisa periódicamente la cerradura en
caso de notificación.
El cliente que desea liberar un bloqueo
elimina el nodo, lo que desencadena el
siguiente cliente en línea para adquirir el
bloqueo.
ZK
|---Cluster
+---config
+---memberships
+---_locknode_
+---host1-3278451
+---host2-3278452
+---host3-3278453
+--- …
---hostN-3278XXX
GNUnify - 2013 22
ZooKeeper envía bibliotecas a los cliente en:
Java
C
Perl
Python
La comunidad aportó enlaces de clientes disponibles
para Scala, C #, Node.js, Ruby, Erlang, Go, Haskell
https://cwiki.apache.org/ZOOKEEPER/zkclientbindings.html
GNUnify - 2013 23
Los relojes son disparadores de una vez
La observación continua de znodes requiere el restablecimiento
de los relojes después de cada evento / disparador
Demasiados relojes en un solo znode crea el "efecto de manada" -
causando ráfagas de tráfico y limitando la escalabilidad
¡Si un znode cambia varias veces entre conseguir el acontecimiento y
fijar el reloj otra vez, manejarlo cuidadosamente!
Mantenga los tiempos de espera de sesión lo suficientemente largos
para manejar largas pausas de recolección de basura en las
aplicaciones.
Establezca el tamaño de montón Java máximo correctamente para
evitar intercambios.
Disco dedicado para el registro de transacciones de ZooKeeper
GNUnify - 2013 24
Compañías:
• Yahoo!
• Zynga
• Rackspace
• LinkedIn
• Netflix
• and many more…
Proyectos en FOSS:
• Apache Map/Reduce (Yarn)
• Apache HBase
• Apache Solr
• Neo4j
• Katta
• and many more…
GNUnify - 2013 25
Reference: https://cwiki.apache.org/confluence/display/ZOOKEEPER/PoweredBy
Es utilizado en Twitter para el descubrimiento del
servicio
¿Cómo?
Los servicios se registran en ZooKeeper
Los clientes consultan el clúster de producción para el
servicio "A" en el centro de datos "XYZ"
Se mantiene una lista de host actualizada para cada servicio
Siempre que se agregue nueva capacidad, el cliente
automáticamente será consciente
Además, habilita el equilibrio de carga en todos los
servidores.
GNUnify - 2013 26
Reference: http://engineering.twitter.com/
The Chubby lock service for loosely-coupled distributed systems
Google Research (7th USENIX Symposium on Operating Systems Design and
Implementation (OSDI), {USENIX} (2006) )
ZooKeeper: Wait-free coordination for Internet-scale systems
Yahoo Research (USENIX Annual Technology Conference 2010)
Apache ZooKeeper Home: http://zookeeper.apache.org/
Presentations:
http://www.slideshare.net/mumrah/introduction-to-zookeeper-trihug-
may-22-2012
http://www.slideshare.net/scottleber/apache-zookeeper
https://cwiki.apache.org/confluence/display/ZOOKEEPER/ZooKeeperPre
sentations
GNUnify - 2013 27
El sistema de archivos de Google
El Sistema de Archivos Distribuidos Hadoop
MapReduce: Procesamiento simplificado de datos en grandes clusters
Bigtable: un sistema de almacenamiento distribuido para datos
estructurados
PNUTS: Plataforma de servicios de datos alojados de Yahoo!
Dynamo: el almacén de valores clave altamente disponible de Amazon
Spanner: Base de datos distribuida mundialmente de Google
Centrífuga: Gestión Integrada de Arrendamiento y Particionamiento de
Servicios en Nube (Microsoft)
ZAB: Un simple protocolo de transmisión totalmente ordenado (Yahoo!)
Paxos Made Simple de Leslie Lamport.
Eventualmente coherente por Werner Vogel (CTO, Amazon)
Http://www.highscalability.com/
GNUnify - 2013 28
GNUnify - 2013 29
Preguntas?
GNUnify - 2013 30
Gracias!

Más contenido relacionado

PPTX
cours-supcom-virt.pptx
PPTX
10 protocolos de enrutamiento
PDF
Cours SNMP
PDF
Cours Big Data Chap2
PPTX
Monitoring avec Zabbix
PPTX
Introduction aux systèmes répartis
PDF
Userspace networking
PPTX
Problemas de desempeño en las redes de cómputo
cours-supcom-virt.pptx
10 protocolos de enrutamiento
Cours SNMP
Cours Big Data Chap2
Monitoring avec Zabbix
Introduction aux systèmes répartis
Userspace networking
Problemas de desempeño en las redes de cómputo

La actualidad más candente (20)

PDF
Un introduction à Pig
PDF
TP1 Big Data - MapReduce
PDF
Profiling deep learning network using NVIDIA nsight systems
PPTX
Cinder
PDF
Chapitre 3 spark
PPTX
File system.
PPTX
Cuda Architecture
PPT
Algoritmos de enrutamiento
DOCX
Exposé de SE Systemes distribués
PDF
Le protocole stp
PDF
Technologies pour le Big Data
PPTX
Hive ppt (1)
PPTX
memoire utilisation de Puppet et Nagios
PPT
Intro to linux
PPTX
Les systèmes de détection et prévention d’intrusion
ODP
SSL/TLS Présentation en Français.
PDF
Commutation
PDF
Cours routage dynamique (ri pv1,ripv2,ripng)
PPTX
Red hat
PPTX
Sistema operativo linux 2016
Un introduction à Pig
TP1 Big Data - MapReduce
Profiling deep learning network using NVIDIA nsight systems
Cinder
Chapitre 3 spark
File system.
Cuda Architecture
Algoritmos de enrutamiento
Exposé de SE Systemes distribués
Le protocole stp
Technologies pour le Big Data
Hive ppt (1)
memoire utilisation de Puppet et Nagios
Intro to linux
Les systèmes de détection et prévention d’intrusion
SSL/TLS Présentation en Français.
Commutation
Cours routage dynamique (ri pv1,ripv2,ripng)
Red hat
Sistema operativo linux 2016
Publicidad

Destacado (20)

PDF
ZooKeeper Futures
PPTX
ZooKeeper (and other things)
PDF
Taming Pythons with ZooKeeper
PDF
Zookeeper
PDF
Apache ZooKeeper TechTuesday
PPT
Zookeeper Introduce
PDF
Taming Pythons with ZooKeeper (Pyconfi edition)
PDF
Zookeeper In Action
PDF
ZooKeeper and Embedded ZooKeeper Support for IBM InfoSphere Streams V4.0
PDF
Distributed system coordination by zookeeper and introduction to kazoo python...
PDF
Overview of Zookeeper, Helix and Kafka (Oakjug)
PPTX
Winter is coming? Not if ZooKeeper is there!
PDF
ZooKeeper - wait free protocol for coordinating processes
PDF
Jcconf 2016 zookeeper
PDF
Dynamic Reconfiguration of Apache ZooKeeper
PDF
Zookeeper
PPTX
Centralized Application Configuration with Spring and Apache Zookeeper
PDF
Apache Zookeeper 分布式服务框架
PPTX
Objetivo 1 epistemologia
DOCX
Snow universe (1)
ZooKeeper Futures
ZooKeeper (and other things)
Taming Pythons with ZooKeeper
Zookeeper
Apache ZooKeeper TechTuesday
Zookeeper Introduce
Taming Pythons with ZooKeeper (Pyconfi edition)
Zookeeper In Action
ZooKeeper and Embedded ZooKeeper Support for IBM InfoSphere Streams V4.0
Distributed system coordination by zookeeper and introduction to kazoo python...
Overview of Zookeeper, Helix and Kafka (Oakjug)
Winter is coming? Not if ZooKeeper is there!
ZooKeeper - wait free protocol for coordinating processes
Jcconf 2016 zookeeper
Dynamic Reconfiguration of Apache ZooKeeper
Zookeeper
Centralized Application Configuration with Spring and Apache Zookeeper
Apache Zookeeper 分布式服务框架
Objetivo 1 epistemologia
Snow universe (1)
Publicidad

Similar a Zookeeper (12)

PDF
Zookeeper: Wait-free Coordination for Internet-scale Systems
PPTX
Bd nosql tecnicas III
PDF
MONTAJE DE INFRAESTRUCTURA DE MÁQUINAS EN ALTA DISPONIBILIDAD VIRTUALIZADA
PPTX
Guia de redireccionamiento en ubuntu
PPTX
Capitulo1 luis
PPT
Nagios
PPTX
SOA multiplataforma con rabbitmq y websockets
PPTX
Web 3.0 & IoT
DOCX
PPTX
DynamoDB, análisis del paper.
PPT
Construyendo Una Red Wireless
PPT
Miguel
Zookeeper: Wait-free Coordination for Internet-scale Systems
Bd nosql tecnicas III
MONTAJE DE INFRAESTRUCTURA DE MÁQUINAS EN ALTA DISPONIBILIDAD VIRTUALIZADA
Guia de redireccionamiento en ubuntu
Capitulo1 luis
Nagios
SOA multiplataforma con rabbitmq y websockets
Web 3.0 & IoT
DynamoDB, análisis del paper.
Construyendo Una Red Wireless
Miguel

Último (20)

PPTX
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
PDF
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
PPTX
Sesion 1 de microsoft power point - Clase 1
PPTX
RAP01 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
PDF
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
PDF
Estrategia de apoyo tecnología grado 9-3
PPTX
REDES INFORMATICAS REDES INFORMATICAS.pptx
PPTX
Presentación PASANTIAS AuditorioOO..pptx
PDF
MANUAL TECNOLOGÍA SER MINISTERIO EDUCACIÓN
PDF
Calidad desde el Docente y la mejora continua .pdf
PPTX
Propuesta BKP servidores con Acronis1.pptx
PPTX
Presentación de Redes de Datos modelo osi
PDF
SAP Transportation Management para LSP, TM140 Col18
PDF
Estrategia de apoyo tecnología miguel angel solis
PDF
CyberOps Associate - Cisco Networking Academy
PPT
Que son las redes de computadores y sus partes
PDF
Maste clas de estructura metálica y arquitectura
PPTX
Power Point Nicolás Carrasco (disertación Roblox).pptx
PDF
5.1 Pinch y Bijker en libro Actos, actores y artefactos de Bunch Thomas (coor...
PDF
clase auditoria informatica 2025.........
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
Sesion 1 de microsoft power point - Clase 1
RAP01 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
Estrategia de apoyo tecnología grado 9-3
REDES INFORMATICAS REDES INFORMATICAS.pptx
Presentación PASANTIAS AuditorioOO..pptx
MANUAL TECNOLOGÍA SER MINISTERIO EDUCACIÓN
Calidad desde el Docente y la mejora continua .pdf
Propuesta BKP servidores con Acronis1.pptx
Presentación de Redes de Datos modelo osi
SAP Transportation Management para LSP, TM140 Col18
Estrategia de apoyo tecnología miguel angel solis
CyberOps Associate - Cisco Networking Academy
Que son las redes de computadores y sus partes
Maste clas de estructura metálica y arquitectura
Power Point Nicolás Carrasco (disertación Roblox).pptx
5.1 Pinch y Bijker en libro Actos, actores y artefactos de Bunch Thomas (coor...
clase auditoria informatica 2025.........

Zookeeper

  • 1. Integrates: Andrés Felipe Cortes Amaya Carlos Alberto Hernandez GNUnify - 2013 1
  • 2. Las aplicaciones Distribuidas requieren diferentes formas de coordinación:  Configuración  Pertenecía a un grupo  Elección del Líder GNUnify - 2013 2
  • 3. GNUnify - 2013 3 Un sistema distribuido consiste en múltiples computadoras que se comunican a través de una red informática e interactúan entre sí para lograr un objetivo común.
  • 4. La red es confiable. La latencia es cero. El ancho de banda es infinito. La red es segura. La topología no cambia. Hay un administrador. El costo de transporte es cero. La red es homogénea. GNUnify - 2013 4
  • 5. Coordinación: Un acto que los nodos múltiples deben realizar juntos. Ejemplos: Membresías de grupos Cierre Publicador/subscritor Elección de lider Sincronización Conseguir la coordinación del nodo correcta es muy difícil! GNUnify - 2013 5
  • 7. ZooKeeper permite que los procesos distribuidos se coordinen entre sí a través de un espacio de nombres jerárquico compartido de los registros de datos. - ZooKeeper Wiki ZooKeeper es mucho más que un servidor de bloqueo distribuido! GNUnify - 2013 7
  • 8. Un servicio de coordinación de alto rendimiento y código abierto para aplicaciones distribuidas. Expone servicios comunes en una interfaz sencilla: Nombre Gestión de la configuración Bloqueos y sincronización Grupo de servicios … los desarrolladores no tiene que escribir desde cero Construir sus propias necesidades. GNUnify - 2013 8
  • 9. Administración de Configuración Los nodos del miembro del clúster arrancan la configuración desde una fuente centralizada de forma desatendida Implementación / aprovisionamiento más sencillo Gestión de clústeres distribuidos Entradas de nodos / salidas Estados de los nodos en tiempo real Servicio de nomenclatura - p. DNS Sincronización distribuida - bloqueos, barreras, colas Elección de líder en un sistema distribuido. Registro de datos centralizado y altamente confiable (simple) GNUnify - 2013 9
  • 10. GNUnify - 2013 10 El servicio ZooKeeper se repite en un conjunto de máquinas Todas las máquinas almacenan una copia de los datos (en memoria) Se elige un líder en el inicio del servicio Los clientes sólo se conectan a un único servidor de ZooKeeper y mantienen una conexión TCP. El cliente puede leer desde cualquier servidor ZooKeeper, escribe a través del líder y necesita un consenso mayoritario.
  • 11. ZooKeeper tiene un espacio de nombre jerárquico. Cada nodo en el espacio de nombres se llama como un ZNode. Cada ZNode tiene datos (dado como byte []) y opcionalmente puede tener hijos. Padre: "foo" | | | | | | | | `- child3:" huevos " `- nieto1:" 42 " Rutas de ZNode: Canónicos, absolutos, separados por slash Sin referencias relativas. Los nombres pueden tener caracteres Unicode GNUnify - 2013 11
  • 12. Mantenga una estructura de estadísticas con números de versión para cambios de datos, cambios de ACL y marcas de tiempo. El número de versiones aumenta con los cambios Los datos se leen y escriben en su totalidad GNUnify - 2013 12 Image: http://helix.incubator.apache.org/Architecture.html
  • 13. Nodos persistentes Existe hasta que se borre explícitamente Nodos Efímeros Existe mientras la sesión esté activa No puede tener hijos Nodos de Secuencia (Nombres Únicos) Añadir un monótonamente creciente contra el final de la ruta Se aplica tanto a los nodos persistentes y efímeros GNUnify - 2013 13
  • 14. GNUnify - 2013 14 Operation Type create Write delete Write exists Read getChildren Read getData Read setData Write getACL Read setACL Write sync Read ZNodes are the main entity that a programmer access.
  • 15. [zk: localhost:2181(CONNECTED) 0] help [zk: localhost:2181(CONNECTED) 1] ls / ZooKeeper -server host:port cmd args [hbase, zookeeper] connect host:port get path [watch] [zk: localhost:2181(CONNECTED) 2] ls2 /zookeeper ls path [watch] [quota] set path data [version] cZxid = 0x0 rmr path ctime = Tue Jan 01 05:30:00 IST 2013 delquota [-n|-b] path mZxid = 0x0 quit mtime = Tue Jan 01 05:30:00 IST 2013 printwatches on|off pZxid = 0x0 create [-s] [-e] path data acl cversion = -1 stat path [watch] dataVersion = 0 close aclVersion = 0 ls2 path [watch] ephemeralOwner = 0x0 history dataLength = 0 listquota path numChildren = 1 setAcl path acl getAcl path [zk: localhost:2181(CONNECTED) 3] create /test-znode HelloWorld sync path Created /test-znode redo cmdno [zk: localhost:2181(CONNECTED) 4] ls / addauth scheme auth [test-znode, hbase, zookeeper] delete path [version] [zk: localhost:2181(CONNECTED) 5] get /test-znode setquota -n|-b val path HelloWorld GNUnify - 2013 15
  • 16. Los clientes pueden configurar relojes en znodes: NodeChildrenChanged NodeCreated NodeDataChanged NodeDeleted Los cambios en un znode activan el reloj y ZooKeeper envía al cliente una notificación. Los relojes son disparadores de una vez. Los relojes son siempre ordenados. El cliente ve el evento visto antes de los nuevos datos de znode. El cliente debe manejar casos de latencia entre obtener el evento y enviar una nueva solicitud para obtener un reloj.GNUnify - 2013 16
  • 17. Los métodos API son sincronizados, así como no sincronizados Sincronizar: exists(“/test-cluster/CONFIGS", null); No sincronizados: exists("/test-cluster/CONFIGS", null, new StatCallback() { @Override public processResult(int rc, String path, Object ctx, Stat stat) { //process result when called back later } }, null); GNUnify - 2013 17
  • 18. GNUnify - 2013 18 Las solicitudes de lectura se procesan localmente en el servidor ZooKeeper al que el cliente está conectado actualmente Las peticiones de escritura se envían al líder y pasan por el consenso mayoritario antes de que se genere una respuesta.
  • 19. Consistencia secuencial: Las actualizaciones se aplican en orden Atomicidad: las actualizaciones tienen éxito o fallan Imagen de sistema único: Un cliente ve la misma vista del servicio independientemente del servidor ZK con el que se conecta. Confiabilidad: las actualizaciones persisten una vez aplicadas, hasta que sobrescriben algunos clientes. Oportunidad: Se garantiza que la visión de los clientes sobre el sistema esté actualizada dentro de un plazo determinado. (Eventual Consistencia) GNUnify - 2013 19
  • 20. Cada host de cliente i, i: = 1 .. N 1. Ver en / miembros 2. Crear / Miembros / host - $ {i} como nodos efímeros 3. Entradas de Nodos o salidas genera alerta 4 Mantener la actualización / miembros / host - $ {i} periódicamente para los cambios de estado del nodo (Carga, memoria, CPU, etc.) host-N Cluster host-2 host-1 /members GNUnify - 2013 20
  • 21. 1. Un znode, dice "/ svc / election-path" 2. Todos los participantes en el proceso electoral crean un nodo efímero- secuencial en el mismo camino electoral. 3. El nodo con el número de secuencia más pequeño es el líder. 4. Cada nodo "seguidor" escucha el nodo de la siguiente secuencia inferior. 5. Al retirar el líder, vaya a Elección- camino y encontrar un nuevo líder, o convertirse en el líder si tiene el número de secuencia más bajo. 6. Al vencimiento de la sesión verifique el estado de elección y vaya a elección si es necesario GNUnify - 2013 21
  • 22. Suponiendo que hay N clientes tratando de adquirir un bloqueo. Los clientes crean un znode efímero y secuencial bajo la ruta / Cluster / _locknode_ Clientes solicita una lista de hijos para el znode de bloqueo (es decir, _locknode_) El cliente con la menor ID de acuerdo con el orden natural mantendrá la cerradura. Otros clientes establecen relojes en el znode con id inmediatamente anterior a su propio id Revisa periódicamente la cerradura en caso de notificación. El cliente que desea liberar un bloqueo elimina el nodo, lo que desencadena el siguiente cliente en línea para adquirir el bloqueo. ZK |---Cluster +---config +---memberships +---_locknode_ +---host1-3278451 +---host2-3278452 +---host3-3278453 +--- … ---hostN-3278XXX GNUnify - 2013 22
  • 23. ZooKeeper envía bibliotecas a los cliente en: Java C Perl Python La comunidad aportó enlaces de clientes disponibles para Scala, C #, Node.js, Ruby, Erlang, Go, Haskell https://cwiki.apache.org/ZOOKEEPER/zkclientbindings.html GNUnify - 2013 23
  • 24. Los relojes son disparadores de una vez La observación continua de znodes requiere el restablecimiento de los relojes después de cada evento / disparador Demasiados relojes en un solo znode crea el "efecto de manada" - causando ráfagas de tráfico y limitando la escalabilidad ¡Si un znode cambia varias veces entre conseguir el acontecimiento y fijar el reloj otra vez, manejarlo cuidadosamente! Mantenga los tiempos de espera de sesión lo suficientemente largos para manejar largas pausas de recolección de basura en las aplicaciones. Establezca el tamaño de montón Java máximo correctamente para evitar intercambios. Disco dedicado para el registro de transacciones de ZooKeeper GNUnify - 2013 24
  • 25. Compañías: • Yahoo! • Zynga • Rackspace • LinkedIn • Netflix • and many more… Proyectos en FOSS: • Apache Map/Reduce (Yarn) • Apache HBase • Apache Solr • Neo4j • Katta • and many more… GNUnify - 2013 25 Reference: https://cwiki.apache.org/confluence/display/ZOOKEEPER/PoweredBy
  • 26. Es utilizado en Twitter para el descubrimiento del servicio ¿Cómo? Los servicios se registran en ZooKeeper Los clientes consultan el clúster de producción para el servicio "A" en el centro de datos "XYZ" Se mantiene una lista de host actualizada para cada servicio Siempre que se agregue nueva capacidad, el cliente automáticamente será consciente Además, habilita el equilibrio de carga en todos los servidores. GNUnify - 2013 26 Reference: http://engineering.twitter.com/
  • 27. The Chubby lock service for loosely-coupled distributed systems Google Research (7th USENIX Symposium on Operating Systems Design and Implementation (OSDI), {USENIX} (2006) ) ZooKeeper: Wait-free coordination for Internet-scale systems Yahoo Research (USENIX Annual Technology Conference 2010) Apache ZooKeeper Home: http://zookeeper.apache.org/ Presentations: http://www.slideshare.net/mumrah/introduction-to-zookeeper-trihug- may-22-2012 http://www.slideshare.net/scottleber/apache-zookeeper https://cwiki.apache.org/confluence/display/ZOOKEEPER/ZooKeeperPre sentations GNUnify - 2013 27
  • 28. El sistema de archivos de Google El Sistema de Archivos Distribuidos Hadoop MapReduce: Procesamiento simplificado de datos en grandes clusters Bigtable: un sistema de almacenamiento distribuido para datos estructurados PNUTS: Plataforma de servicios de datos alojados de Yahoo! Dynamo: el almacén de valores clave altamente disponible de Amazon Spanner: Base de datos distribuida mundialmente de Google Centrífuga: Gestión Integrada de Arrendamiento y Particionamiento de Servicios en Nube (Microsoft) ZAB: Un simple protocolo de transmisión totalmente ordenado (Yahoo!) Paxos Made Simple de Leslie Lamport. Eventualmente coherente por Werner Vogel (CTO, Amazon) Http://www.highscalability.com/ GNUnify - 2013 28
  • 29. GNUnify - 2013 29 Preguntas?
  • 30. GNUnify - 2013 30 Gracias!