目录
- dubbo-go 是什么
- dubbo-go 快速入门
- 环境安装(Mac 系统)
- 安装 Go语言环境
- 安装 序列化工具protoc
- 安装 dubbogo-cli 以及相关插件
- 解决报错:`zsh: command not found: protoc-gen-go`,而其他两个工具都能正常输出版本号信息。
- 完成依次自己定义接口的RPC调用
- 服务端实现
- 1. 首先使用 dubbogo-cli 创建 IDC 服务
- 2. 编辑proto定义我们的接口,目录 api/api.proto 修改后如下:
- 3. 生成代码
- 4. 调整service目录:pkg/service/service.go 修改后的代码如下
- 5. 调整 conf/dubbogo.yaml 中的provider部分
- 6. 拉起一个依赖的注册中心,nacos,如果你有现成的,本步骤可以忽略,我们使用docker来快速启动一个nacos。
- 解决报错:`no matching manifest for linux/arm64/v8 in the manifest list entries`
- 7. 最后,启动服务端
dubbo-go 是什么
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
,而其他两个工具都能正常输出版本号信息。
运行下面命令(For mac)直接安装 protoc-gen-go,然后再次运行 protoc-gen-go --version
检测正常了。
brew install protoc-gen-go
完成依次自己定义接口的RPC调用
服务端实现
1. 首先使用 dubbogo-cli 创建 IDC 服务
$ dubbogo-cli newApp IDC
$ cd IDC
2. 编辑proto定义我们的接口,目录 api/api.proto 修改后如下:
syntax = "proto3";
package api;
option go_package = "./;api";
service Generator {
rpc GetID (GenReq) returns (GenResp) {}
}
message GenReq {
string appId = 1;
}
message GenResp {
string id = 1;
}
3. 生成代码
$ cd api
$ protoc --go_out=. --go-triple_out=. ./api.proto
4. 调整service目录:pkg/service/service.go 修改后的代码如下
type GeneratorServerImpl struct {
api.UnimplementedGeneratorServer
}
func (s *GeneratorServerImpl) GetID(ctx context.Context, in *api.GenReq) (*api.GenResp, error) {
logger.Infof("Dubbo-go GeneratorProvider AppId = %s\n", in.AppId)
uuid, err := uuid.NewV4()
if err != nil {
logger.Infof("Dubbo-go GeneratorProvider get id err = %v\n", err)
return nil, err
}
return &api.GenResp{Id: uuid.String()}, nil
}
func init() {
config.SetProviderService(&GeneratorServerImpl{})
}
5. 调整 conf/dubbogo.yaml 中的provider部分
dubbo:
registries:
nacos:
protocol: nacos
address: 127.0.0.1:8848
protocols:
triple:
name: tri
port: 20000
provider:
services:
GeneratorServerImpl:
interface: "" # read from stub
6. 拉起一个依赖的注册中心,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版本的。
-
解决方法:去 docker hub 上搜索支持ARM架构的镜像。
# 下载镜像 $ docker pull nacos/nacos-server:v2.1.2-slim # 查看下载的镜像 $ docker images # 创建 docker-compose.yml $ vim docker-compose.yml # 启动该镜像
编写 docker-compose
$ vim docker-compose.yml
version: '2' services: nacos: image: nacos/nacos-server:v2.1.2-slim # 镜像`nacos/nacos-server:v2.1.2-slim` container_name: nacos # 容器名为'nacos' restart: always # 指定容器退出后的重启策略为始终重启 volumes: # 数据卷挂载路径设置,将本机目录映射到容器目录 - ./data/nacos/logs:/home/nacos/logs environment: TZ: Asia/Shanghai LANG: en_US.UTF-8 MODE: standalone # 单机模式启动 ports: # 映射端口 - "8848:8848" cpu_shares: 4 mem_limit: 2048M
启动 nacos
$ docker compose up
启动成功后,可以看到如下界面:
可以去 nacos 注册中心看一下,访问http://自己服务的IP地址:8848/nacos/index.html
默认用户名和密码都是nacos
7. 最后,启动服务端
export DUBBO_GO_CONFIG_PATH=conf/dubbogo.yaml
go run cmd/app.go