如果同时一万个服务同时创建 /goods 我想了解下 zookeeper是怎么处理的 大能老师 谢谢您了
来源:7-3 ZooKeeper单机版的安装与常用操作命令

qq_冰封夕阳_5
2022-11-17
如果同时一万个服务同时创建 /goods 我想了解下 zookeeper是怎么处理的 大能老师 谢谢您了
写回答
1回答
-
大能老师
2022-11-17
Node already exists: /goods
。由于所有的写请求都会被Follower节点转发到Leader节点执行,创建节点的请求也是一样的,所以只会由Leader节点创建新的节点,然后把数据同步到其他Follower节点。zookeeper创建节点是由DataTree的createNode方法来执行的。
createNode方法逻辑:
获取到所要创建的新节点的name和其父节点的parentName,创建一个StatPersisted对象来存储新节点的一些状态属性信息;
从名为nodes的ConcurrentHashMap(用于存放所有的节点,key是path字符串,value是DataNode对象)中获取到父节点,然后用synchronized锁住父节点,避免其他请求出现并发问题;
在获取到父节点之后,会将“新节点的路径”添加到“父节点的children的Set集合”中,同时将新节点放到nodes的ConcurrentHashMap中。
022022-11-17
相似问题