前言
Kratos框架是一套轻量级 Go 微服务框架,包含大量微服务相关框架及工具。之所以是轻量级是因为框架内部并没有重写很多其他开源库已经实现的功能,而是提供了一套规范和接口,并且在此基础上提供了对这些开源库的整合和统一接口的定义,你可以很容易的将gin,gorm,go-redis等开源库集成进来,方便扩展与维护。详细内容可以参考官方文档。
由于重心是服务于微服务领域的,提供的示例也是微服务相关的,并且官方给的示例太过简单且没有详细的文档介绍(其实太简单也不需要介绍)。而我所在的公司并没有使用微服务架构的必要,所以需要改造下Kratos让其适合单体应用的开发,并且后续量级起来,也可以迅速切换到微服务架构。
在使用kratos框架进行实战开发并且实际应用到企业级项目后,我计划出个系列文章说下Kratos如何应用到单体架构中以及相关的技术解读。改造后的框架在此处,欢迎start支持一下。在阅读本系列文章之前请先浏览一遍官方文档,对kratos有个大致的认识。
一、准备工作
- go环境的搭建,从 官网 或国内网站 下载安装,要求>=1.22.3,最好安装一个go版本管理gvm工具,切换版本很丝滑。
- 开发工作使用VsCode 或 goland
- 数据库Mysql
- 如果是windows环境,需要配置下powershell 7以上的版本(用起来很丝滑)
- 在 Windows 上安装 PowerShell
- 定制PowerShell主题
- 需要系统支持make命令
- protoc工具
- 阅读kratos文档(可选)
二、使用步骤
- git clone 源代码kratos-use
- 进入代码目录 make init安装相关的包
- 配置好环境变量
- kratos run 运行项目
- 可以阅读源代码中的 readme文件 获取更多的帮助。
三、源代码代码解读
1 目录结构
kratos-use
|____api // 接口定义
| |____common // 结构中公共一些公共的定义
| |____mini // demo小应用
| | |____diary // 日记相关
| | |____user // 用户相关
|____cmd
| |____kratos-use // 入口
|____configs // 配置文件,由于本项目读取环境变量,所以暂无此目录
|____ent // 使用ent orm库,当然也可以换成gorm
|____internal // 内部核心目录
| |____biz // 业务逻辑的组装层
| |____conf // 配置文件模板
| |____data // 业务数据访问,实现了 biz 的 repo 接口
| |____server // 为http和grpc实例的创建和配置, 注册对应的 service
| |____service // 实现了 api 定义的服务层
|____test // 测试相关代码
|____pkg // 库代码,和业务无关的工具,方法等
|____third_party // 构建proto接口所需用到的第三方包
|____go.mod
|____go.sum
|____LICENSE
|____README.md
上面列出的是项目的大致目录结构,是根据kratos官方文档提供的项目模版做了简单的改变以适应单体应用的开发。
总结
本篇文章主要为接下来要进行的内容做个引子,后续会讲述下如何利用 kratos-use 进行实际项目的开发,以及遇到些框架上的问题如何解决,例如目录之间如何配合?开发流程是怎样?biz层和data层如何权衡?等等。