美文网首页Zookeeper学习
Zookeeper开发(05)任务队列化

Zookeeper开发(05)任务队列化

作者: 郭艺宾 | 来源:发表于2019-01-20 00:44 被阅读1次

系统最后的组件为Client应⽤程序队列化新任务,以便从节点执⾏这些任务,我们会在/tasks节点下添加⼦节点来表⽰需要从节点需要执⾏的命令。我们将会使⽤有序节点,这样做有两个好处,第⼀,序列号指定了任务被队列化的顺序;第⼆,可以通过很少的⼯作为任务创建基于序列号的唯⼀路径。我们的Client代码如下:

①我们在/tasks节点下创建znode节点来标识⼀个任务,节点名称前缀为task-。

②因为我们使用的是CreateMode.SEQUENTIAL模式的节点,task-后面会跟随⼀个单调递增的数字,这样就可以保证为每个任务创建的znode节点的名称是唯⼀的,同时ZooKeeper会确定任务的顺序。

③我们⽆法确定使用CreateMode.SEQUENTIAL调用create的序列号,create⽅法会返回新建节点的名称。

④如果我们在执⾏create时遇到连接丢失,我们需要重试create操作。因为多次执⾏创建操作,也许会为⼀个任务建立多个znode节点,对于⼤多数⾄少执⾏⼀次(execute-at-least-once)策略的应用程序,也没什么问题。对于某些最多执⾏⼀次(execute-at-most-once)策略的应用程序,我们就需要多⼀些额外⼯作:我们需要为每⼀个任务指定⼀个唯⼀的ID(如会话ID),并将其编码到znode节点名中,在遇到连接丢失的异常时,我们只有在/tasks下不存在以这个会话ID命名的节点时才重试命令。

当我们运⾏Client应⽤程序并发送⼀个命令时,/tasks节点下就会创建⼀个新的znode节点,该节点并不是临时性节点,因此即使Client程序结束了,这个节点依然会存在。

相关文章

  • Zookeeper开发(05)任务队列化

    系统最后的组件为Client应⽤程序队列化新任务,以便从节点执⾏这些任务,我们会在/tasks节点下添加⼦节点来表...

  • iOS开发之GCD并发队列

    iOS开发多线程之GCDiOS开发之GCD同步任务加强iOS开发之GCD串行队列iOS开发之GCD并发队列 03 ...

  • iOS开发多线程之GCD

    iOS开发多线程之GCDiOS开发之GCD同步任务加强iOS开发之GCD串行队列iOS开发之GCD并发队列 GCD...

  • iOS开发之GCD同步任务加强

    iOS开发多线程之GCDiOS开发之GCD同步任务加强iOS开发之GCD串行队列iOS开发之GCD并发队列 004...

  • 七、GCD与多线程

    队列与任务的组合 在多线程开发中我们经常会遇到这些概念:并发队列、串行队列、同步任务、异步任务。我们将这四个概念进...

  • iOS开发之GCD串行队列

    iOS开发多线程之GCDiOS开发之GCD同步任务加强iOS开发之GCD串行队列iOS开发之GCD并发队列 实例d...

  • Zookeeper应用之——队列(Queue)

    Zookeeper应用之——队列(Queue) 为了在Zookeeper中实现分布式队列,首先需要设计一个znod...

  • celery--turorial

    Celery Celery (芹菜)是基于Python开发的分布式任务队列。它支持使用任务队列的方式在分布的机器/...

  • celery redis rabbitMQ各是什么及之间的区别?

    Celery: Celery是基于Python开发的分布式任务队列。它支持使用任务队列的方式在分布的机器/进程/线...

  • Bison眼中的iOS开发多线程是这样的(三)

    队列:队列负责管理开发者提交的任务,GCD队列始终以先进先出的方式来处理任务,但由于任务的执行时间并不相同,因此先...

网友评论

    本文标题:Zookeeper开发(05)任务队列化

    本文链接:https://www.haomeiwen.com/subject/pgqbdqtx.html