Client.jar
- 从zookeeper中获取可用的nameNode。
- 从nameNode上获取可用的dataNode列表。
- 获取dataNode列表后,设置监听,任何一个dataNode节点发生变化,重新获取dataNode列表,初始化hash环(大map)。
- 用DataNode列表初始化hash环的大treeMap<long,ip>,并作虚拟节点。
- 存储数据时,把key做hash,去treeMap中取ip,通过ip做nio传输,调用dataNode.jar。
- 重新封装所有redis的方法,用nio做传输。
NameNode.jar
- 启动时,注册zookeeper服务,注册不上通过getData设置监听,不断注册。
- 在zookeeper上获取DataNode节点列表,封装列表元数据到redis,获取不到设置监听,继续获取。
- 存储管理信息、数据迁移信息、存储库信息、存储表信息
DataNode.jar
- 注册服务(n个)到zookeeper,注册不上通过getData设置监听,不断注册。为什么是n个?因为可能一台机器存在其他机器的备份。
- 通过ip创建redisPool
- 封装jedis的所有方法,写数据
- 从zookeeper中获取nameNode节点,通过nameNode节点获取DataNode备份信息,将数据同步