Bootstrap

[ CloudWeGo 微服务实践 - 02 ] 上手

目标

实验环境

文档

https://www.cloudwego.io/zh/docs/getting-started/

步骤

环境检查

Go 配置

go env

留意类似如下几项

GO111MODULE="on"
GOBIN="/Users/xxx/go/bin"
GOPATH="/Users/xxx/"
GOPROXY="https://goproxy.io"

安装 kitex 脚手架

# 1、 安装
go install github.com/cloudwego/kitex/tool/cmd/kitex@latest

# 2、是否成功
kitex --version
# 输出
v0.0.6

安装 thriftgo

Thriftgo 是 Go 语言实现的 Thrift IDL 解析和代码生成器

# 1、安装
go install github.com/cloudwego/thriftgo@latest

# 2、是否成功
thriftgo --version
# 输出
thriftgo 0.1.3

创建目录

我们先创建所需目录,一下演示都是将代码放置于 GOPATH 内,因为我们要下载的项目 go.mod 的 module 名包含 目录,所以我们优先创建目录,然后再拉取 expample 代码

# 1、先 cd 到 你的 $GOPATH/src 目录中
cd $GOPATH/src

# 2、执行创建目录的命令
mkdir -p github.com/cloudwego

获取官方示例

在目录 下执行:

git clone git@github.com:cloudwego/kitex-examples.git

运行官方示例

官方文档提供了两种方式,我们选择直接启动,更多方式可以参看

打开两个终端窗口

都进入到 目录下。

运行服务端

比如,我们在左边窗口,执行:

go run .

效果如下:

运行客户端

比如,我们在右边窗口,执行:

go run ./client

效果如下:

能看到一直在打印字符,我们参看 代码也能知晓。

尝试修改服务端代码

我们在 尝试修改服务端逻辑,比如响应的内容随便修改点。

resp = &api.Response{Message: fmt.Sprintf("我收到你的消息了【%s】,谢谢", req.Message)}

重启服务端、客户端,效果如下:

现在我们已经清楚了基本的用法。

新增接口

编辑

新增 一个请求体和一个响应体,并在 service 中新增一个 接口名

# 新增
struct PingRequest {
	1: string message
}

struct PingResponse {
	1: string message
}

service Hello {
  	# 新增
    PingResponse ping(1: PingRequest req)
}

重新生成代码

# hello 目录下执行
kitex -service a.b.c hello.thrift

我们看到在 handler.go 文件中有代码变动

修改客户端

我们改一下调用接口

# 改为调用 ping 接口
req := &api.PingRequest{Message: "ping"}
resp, err := client.Ping(context.Background(), req)

重新运行

总结