Go 进阶 · 分布式爬虫实战
郑建勋
Go 语言技术专家,《Go 语言底层原理剖析》作者
15839 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 58 讲
Go 进阶 · 分布式爬虫实战
15
15
1.0x
00:00/00:00
登录|注册

46|Master任务调度:服务发现与资源管理

你好,我是郑建勋。
在上一节课程中,我们实现了 Master 的选主,这一节课,我们继续深入 Master 的开发,实现一下 Master 的服务发现与资源的管理。

Master 服务发现

首先我们来实现一下 Master 对 Worker 的服务发现。
Master 需要监听 Worker 节点的信息,感知到 Worker 节点的注册与销毁。和服务的注册一样,我们的服务发现也使用 micro 提供的 registry 功能,代码如下所示。
m.WatchWorker 方法调用 registry.Watch 监听 Worker 节点的变化,watch.Next() 会堵塞等待节点的下一个事件,当 Master 收到节点变化事件时,将事件发送到 workerNodeChange 通道。m.Campaign 方法接收到变化事件后,会用日志打印出变化的信息。
func (m *Master) Campaign() {
...
workerNodeChange := m.WatchWorker()
for {
select {
...
case resp := <-workerNodeChange:
m.logger.Info("watch worker change", zap.Any("worker:", resp))
}
}
}
func (m *Master) WatchWorker() chan *registry.Result {
watch, err := m.registry.Watch(registry.WatchService(worker.ServiceName))
if err != nil {
panic(err)
}
ch := make(chan *registry.Result)
go func() {
for {
res, err := watch.Next()
if err != nil {
m.logger.Info("watch worker service failed", zap.Error(err))
continue
}
ch <- res
}
}()
return ch
}
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入介绍了Master任务调度中的服务发现与资源管理的技术细节。首先,通过使用go-micro提供的registry功能,Master实现了对Worker节点的服务发现,感知到Worker节点的注册与销毁。其次,文章详细解析了go-micro的registry接口和Watch方法的实现原理,以及Worker节点利用registry接口的Register方法实现服务的注册。此外,文章展示了服务发现的效果,包括节点注册和删除的日志信息。另外,文章介绍了Master如何维护Worker节点信息的方法,通过获取当前集群中全量的Worker节点,并比较集群中新旧节点的变化。此外,文章还介绍了Master为资源加上ID信息的实现,使用了分布式的雪花算法来保证生成ID全局唯一,并验证了资源分配的效果。总的来说,本文通过具体的代码实现和效果展示,深入解析了Master任务调度中的服务发现与资源管理的技术细节,为读者提供了全面的了解和实践指导。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Go 进阶 · 分布式爬虫实战》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(2)

  • 最新
  • 精选
  • Realm
    1 “当 Master 成为新的 Leader 后,我们还要全量地获取一次 etcd 中当前最新的资源信息,并把它保存到内存中”, 当添加单个task任务时,使用事件监听; 事件监听机制在服务异常时可能丢信息? 望勋哥指点. 2 雪花算法生成的id有可能会出现重复。 如一个节点时,把服务器时钟回拨的情况; 多个节点时候,假如服务器的标志位一样,同一毫秒不同的节点可能产生的id相同;
    2023-02-01归属地:浙江
    1
  • 胡军
    老师语速好快,都来不及思考和看文档😅
    2023-02-02归属地:浙江
收起评论
显示
设置
留言
2
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部