首页 > 其他分享 >一文带你快速入门 Go 语言微服务开发 - Dubbo Go 入门实践总结

一文带你快速入门 Go 语言微服务开发 - Dubbo Go 入门实践总结

时间:2022-11-29 17:36:52浏览次数:64  
标签:Dubbo protoc 入门 dubbogo go api triple Go cli

更多详细示例可直接访问 Dubbo 官网 或搜索关注官方微信公众号:Apache Dubbo

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

搜索关注官方微信公众号:Apache Dubbo,了解更多业界最新动态,掌握大厂面试必备 Dubbo 技能

标签:Dubbo,protoc,入门,dubbogo,go,api,triple,Go,cli
From: https://www.cnblogs.com/apache-dubbo/p/16936001.html

相关文章

  • go cobra使用
    安装cobragoget-ugithub.com/spf13/cobra#win需要下载cobra-cligoget-ugithub.com/spf13/cobra-clicobra初始化cobra-cliinit(可以加项目名)  增......
  • redis入门
    概述redis是什么Redis(RemoteDictionaryServer),即远程字典服务,是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多......
  • 【Django】设置 接口
    api.pyfromdss.Serializerimportserializerfromdjango.httpimportHttpResponsedefresponse_as_json(data,foreign_penetrate=False):jsonString=seria......
  • Django-5.常用-笔记
    常用到此为止,关于Django框架的三大块M、V、T已经全部讲完了,接下来学习一些其它的知识点,这些知识点不在三大块范围内,Django提供了这些功能后,可以帮助我们更快更好的完成开发......
  • 我的Gulp入门合集
        说来也惭愧,断断续续学习到不少网页开发的技术(这里我还不敢将自己所学的东西称之为前端,可能还不够称为前端),可却很少去自动接触前端自动化构建的工具。(当然,这也......
  • Django-5.1静态文件-笔记
    静态文件项目中的CSS、图片、js都是静态文件。一般会将静态文件放到一个单独的目录中,以方便管理。在html页面中调用时,也需要指定静态文件的路径,Django中提供了一种解析的方......
  • JAVA面试题--Dubbo
    Dubbo1.Dubbo是什么?2.为什么要用Dubbo?3.Dubbo和Dubbox有什么区别?4.dubbo都支持什么协议,推荐用哪种?5.Dubbo需要Web容器吗?6.Dubbo内置了哪几种服务容器?7.Dubbo......
  • Django-4.4CSRF跨站请求伪造-笔记
    CSRFCSRF全拼为CrossSiteRequestForgery,译为跨站请求伪造。CSRF指攻(敏感词)击者盗用了你的身份,以你的名义发送恶意请求。CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取......
  • Django-4.5验证码-笔记
    验证码在用户注册、登录页面,为了防止暴力请求,可以加入验证码功能,如果验证码错误,则不需要继续处理,可以减轻业务服务器、数据库服务器的压力。手动实现验证码接下来的代码不要......
  • 浅谈Google蜘蛛抓取的工作原理
    首先,Google蜘蛛寻找新的页面。然后,Google对这些页面进行索引,以了解它们的内容,并根据检索到的数据对它们进行排名。爬行和索引是两个不同的过程,但是,它们都由爬行器执行。......