1、Dubbo-go 3.0 让 gRPC 更强大主讲人:于雨于雨 360云平台基础架构团队负责人演讲嘉宾介绍 dubbogo 社区负责人 Pika 项目负责人 阿里开源先锋人物、阿里开源大使 2022 开放原子开源基金会 年度开源贡献之星 2022 信通院 OSCAR 尖峰开源人物CONTENT目录目录2023K+0 01 1简介:Dubbo 与 gRPCDubbo-go Triple 更易用的 gRPC 协议与框架实现Dubbo-go 为 gRPC 协议带来微服务治理能力 0 02 20 03 3总结与规划0 04 4Part 01Dubbo 与 gRPC 简介gRPC 简介:gRPC 是什么
2、?gRPC-ServergRPC-ServergRPC-ServergRPC-GatewayAPI ClientRest api(JSON Over HTTP/1.1)1.HTTP/22.双向通信3.Protocol Buffers4.强类型5.多语言 SDK1.高性能2.跨平台、跨语言3.易于使用4.穿透性强5.可扩性6.生态丰富gRPC 的设计原则与功能Dubbo 简介:Dubbo 是什么?RPCWEB服务发现流量管控可观测认证鉴权丰富生态全链路追踪Dubbo 数据面Dubbo Admin 抽象控制面Dubbo 数据面Triple ProtocolDubboConsumerDubboPro
3、vider服务发现、流量管控等治理数据流ZookeeperNacosConsoleKubernetesIstioDubbo 简介:基本架构Part 02Dubbo-go Triple 更易用的 gRPC 协议与框架实现Triple 协议参考参考 gRPC、gRPC-Web、通用 HTTP 等多种协议,最终设计成为一个易于浏览器访问、完全兼容 gRPC 且支持 Streaming 通信的协议,Triple 支持同时运行在 HTTP/1、HTTP/2 协议之上。Triple 核心设计目标如下:1.Triple 设计对人类、开发调试友好的 HTTP-based 协议,尤其是对 unary RPC 请
4、求。2.完全兼容 gRPC 协议,Triple 协议可实现 100%与 gRPC 体系互调互通。3.仅依赖标准的、被广泛使用的 HTTP 特性,实现仅依赖官方的标准 HTTP 网络库。Dubbo-go 中的 Triple 协议设计详解Triple 协议与 gRPC 协议的关系(A Better gRPC)gRPC 协议仅支持 HTTP/2,实现复杂、绑定 IDL、难以调试等,Triple 尝试规避所有这些问题:1.Triple 可以为浏览器、HTTP API、curl 提供直接访问。2.Triple 支持使用 curl|jq 或者 Chrome 工具调试服务,直接传入 JSON 结构体调用服务
5、。3.dubbo-go 协议部分实现仅有几千行代码,代码维护和问题排查更简单。4.dubbo-go 使用官方 go http 库,同时相比 gRPC 自行维护的 http 协议库维持了接近的性能水准。5.gRPC 专注协议通信,dubbo-go 原生提供服务治理能力支持。gRPC 工作模式回顾gRPC-ServergRPC-ServergRPC-ServergRPC-GatewayAPI ClientRest api(JSON Over HTTP/1.1)Triple 协议通信模式Triple 协议通信模式Dubbo-goDubbo-goDubbo-gogRPC-clientAPI Clien
6、tgRPC-servercURLDubbo-go 微服务开发 定义服务Dubbo-go 的推荐使用 Protocol Buffer(IDL)来定义一个 RPC 服务。Dubbo-go 微服务开发 编译服务1 首先,需要安装相关的代码生成工具,这包括 buf、protoc-gen-go、protoc-gen-dubbo-go2 使用 buf 包装的 Protoc 编译并生成代码3 生成代码代码结构如下Dubbo-go 微服务开发 server 编码添加业务逻辑了,实现 greetv1triple.GreeterClient 接口注册服务,启动 Dubbo-