一文带你快速入门 Go 语言微服务开发(go微服务教程)

  本篇文章为你整理了一文带你快速入门 Go 语言微服务开发(go微服务教程)的详细内容,包含有go语言开发服务器 go微服务教程 golang 微服务 go-kit微服务入门 一文带你快速入门 Go 语言微服务开发,希望能帮助你了解 一文带你快速入门 Go 语言微服务开发。

  更多详细示例可直接访问 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 users 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 技能

  以上就是一文带你快速入门 Go 语言微服务开发(go微服务教程)的详细内容,想要了解更多 一文带你快速入门 Go 语言微服务开发的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: