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

34|服务注册与监听:Worker节点与etcd交互

你好,我是郑建勋。
这节课,让我们将 Worker 节点变为一个支持 GRPC 与 HTTP 协议访问的服务,让它最终可以被 Master 服务和外部服务直接访问。在 Worker 节点上线之后,我们还要将 Worker 节点注册到服务注册中心。

GRPC 与 Protocol buffers

一般要在微服务中进行远程通信,会选择 GRPC 或 RESTful 风格的协议。我们之前就提到过,GRPC 的好处包括:
使用了 HTTP/2 传输协议来传输序列化后的二进制信息,让传输速度更快;
可以为不同的语言生成对应的 Client 库,让外部访问非常便利;
使用 Protocol Buffers 定义 API 的行为,提供了强大的序列化与反序列化能力;
支持双向的流式传输(Bi-directional streaming)。
GRPC 默认使用 Protocol buffers 协议来定义接口,它有如下特点:
它提供了与语言、框架无关的序列化与反序列化的能力;
它序列化生成的字节数组比 JSON 更小,同时序列化与反序列化的速度也比 JSON 更快;
有良好的向后和向前兼容性。
Protocol buffers 将接口语言定义在以 .proto 为后缀的文件中,之后 proto 编译器结合特定语言的运行库生成特定的 SDK。这个 SDK 文件有助于我们在 Client 端访问,也有助于我们生成 GRPC Server。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文详细介绍了如何将Worker节点转变为支持GRPC与HTTP协议访问的服务,并将其注册到服务注册中心。首先介绍了GRPC与Protocol buffers的特点和使用方法,然后详细讲解了如何使用Protocol buffers协议进行实战。接着介绍了go-micro框架的使用方法,以及如何利用grpc-gateway实现服务同时具备GRPC与HTTP能力。文章还展示了如何将服务注册到etcd注册中心,并进行了功能验证。通过使用go-micro微服务框架实现了GRPC服务器,并将服务注册到etcd注册中心,为微服务提供了丰富的能力。最后,文章提出了课后题,引发读者思考并与作者交流讨论。整体而言,本文详细介绍了技术实现细节,适合读者快速了解并掌握相关技术特点。

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

全部留言(5)

  • 最新
  • 精选
  • shuff1e
    mux := runtime.NewServeMux() 看起来是HandleHTTP没指定路由?name是从body取,还是从query参数取,也没指定?

    作者回复: 都有的,这些就是依靠grpc-gateway生成的文件和函数已经为我们做的事情。

    2022-12-27归属地:北京
  • 出云
    回答一下结尾问题:按文中的写法其实不会出现只返回“Hello”的情况。检查了下代码仓库v3.0.0版本。hello.proto文件中hello方法的option注解少了body字段。按这种写法生成proto文件再次运行,才复现了文末说的问题,所以问题就是出在少了一行`body: "*"`。 (另外,给protoc安装grpc-gateway的两个插件后,生成的hello.pb.micro.go文件中的NewGreeterEndpoints()函数中返回的api.Endpoint对象会多一个不存在的Body字段,需要删掉才能正常编译。)
    2023-03-17归属地:中国香港
    1
    1
  • 出云
    产生多余Body字段的原因也找到了。是因为按文中给的包路径安装不到最新的protoc-gen-micro插件。根据go-micro的官方repo,该插件目前的包路径是` github.com/go-micro/generator/cmd/protoc-gen-micro@latest `。 去$GOPATH/bin 把旧的可执行文件删了,执行`go install 新路径`,再重新生成pb文件即可解决问题。
    2023-03-17归属地:广东
  • tcyi
    google/api/annotations.proto 报错,按照老师提供的方法 不能成功,win10环境
    2023-02-20归属地:山东
  • viclilei
    docker etcd error
    2023-01-11归属地:广东
    1
收起评论
显示
设置
留言
5
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部