目录
- RPC 远程调用的说明
- Dubbo 框架说明
- Dubbo Go 介绍
- 应用 Dubbo Go
-
- 环境安装(Mac 系统)
- 完成一次自己定义接口的RPC调用
-
- 拉起一个注册中心-Nacos,如果有现成的,本步骤可忽略,这里用docker快速启动一个nacos
- 服务端实现
- 客户端使用
RPC 远程调用的说明
作用:像调用本地方法一样调用远程方法
和直接HTTP调用的区别:
- 对开发者更透明,减少了很多的沟通成本。
- RPC向远程服务器发送请求时,未必要使用 HTTP 协议,比如还可以用 TCP / IP,性能更高(内部服务更适用)。
调用模型图示:

📢 注意:在整个流程中,最终的调用并不是由注册中心来完成的。虽然注册中心会提供信息,但实际上调用方需要自己进行最后的调用动作。注册中心的作用是告诉调用方提供者的地址等信息,然后调用方会根据这些信息来完成最后的调用。
-
为什么一定要知道注册中心的地址?
因为服务提供者需要将自己提供的接口方法告知注册中心,所以它必须知道注册中心的地址,这样才能将自己的信息上报给注册中心,所以必须要配置注册中心。同样的道理,消费者调用方也需要知道注册中心的地址,以便将注册中心的地址配置到项目中。 -
IDL是什么?
IDL(接口定义语言)是一种约定俗成的语言,用于定义接口和数据结构的语法。它是一种人为约定的语言,通过这种语法,可以明确地定义接口和数据的结构,使各方在交流和协作时能够达成一致。这种约定的语言为不同的系统、平台或语言提供了一种统一的描述方式,使得不同环境下的应用程序能够理解和交互。
Dubbo 框架说明
Dubbo 是一个开源的高性能、轻量级的分布式服务框架,最初由阿里巴巴公司开发并开源。它提供了分布式服务治理、通信框架、智能负载均衡、容错策略等功能,用于帮助开发者构建可扩展、高性能、松耦合的分布式应用。
Dubbo框架,是目前国内非常主流的RPC实现框架。Dubbo底层用的是Triple协议:Triple协议。 —— Dubbo框架官方文档
当前,还有其他类似的框架,比如 GRPC 和 TRPC 等等,这些都是不同的 RPC 远程调用框架,Dubbo 和 GRPC 是比较知名的。
Dubbo 由阿里开发,而 GRPC 是由 Google 开发,TRPC 则是由腾讯开发。
Dubbo Go 介绍
Dubbo Go(也称为 dubbo-go)是 Dubbo 框架的 Go 语言版本,是一个基于 Go 语言开发的分布式服务框架,用于构建高性能、可扩展的分布式应用程序。它提供了与原始 Java 版本类似的功能,允许开发者使用 Go 语言构建分布式应用程序。dubbo-go 可以与 Java 版本的 Dubbo 框架无缝集成,使得在混合语言环境中开发分布式系统更加便捷。
dubbo-go 提供了对 Dubbo 协议的支持,允许 Go 语言服务提供者和消费者之间进行通信,并利用 Dubbo 的治理能力实现服务注册、发现、负载均衡等功能。它也支持多种序列化和网络传输协议,以满足不同场景的需求。
应用 Dubbo Go
环境安装(Mac 系统)
安装 Go语言环境
go version >= go 1.15。
【Go 语言官网下载地址】
安装 序列化工具protoc
- 使用Homebrew安装protoc:
这将会安装 protobuf 和 protoc编译器。brew install protobuf - 验证安装:
如果一切正常,将显示protoc的版本信息。protoc --version
安装 dubbogo-cli 以及相关插件
- 执行以下指令安装dubbogo-cli 至 $GOPATH/bin (控制台输入
go env可以看到GOPATH目录所在)$ export GOPROXY="https://goproxy.cn" $ go install github.com/dubbogo/dubbogo-cli@latest $ dubbogo-cli hello - 安装依赖的工具插件
dubbogo-cli install all - 确保上述安装的工具位于在系统环境变量内
$ protoc --version libprotoc 24.2 $ protoc-gen-go --version protoc-gen-go v1.31.0 $ protoc-gen-go-triple --version protoc-gen-go-triple 1.0.8
❎ 解决报错:zsh: command not found: protoc-gen-go,而其他两个工具都能正常输出版本号信息。
解决:运行 brew install protoc-gen-go 直接安装 protoc-gen-go
运行下面命令(For mac)直接安装 protoc-gen-go,然后再次运行 protoc-gen-go --version 检测正常了。
brew install protoc-gen-go
完成一次自己定义接口的RPC调用
这里使用 IDL(接口调用语言)的方式使用dubbo:创建一个公共的接口定义文件,服务提供者和消费者读取这个文件。优点是跨语言。
拉起一个注册中心-Nacos,如果有现成的,本步骤可忽略,这里用docker快速启动一个nacos
git clone https://github.com/nacos-group/nacos-docker.git
cd nacos-docker
docker-compose -f example/standalone-derby.yaml up
❎ 解决报错:no matching manifest for linux/arm64/v8 in the manifest list entries
原因:如下图,nacos默认不支持在ARM架构安装。只有AMD64版本的。


本文详细介绍了如何使用DubboGo进行RPC远程调用,包括安装Go语言环境、序列化工具、创建服务端和客户端项目,以及配置Nacos注册中心。着重展示了如何定义接口、生成代码、配置环境变量和解决常见问题。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



