一文带你快速入门 Go 语言微服务开发 - Dubbo Go 入门实践总结
2022/12/1 4:24:06
本文主要是介绍一文带你快速入门 Go 语言微服务开发 - Dubbo Go 入门实践总结,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1. 安装Go语言环境
建议使用最新版 go 1.17
go version >= go 1.15
【Go 语言官网下载地址】
将 $GOPATH/bin 加入环境变量
2. 安装序列化工具protoc
【protoc 下载地址】
3. 安装 dubbogo-cli 以及相关插件
执行以下指令安装dubbogo-cli 至 $GOPATH/bin
$ export GOPROXY="https://goproxy.cn" $ go install github.com/dubbogo/dubbogo-cli@latest $ dubbogo-cli hello
安装依赖的工具插件
$ dubbogo-cli install all
确保上述安装的工具位于在系统环境变量内
$ protoc --version libprotoc 3.14.0 $ protoc-gen-go --version protoc-gen-go v1.26.0 $ protoc-gen-go-triple --version protoc-gen-go-triple 1.0.8
4. 生成 Demo 项目
使用安装好的 dubbogo-cli 工具,创建demo工程。
$ mkdir quickstart $ cd quickstart $ dubbogo-cli newDemo . $ tree . . ├── api │ ├── samples_api.pb.go │ ├── samples_api.proto │ └── samples_api_triple.pb.go ├── go-client │ ├── cmd │ │ └── client.go │ └── conf │ └── dubbogo.yaml ├── go-server │ ├── cmd │ │ └── server.go │ └── conf │ └── dubbogo.yaml └── go.mod
可看到生成的项目中包含一个 client 项目和一个 server 项目,以及相关的配置文件。
4.1 查看接口描述文件 helloworld.proto
syntax = "proto3"; package api; option go_package = "./;api"; // The greeting service definition. service Greeter { // Sends a greeting rpc SayHello (HelloRequest) returns (User) {} // Sends a greeting via stream rpc SayHelloStream (stream HelloRequest) returns (stream User) {} } // The request message containing the user's name. message HelloRequest { string name = 1; } // The response message containing the greetings message User { string name = 1; string id = 2; int32 age = 3; }
demo项目中,默认生成了一个接口描述文件,接口服务名为 api.Greeter, 包含两个 RPC 方法,入参为 HelloRequest,返回值为 User,两个方法分别为普通 RPC 方法和 Streaming 类型 RPC 方法。
4.2 (*可选) 使用安装好的编译工具编译 pb 接口
$ cd api $ protoc --go_out=. --go-triple_out=. ./samples_api.proto
参数意义:--go_out=.
使用上述安装的 protoc-gen-go
插件,生成文件到当前目录,--go-triple_out=.
使用上述安装的 protoc-gen-go-triple
插件,生成文件到当前目录。
执行该指令后,会生成两个文件,分别是helloworld.pb (包含 proto 结构) 和 helloworld_triple.pb.go (包含 triple 协议接口)。
在 demo 工程中,预先生成好了这两个文件,修改 .proto 文件后重新执行命令生成,即可覆盖。
5. 开启一次RPC调用
项目根目录执行
$ go mod tidy
拉取到最新的框架依赖:
module helloworld go 1.17 require ( dubbo.apache.org/dubbo-go/v3 v3.0.1 github.com/dubbogo/grpc-go v1.42.9 github.com/dubbogo/triple v1.1.8 google.golang.org/protobuf v1.27.1 ) require ( ... )
先后启动服务端和客户端: 开启两个终端,在 go-server/cmd 和 go-client/cmd 文件夹下分别执行 go run .
, 可在客户端看到输出:
client response result: name:"Hello laurence" id:"12345" age:21
获得调用结果成功
6. 更多
细心的读者可以发现,以上例子编写的的服务端可以接受来自客户端的普通RPC、流式RPC调用请求。目前只编写了普通调用的Client,读者可以根据 samples 库中的例子来尝试编写流式客户端和服务端。
更多samples可以参阅 dubbo-go-samples
这篇关于一文带你快速入门 Go 语言微服务开发 - Dubbo Go 入门实践总结的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-15SendGrid 的 Go 客户端库怎么实现同时向多个邮箱发送邮件?-icode9专业技术文章分享
- 2024-11-15SendGrid 的 Go 客户端库怎么设置header 和 标签tag 呢?-icode9专业技术文章分享
- 2024-11-12Cargo deny安装指路
- 2024-11-02MongoDB项目实战:从入门到初级应用
- 2024-11-01随时随地一键转录,Google Cloud 新模型 Chirp 2 让语音识别更上一层楼
- 2024-10-25Google Cloud动手实验详解:如何在Cloud Run上开发无服务器应用
- 2024-10-24AI ?先驱齐聚 BAAI 2024,发布大规模语言、多模态、具身、生物计算以及 FlagOpen 2.0 等 AI 模型创新成果。
- 2024-10-20goland工具下,如修改一个项目的标准库SDK的版本-icode9专业技术文章分享
- 2024-10-17Go学习:初学者的简单教程
- 2024-10-17Go学习:新手入门完全指南