使用Kitex框架构建自己的服务|青训营笔记

网友投稿 406 2022-11-14

使用Kitex框架构建自己的服务|青训营笔记

安装Docker/Postman/Git

安装 Minikube 或 Docker Desktop 启动Docker​​安装 Postman客户端 或者​安装 Git 可以按​

Kitex学习文档

Kitex[kaɪt’eks]|字节跳动内部的 Golang 微服务RPC 框架

Kitex 框架及命令行工具,默认支持 ​​thrift​​​ 和 ​​proto3​​​ 两种 IDL,对应的 Kitex 支持 ​​thrift​​​ 和 ​​protobuf​​​ 两种序列化协议。传输上 Kitex 使用扩展的 ​​thrift​​ 作为底层的传输协议(注:thrift 既是 IDL 格式,同时也是序列化协议和传输协议)。IDL 全称是 Interface Definition Language,接口定义语言。

因为涉及到微服务相关的知识点,这里需要先对微服务的意义,以及服务之间的通信方式有所了解,推荐先看一篇RPC框架选型的文章,里面包括​​GRPC​​​、​​Thrift​​​、​​Dubbo​​​、​​Spring Cloud​​​这4种常用的RPC框架,讲述了每种框架的原理,还有示例,​

体验Kitex编写服务

这部分我将参照​​Kitex的quick start​​部分的文档过一下 (quick start文档中先教你运行并扩展一个使用Kitex框架的服务的功能,然后再教你从0开始使用Kitex框架编写自己的服务) ,也会给出一些补充(课中给出Easy Note项目也是一个使用Kitex框架编写完成的服务,比较全,我建议还是先尝试自己从零开始体验一下Kitex的使用,循序渐进,之后再去学习这个项目)

运行一个已有的服务

安装代码生成工具

按照文档中的执行两个​​go install xxx​​​命令之后,将在自己的​​$GOPATH/bin​​路径下找到下载的两个工具

获取示例代码

git clone

选择使用Docker快速启动(这里我在本地下载了Docker Desktop,双击运行之后就能获得Docker环境的支持,懒人必备~)

​​docker ps​​​命令表示查询当前正在运行的Docker容器,​​docker images​​表示查询当前Docker中的所有镜像

文档中借助Docker镜像运行​​客户端实例​​​和​​服务端实例​​​时添加的​​--network host​​参数是用于设定容器与宿主共用网络,这样就能从容器中访问宿主网络了,下面是执行两个命令后,客户端的终端不断打印从服务端返回的响应(这个简单的示例就是一个回声服务,客户端不断向服务端发送message后,服务端返回)

为这个服务添加功能

这一步按照文档中的步骤操作即可,大致的流程如下:

编写自己的服务

创建项目目录,这里按照文档步骤即可

mkdir examplecd

安装与更新Kitex工具,完成后输入kitex如果如文档中所说显示​​command not found​​​,可能是因为没有把​​$GOPATH/bin​​​ 加入到​​$PATH​​ 中

编写IDL,并使用Kitex工具生成项目代码,下面是注意点

// 若当前目录不在 $GOPATH/src 下,需要加上 -module 参数,一般为 go.mod 下的名字 kitex -module

编写echo服务逻辑,编译运行服务端的时候如果遇到如下问题:

解决方案:​​github.com/cloudwego/k…​​(感谢群里的同学)

编写客户端代码并运行

func main() { c, err := echo.NewClient("example", client.WithHostPorts("0.0.0.0:8888")) if err != nil { log.Fatal(err) } req := &api.Request{Message: "my request 啦啦啦"} resp, err := c.Echo(context.Background(), req, callopt.WithRPCTimeout(3*time.Second)) if err != nil { log.Fatal(err) } log.Println(resp)}

后续提升

通过Quick Start部分快速体验了一下Kitex框架构建服务的流程,后续的学习我建议是结合​​Kitex文档​​​与​​Easy Note的​​demo进行强化学习,深入学习Kitex的各种特性。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:jmeter+ant+jenkins自动化测试环境配置搭建过程
下一篇:MySQL查看数据库性能常用命令
相关文章

 发表评论

暂时没有评论,来抢沙发吧~