传统的单进程编程中,使用队列 存储一些数据结构,用来在多线程中共享或传递数据,
在分布式环境下,同样需要类似 单进程编程中的 用来实现跨进程 跨主机 跨网络的数据共享和数据传递 -- 分布式队列‘
zookeeper可以通过顺序节点 实现 分布式队列
分布式队列指的是当多客户端进入队列后 依照排队的顺序(持久化序列化生成节点)进行相应的读取
(读取时依照节点大小排序后读取对应的节点数据即可 然后删除排队节点)
架构图:
zookeeper集群:
/zookeeper
/queue
/element1
/element2
/element3
客户端请求:
生产者:
服务器处理请求:
消费者
生产者算法(入队算法):
创建持久的序列化的顺序节点
消费者算法(出队算法):
1/首先读取queue节点下的所有子节点
2/针对所有子节点 根据序列号进行排序
3/读取第一个子节点的数据并返回
4/删除读取的子节点
阻塞式:
在队列中为空时,服务器一直处于阻塞状态直到读取到队列中最新的数据为止。
测试的时候注意延迟调度执行 入队操作