本期内容介绍:
1. Hz 运转模式介绍
2.Demo 实践:利用 Hz 创立 HTTP 服务
01 Hz 运转模式介绍
Hz 在生成代码的时候总共需要三个东西:Hz、Thriftgo 和 Thriftgo 插件 thrift-gen-hertz。
现在咱们的指令行东西 Hz 有两种运转方式:其一,Hz 东西本身作为一个指令行东西存在;其二,它也会作为一个 Thriftgo 的插件来运转。
Hz 运转的整个流程如下:1. 当用户使用了 Hz 指令后,Hz 东西本身会被体系调用,生成一些 Layout 相关代码,比方 Main 函数、Gomod 等文件。同时,Hz 会拼接 Thriftgo 指令调用 Thriftgo 来生成与 IDL 定义相关的代码;2. Thriftgo 会解析 IDL 并生成对应的语法树,然后将语法树以及透传给插件的选项一同写入到规范输入中;3. 当插件得到了这些语法树以及选项之后,插件会先在规范输入中读取到 Thriftgo 传过来的内容,然后解析语法树,并依据用户在 IDL 中拓宽的相关 HTTP 注解来生成目标文件的内容;4. 当 thrift-gen-hertz 插件履行结束后,会经过规范输出的形式将成果回来,Thriftgo 会从中读入插件的履行成果,并生成目标文件;5. 将整个流程履行的成果回来给咱们的指令行 Hz 东西,指令行东西会将终究的成果呈现给用户。
02 Demo 实践:利用 Hz 创立 HTTP 服务
本节 Demo 会将 CloudWeGo 项目下的 Hertz 与 Kitex 串联在一同,为大家的实践供给参阅。
如链路图所示,在这个链路中,首先由客户端发起一个 HTTP 恳求访问 Hertz-Server, Hertz-Server 在这里充当了一个 API 层的服务,它可以将用户的恳求经过一些简略处理,然后再交由给 Kitex-Server ,终究一切的处理成果组合后,经过 HTTP 呼应回来给客户端。
1. 链路履行的流程大致如下:
- 客户端发送 HTTP 恳求给 Hertz-Server;
- Hertz-Server 把该恳求打到对应路由的处理器函数中,完结一些事务逻辑的处理;
- 利用 Kitex-Client 将处理的成果发送 RPC 恳求至 Kitex-Server;
- 经过 Kitex-Server 的处理,Kitex-client 会得到一个 RPC 呼应的成果;此时,Hertz 的 Handler 可以对履行成果采纳进一步的处理;
- 终究,将一切的事务逻辑都经过一个 HTTP 呼应的方式回来给客户端。
2. 本节演示 Demo 需要完结的内容如下:
- 编写 RPC IDL 和 HTTP IDL。RPC IDL 用于生成 Kitex 代码,HTTP IDL 用来生成 Hertz 的脚手架代码;
- 生成 Kitex 代码,并完结 Kitex Server 端的逻辑编写;
- 使用 Hz 东西生成 Hertz server 侧的代码,并完结 Hertz Handler 逻辑的编写;
- 简略地发一个恳求调试接口,判断逻辑是否现已调通。
此处还介绍了 Hz 的 update 指令:在 HTTP 的 IDL 中新增一个接口,使用 Hz update 指令,就可以更新 Hertz 侧的代码。代码更新完结后,编写新增的 Handler 逻辑,再进行接口的调试就完结一切的 Demo 内容了。
Demo 实践演示视频链接:meetings.feishu.cn/s/1i3fsqit6… 23 分钟开端演示)在演示中主要介绍了代码内容以及 Hz 生成脚手架的内容。以上 Demo 不讲解 Kitex 代码,如果对 Kitex 代码有兴趣,演示 Kitex Demo 的一切代码在下方链接中,如有需要可以扩容到本地进行实践。Kitex Demo:github.com/cloudwego/h…
3. 在完结本次 Demo 实践后,基于脚手架开发的重点总结如下:
-
需要在 main.go 中完结事务配置的初始化工作;
-
可以为特定的路由组添加中间件函数,以完结不同的路由组拥有不同的履行逻辑;
-
编写事务的 Handler 函数,完结详细的事务逻辑。
相关信息
官方 GitHub:github.com/cloudwego/h…
官方文档:www.cloudwego.io/zh/docs/her…
项目地址
GitHub:github.com/cloudwego
官网:www.cloudwego.io