34|服务注册与监听:Worker节点与etcd交互
郑建勋
你好,我是郑建勋。
这节课,让我们将 Worker 节点变为一个支持 GRPC 与 HTTP 协议访问的服务,让它最终可以被 Master 服务和外部服务直接访问。在 Worker 节点上线之后,我们还要将 Worker 节点注册到服务注册中心。
GRPC 与 Protocol buffers
使用了 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
《Go 进阶 · 分布式爬虫实战》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(5)
- 最新
- 精选
- shuff1emux := 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归属地:中国香港11
- 出云产生多余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归属地:广东
- tcyigoogle/api/annotations.proto 报错,按照老师提供的方法 不能成功,win10环境2023-02-20归属地:山东
- viclileidocker etcd error2023-01-11归属地:广东1
收起评论