分布式服务(Driver-Worker模式)通信场景记录

场景描述

现有两种节点,分别是中心节点(Driver)和工作节点(Worker),中心节点负责调度工作节点。中心节点一般有1-3个,工作节点可有很多个。现在要实现Driver和Worker之间的通信,Driver发布命令后所有Worker都需要执行,并且Driver需要能获取到有哪些Worker执行完成了,哪些还未完成。

场景抽象

将命令抽象为一种消息,Driver为消息生产者,Worker为消息消费者
RabbitMQ是一种很常见的消息队列,其中的Topic模式可以实现消息的分发和接受,但是Driver无法获取到Worker执行的情况
Zookeeper也可以用来处理异步通信,Driver注册一个节点以后,Worker监听这个节点,然后做相应的操作来改变这个节点,Driver通过获取这个节点的信息,从而知道Worker的完成情况。

实现

1.driver创建节点,节点携带三类信息

  • 待消费信息
  • 哪些节点需要消费该信息-UNDOList
  • 哪些节点完成消费(初始为空)-DONEList

2.worker监听,判断是否完成该操作,完成操作后将自己加入DONEList
3.driver监听,返回完成情况

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值