自己实现高性能IM-初始代码框架搭建
本文介绍了基本的kitex项目搭建,以及链路追踪的实现。需要注意的是,在windows上会出现问题,推荐在linux或mac开发。
# RPC框架
项目主要使用了字节跳动的RPC框架kitex (opens new window)。
# 1. 搭建基本项目结构。
git clone https://github.com/cloudwego/kitex-examples.git
把这个项目克隆下来,然后单独把hello拿出来,其他的删掉。使用go mod tidy
同步一下依赖,如果没有go.mod
就先go mod init xx
一下。
可以运行一下当前软件包,也就是服务端,然后再运行一下client里面的main.go这个单个文件,如果看到client不断输出response就说明成功了。
# 2. 链路追踪
kitex支持多种链路追踪,这里选用了opentelemetry。OpenTelemetry 是一个开源的可观测性框架,它提供了一种标准化的方法来收集、处理和导出遥测数据,涵盖了跟踪(Trace)、指标(Metrics)和日志(Logs)。该框架包含了一套通用的 API、SDK 和工具,从而简化了应用程序可观测性的实现过程,使其更加统一。
然而,OpenTelemetry 本身只是一个框架,它定义了数据的标准和收集方式,但并不提供数据的存储和展示功能。因此,为了充分利用 OpenTelemetry 收集的跟踪数据,需要一个相应的平台来进行数据的接收、存储和可视化。在这方面,Jaeger 是一个理想的选择。
Jaeger 能够直接接收由 OpenTelemetry SDK 生成的跟踪数据。这意味着,当应用程序通过 OpenTelemetry 进行检测并收集跟踪信息时,这些信息可以无缝地被发送到 Jaeger。在 Jaeger 平台上,这些数据得以存储,并通过其强大的可视化工具进行展示,从而帮助开发者分析和理解服务之间的交互和性能表现。因此,Kitex 选择支持 OpenTelemetry 并结合 Jaeger,为开发者提供了一套完整的链路追踪解决方案。
# jaeger安装
到官网 (opens new window)直接下载就可以,各个系统都有。以windows为例,下载好后,使用管理员身份的cmd运行all-in-one即可。
# opentelemetry在kitex中的使用
# 查看
打开本地的16686
端口,即可看到如下界面:
此时说明我们的链路追踪已经好了。