世界上并没有完美的程序,但是我们并不因此而沮丧,因为写程序就是一个不断追求完美的过程。
-
zk是以树状结构进行存储的,树的结点znode分为持久节点、临时节点、顺序节点、临时顺序节点
-
zk集群中有主节点和从节点,主节点的主要功能是分配任务,从节点的主要功能是执行任务
-
首先,主节点会创建三个持久节点:/workers、/tasks、/assing:
- /workers用来存储从节点
- /tasks用来发布任务
- /assing用来接收任务
-
当从节点连接到主节点后,会在/workers中创建一个代表从节点的临时节点,并在/assing中创建一个任务监听节点,并设置任务监听器
-
当客户端连接到主节点后,会在/tasks中发布任务并设置监听器等待执行结果
-
当主节点监听到客户端发布的任务以后,会访问/workers节点,从中选取可以执行该任务的从节点,并在/assing中通知选中的从节点执行任务
-
当从节点在/assing中监听到有任务要执行时,就会执行分配给自己的任务,当任务执行完成后会在/tasks中返回任务的执行状态
-
客户端监听到从节点执行任务的结果,从而获取
-
至此,整个调用过程就结束了