kitex与hertz快速入门| 青训营笔记

352 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 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 工具将更新下述文件

  1. 更新 ./handler.go,在里面增加一个 Add 方法的基本实现
  2. 更新 ./kitex_gen,里面有框架运行所必须的代码文件

此时就可以直接调用main.go运行服务端了,客户端代码的话只需要引用kitex_gen下面的一个service调用NewClient方法就可以访问了


Hertz简单介绍

Hertz[həːts] 是一个 Golang 微服务 HTTP 框架,在设计之初参考了其他开源框架 fasthttpginecho 的优势,可以说这个框架借鉴了其他三个框架的可取之处 我看了一下官方的描述,高性能高易用性等都是它的特点,在我的简单学习使用后,确实能感受到它的便捷性


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等类方法了,后面的第二个参数一般是填函数,在这里直接采取了匿名函数的形式


今天的介绍上手就到这啦,明天我们来讲讲关于大项目的一些事情