初识 Kitex | 青训营笔记

156 阅读3分钟

文章第一句话为“这是我参与「第五届青训营 」伴学笔记创作活动的第 7 天

前言

项目选型中参考了 kitex,因此做一个记录

一、简介:

Kitex

kitex是一个基于Golang开发的高性能分布式RPC框架。它提供了轻量级、高效的RPC调用和分布式服务治理功能,可用于构建大规模的微服务架构。

特点

  1. 高性能:采用异步I/O模型和协程池,可以实现高并发、低延迟的RPC调用。
  2. 分布式服务治理:支持服务注册、发现、负载均衡、熔断等常见的服务治理功能,可以保证服务的可靠性和高可用性。
  3. 多种传输协议支持:支持TCP、HTTP、gRPC等多种传输协议,可以根据实际需求进行选择。
  4. 代码简洁易用:提供了简单易用的API和文档,开发者可以快速上手。
  5. 具有扩展性:提供了插件式的设计,可以方便地扩展各种功能。

二、涉及技术&知识点:

本文内容

  • kitex 开发环境的搭建
  • 输出 Hello World

三、实践过程:

kitex 暂时没有针对 Windows 做支持,如果本地开发环境是 Windows 建议使用 WSL2 ——来自快速开始 | CloudWeGo

开发工具

  • Visual Studio Code
  • Goland(推荐)

这里链接我以前的文章,感兴趣的可以去看看:梦的开始:走进Go语言基础语言(万字总结) | 青训营笔记

安装Golang

相关链接:

Golang官网go.dev/
Go语言中文网:studygolang.com/dl
七牛云:goproxy.cn/

打开golang官网,下载golang的二进制文件进行安装即可

image.png 如果无法打开官网,也可以使用Go语言中文网提供的镜像下载安装

image.png 安装完成后,如果遇到第三方包无法安装,可以尝试使用七牛云提供的镜像

image.png 对于开发环境的搭建,可以参考:

练习 - 安装 Go - Training | Microsoft Learn

练习 - 安装 Visual Studio Code 和 Go 扩展 - Training | Microsoft Learn

Tips上文开发环境的搭建使用的软件是Visual Studio Code,如果不想使用,或者嫌装插件太麻烦,可以使用JetBrains公司开发的IDE(集成开发环境):GoLand,可省去不少步骤

image.png

GoLand是一个商业付费软件,你可以免费试用30天再决定是否购买。同时,如果你是在校学生,或者你维护着一个开源仓库,你可以向JetBrains公司申请免费试用,这里不再赘述。 相关链接:

学生免费申请:www.jetbrains.com/zh-cn/commu…
开源仓库:www.jetbrains.com/zh-cn/commu…

开发环境搭建

  1. 安装 kitex:go install github.com/cloudwego/kitex/tool/cmd/kitex@latest
  2. 安装 thriftgo:go install github.com/cloudwego/thriftgo@latest

结果验证:

image.png

编写项目

如果完成了上面的步骤,那么可以进行下面的步骤

编写IDL

创建并进入项目文件夹

$ mkdir kitex-test && cd kitex-test

编辑biz.thrift

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)
}

创建kitex项目:

$ mkdir kitex_demo && cd kitex_demo
$ kitex -module kitex-test -service kitex_demo ../biz.thrift
$ go mod tidy

项目结构:

tree /F /A
文件夹 PATH 列表
卷序列号为 34C3-E092
C:.
|   biz.thrift
|   go.mod
|   go.sum
|   
+---.idea
|       .gitignore
|       kitex-test.iml
|       misc.xml
|       modules.xml
|       remote-targets.xml
|       thriftCompiler.xml
|       workspace.xml
|
\---kitex_demo
    |   build.sh
    |   handler.go
    |   kitex.yaml
    |   main.go
    |
    +---kitex_gen
    |   \---api
    |       |   biz.go
    |       |   k-biz.go
    |       |   k-consts.go
    |       |
    |       \---hello
    |               client.go
    |               hello.go
    |               invoker.go
    |               server.go
    |
    +---output
    |   |   bootstrap.sh
    |   |
    |   \---bin
    |           kitex_demo
    |
    \---script
            bootstrap.sh

启动项目

$ go mod edit -replace
$ github.com/apache/thrift=github.com/apache/thrift@v0.13.0
$ go get kitex-test/kitex_demo/kitex_gen/biz
$ sh build.sh
$ ./output/bin/kitex_demo

image.png

四、 引用参考