99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

Kitex 快速開始

2022-04-26 09:55 更新

準備 Golang 開發(fā)環(huán)境

  • 如果您之前未搭建 Golang 開發(fā)環(huán)境, 可以參考 Golang 安裝
  • 推薦使用最新版本的 Golang,我們保證最新三個正式版本的兼容性(現(xiàn)在 >= v1.16)。
  • 確保打開 go mod 支持 (Golang >= 1.15時,默認開啟)
  • kitex 暫時沒有針對 Windows 做支持,如果本地開發(fā)環(huán)境是 Windows 建議使用 WSL2

快速上手

在完成環(huán)境準備后,本章節(jié)將幫助你快速上手 Kitex

安裝代碼生成工具

首先,我們需要安裝使用本示例所需要的命令行代碼生成工具:

1、確保 ?GOPATH ?環(huán)境變量已經被正確地定義(例如 ?export GOPATH=~/go?)并且將?$GOPATH/bin?添加到 ?PATH ?環(huán)境變量之中(例如 ?export PATH=$GOPATH/bin:$PATH?);請勿將 ?GOPATH ?設置為當前用戶沒有讀寫權限的目錄
2、安裝 kitex:?go install github.com/cloudwego/kitex/tool/cmd/kitex@latest ?
3、安裝 thriftgo:?go install github.com/cloudwego/thriftgo@latest?

安裝成功后,執(zhí)行 ?kitex --version? 和 ?thriftgo --version? 應該能夠看到具體版本號的輸出(版本號有差異,以 ?x.x.x? 示例):

$ kitex --version
vx.x.x

$ thriftgo --version
thriftgo x.x.x

4、如果在安裝階段發(fā)生問題,可能主要是由于對 Golang 的不當使用造成,請依照報錯信息進行檢索

確定代碼放置位置

1、若將代碼放置于 ?$GOPATH/src? 下,需在 ?$GOPATH/src? 下創(chuàng)建額外目錄,進入該目錄后再獲取代碼:

mkdir -p $(go env GOPATH)/src/github.com/cloudwego
cd $(go env GOPATH)/src/github.com/cloudwego

2、若將代碼放置于 GOPATH 之外,可直接獲取

獲取示例代碼

你可以直接點擊 此處 下載示例倉庫

也可以克隆該示例倉庫到本地 ?git clone https://github.com/cloudwego/kitex-examples.git?

運行示例代碼

方式一:直接啟動

  • 進入示例倉庫的 hello 目錄

?cd kitex-examples/hello ?

  • 運行 server

?go run . ?

  • 運行 client

另起一個終端后,?go run ./client?

方式二:使用 Docker 快速啟動

  • 進入示例倉庫目錄

?cd kitex-examples ?

  • 編譯項目

?docker build -t kitex-examples . ?

  • 運行 server

?docker run --network host kitex-examples ./hello-server ?

  • 運行 client

另起一個終端后,?docker run --network host kitex-examples ./hello-client ?

恭喜你,你現(xiàn)在成功通過 Kitex 發(fā)起了 RPC 調用。

增加一個新的方法 

打開 ?hello.thrift?,你會看到如下內容:

namespace go api

struct Request {
        1: string message
}

struct Response {
        1: string message
}

service Hello {
    Response echo(1: Request req)
}

現(xiàn)在讓我們?yōu)樾路椒ǚ謩e定義一個新的請求和響應,?AddRequest ?和 ?AddResponse?,并在 ?service Hello? 中增加 ?add ?方法:

namespace go api

struct Request {
        1: string message
}

struct Response {
        1: string message
}

struct AddRequest {
  1: i64 first
  2: i64 second
}

struct AddResponse {
  1: i64 sum
}

service Hello {
    Response echo(1: Request req)
    AddResponse add(1: AddRequest req)
}

完成之后 ?hello.thrift? 的內容應該和上面一樣。

重新生成代碼

運行如下命令后,?kitex ?工具將根據(jù) ?hello.thrift? 更新代碼文件。

kitex -service a.b.c hello.thrift

# 若當前目錄不在 $GOPATH/src 下,需要加上 -module 參數(shù),一般為 go.mod 下的名字
kitex -module "your_module_name" -service a.b.c hello.thrift

執(zhí)行完上述命令后,?kitex ?工具將更新下述文件

  1. 更新 ?./handler.go?,在里面增加一個 ?Add ?方法的基本實現(xiàn)
  2. 更新 ?./kitex_gen?,里面有框架運行所必須的代碼文件

更新服務端處理邏輯

上述步驟完成后,?./handler.go? 中會自動補全一個 ?Add ?方法的基本實現(xiàn),類似如下代碼:

// Add implements the HelloImpl interface.
func (s *HelloImpl) Add(ctx context.Context, req *api.AddRequest) (resp *api.AddResponse, err error) {
        // TODO: Your code here...
        return
}

讓我們在里面增加我們所需要的邏輯,類似如下代碼:

// Add implements the HelloImpl interface.
func (s *HelloImpl) Add(ctx context.Context, req *api.AddRequest) (resp *api.AddResponse, err error) {
        // TODO: Your code here...
        resp = &api.AddResponse{Sum: req.First + req.Second}
        return
}

增加客戶端調用

服務端已經有了 ?Add ?方法的處理,現(xiàn)在讓我們在客戶端增加對 ?Add ?方法的調用。

在 ?./client/main.go? 中你會看到類似如下的 ?for ?循環(huán):

for {
        req := &api.Request{Message: "my request"}
        resp, err := client.Echo(context.Background(), req)
        if err != nil {
                log.Fatal(err)
        }
        log.Println(resp)
        time.Sleep(time.Second)
}

現(xiàn)在讓我們在里面增加 ?Add ?方法的調用:

for {
        req := &api.Request{Message: "my request"}
        resp, err := client.Echo(context.Background(), req)
        if err != nil {
                log.Fatal(err)
        }
        log.Println(resp)
        time.Sleep(time.Second)
        addReq := &api.AddRequest{First: 512, Second: 512}
        addResp, err := client.Add(context.Background(), addReq)
        if err != nil {
                log.Fatal(err)
        }
        log.Println(addResp)
        time.Sleep(time.Second)
}

重新運行示例代碼

關閉之前運行的客戶端和服務端之后

  • 運行 server

?go run . ?

  • 運行 client

另起一個終端后,?go run ./client ?

現(xiàn)在,你應該能看到客戶端在調用 Add 方法了。


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號