6、Kitex
这里先给上一个学习链接,本次总结也是主要针对链接内容进行的www.cloudwego.io/zh/docs/kit…
首先这边就是要先从RPC开始。
RPC是什么?
RPC (Remote Procedure Call) ,即远程过程调用。通俗来讲,就是调用远端服务的某个方法,并获取到对应的响应。RPC 本质上定义了一种通信的流程,而具体的实现技术没有约束,核心需要解决的问题为序列化与网络通信。如可以通过 gob/json/pb/thrift 来序列化和反序列化消息内容,通过 socket/http 来进行网络通信。只要客户端与服务端在这两方面达成共识,能够做到消息正确的解析接口即可。
个人理解就是和HTTP挺类似的作用,使用RPC去能够实现类似HTTP远程访问的效果
这里就还要讲到一个东西,也就是IDL,这个在RPC中十分的重要
IDC又是什么?
IDL 全称是 Interface Definition Language,接口定义语言。
如果我们要使用 RPC 进行调用,就需要知道对方的接口是什么,需要传什么参数,同时也需要知道返回值是什么样的,就好比两个人之间交流,需要保证在说的是同一个语言、同一件事。IDL 就是为了解决这样的问题,通过 IDL 来约定双方的协议,就像在写代码的时候需要调用某个函数,我们需要知道 签名一样。
对于 RPC 框架,IDL 不仅作为接口描述语言,还会根据 IDL 文件生成指定语言的接口定义模块,这样极大简化了开发工作。服务提供方(服务端)需要做的变为 编写 IDL -> 使用代码生成工具生成代码 -> 实现接口;服务调用方(客户端)只需根据服务提供方(服务端)提供的 IDL 生成代码后进行调用。这当中还有服务发现、负载均衡等问题,但不属于 IDL 范畴,故不展开介绍。
Kitex 默认支持 thrift 和 proto3 两种 IDL。
对应的语法参考链接:
Thrift IDL 语法可参考:Thrift interface description language。
proto3 语法可参考:Language Guide(proto3)。
对于Kitex框架的知识点,短时间内页无法讲解清楚,强雷建议就是去看看上面官网中的那个小案例,能够理解明白很多。
7、Kitex生态
| XDS 扩展 | github.com/kitex-contr… |
|---|---|
| opentelemetry 扩展 | github.com/kitex-contr… |
| ETCD 服务注册与发现扩展 | github.com/kitex-contr… |
| Nacos 服务注册与发现扩展 | github.com/kitex-contr… |
| Zookeeper 服务注册与发现扩展 | github.com/kitex-contr… |
| polaris 扩展 | github.com/kitex-contr… |
| 丰富的示例代码与业务Demo | github.com/cloudwego/k… |
8、Hertz
简单介绍
Hertz[həːts] 是一个 Golang 微服务 HTTP 框架,在设计之初参考了其他开源框架 fasthttp、gin、echo 的优势, 并结合字节跳动内部的需求,使其具有高易用性、高性能、高扩展性等特点,目前在字节跳动内部已广泛使用。 如今越来越多的微服务选择使用 Golang,如果对微服务性能有要求,又希望框架能够充分满足内部的可定制化需求,Hertz 会是一个不错的选择。
看看文档就很能明白其实和gin框架还是很相似的,但相比gin而言,Hertz有一个很好的点,就是有自动代码生成,也就是和上面的Kitex类似的IDL,使用IDL接口去自动生成对应代码,能够大大方便我们去编写对应的代码,十分的方便。
9、Hertz生态
| HTTP2 扩展 | github.com/hertz-contr… |
|---|---|
| opentelemetry 扩展 | github.com/hertz-contr… |
| 国际化扩展 | github.com/hertz-contr… |
| 反向代理扩展 | github.com/hertz-contr… |
| JWT 鉴权扩展 | github.com/hertz-contr… |
| Websocket 扩展 | github.com/hertz-contr… |
| 丰富的示例代码与业 Demo | github.com/cloudwego/h… |
10、最后的小总结
个人感觉字节的这套框架很大程度的方便了程序员的代码编写,特别是加入了很多种类型的自动代码生成,避免了一些简单重复代码的多次编写,感觉这方面就非常好。而且通过这次的学习,我发现,学习还得是看官方文档,官方文档讲的很细很透彻,加上字节对于文档建设还是非常好的,视频的话更多的起到的是一个引导的作用,更多的还得是看自己的学习!