这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天
今天我们来学习的是cloudwego里面的rpc框架与web框架,这两个框架再加上gorm框架可以说就可以搭建出一个web项目了,像我们小组的大作业就是用的这三件套 首先我们来聚焦CloudWeGo官网的快速上手
kitex简单介绍
我们就长话短说简单介绍一下吧,像kitex原理层面的东西我也不太懂,简单看了一下架构图,与官网的介绍,我用我的语言来介绍一下这个框架,那么kitex就是一个高性能字节跳动内部的 Golang 微服务 RPC 框架,具有高性能、强可扩展的特点,通信方面也是基于一个自研的框架NetPoll,之前好像不支持windows下使用,但是我看到代码仓库有这个issue说明即将更新windwos也能生成代码的环节
用自己的语言来描述一下这个框架
简单使用了一下,大概就是我们用idl语言编写好接口所定义的参数服务,然后使用kitex的命令直接生成微服务,我们只需要往生成的handler里面填充需要的逻辑代码即可
kitex快速上手
比如下面这个idl文件
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 -service a.b.c hello.thrift
该微服务的架构就已经出来了
执行完上述命令后,kitex 工具将更新下述文件
- 更新
./handler.go,在里面增加一个Add方法的基本实现 - 更新
./kitex_gen,里面有框架运行所必须的代码文件
此时就可以直接调用main.go运行服务端了,客户端代码的话只需要引用kitex_gen下面的一个service调用NewClient方法就可以访问了
Hertz简单介绍
Hertz[həːts] 是一个 Golang 微服务 HTTP 框架,在设计之初参考了其他开源框架 fasthttp、gin、echo 的优势,可以说这个框架借鉴了其他三个框架的可取之处 我看了一下官方的描述,高性能、高易用性等都是它的特点,在我的简单学习使用后,确实能感受到它的便捷性
Hertz快速上手
这个上手就真的太简单了,听说慢慢道来,先看下面这个示例
package main
import (
"context"
"github.com/cloudwego/hertz/pkg/app"
"github.com/cloudwego/hertz/pkg/app/server"
"github.com/cloudwego/hertz/pkg/common/utils"
"github.com/cloudwego/hertz/pkg/protocol/consts"
)
func main() {
h := server.Default()
h.GET("/ping", func(c context.Context, ctx *app.RequestContext) {
ctx.JSON(consts.StatusOK, utils.H{"message": "pong"})
})
h.Spin()
}
只需要先调用server.Default(),就得到了h这个对象了,我们就可以直接调用GET or POST去执行对应的方法了,就好像我们启动了SpringBoot,然后就可以直接标识PostMapping等类方法了,后面的第二个参数一般是填函数,在这里直接采取了匿名函数的形式
今天的介绍上手就到这啦,明天我们来讲讲关于大项目的一些事情