最近一直在忙WebPageTest(以下简称wpt)开源库的修改工作,其中一项工作需要将zookeeper(以下简称zk)集成到wpt里。zk作为分布式系统的同步工具,实现了写的原子性(要么失败,要么成功,并不存在写一半的情况),并通过“选举组长“和”重选组长“,在负载均衡的同时保证数据一致性。关于zk服务端的设计,可以参考官网http://zookeeper.apache.org/。
本文阐述zk客户端的实现,一来可以梳理下思路,二来也可作为阅读笔记。
zk客户端代码比较少,完全采用C语言来实现,包括:
1、hashtable的实现
hashtable的实现,包括hashtable.h,hashtable.c,hashtable_itr.h和hashtable_itr.c。从代码中可以看到,hashtable的方式基本是按照JAVA中的hash表实现的。进一步讲,ha

本文详细介绍了Zookeeper客户端的实现,包括C语言实现的hashtable、序列化与反序列化机制,以及核心的_zhandle结构和IO、Complete线程的工作原理。在集成Zookeeper到WebPageTest时,还遇到了winconfig.h的类型冲突问题并给出了解决方案。
1124

被折叠的 条评论
为什么被折叠?



