您好,地球人,欢迎来到Kratos漫游指南。
对于刚开始研究Kratos框架的开发者来说,目前的文档有些零散,这与我们的模块化设计有一些关系,不过Don’t panic,从这篇文章开始,我将试图打破这一现状,漫游指南系列将循序渐进地介绍Kratos框架,理顺框架的使用思路,使您更快上手Kratos。
同时,这个系列也会逐步整合进官方文档中,同时重新组织整个文档的结构和内容,敬请期待。
本篇是该系列的第一篇,主要介绍Kratos的整体概况。
设计哲学
Kratos是一个Go语言实现的微服务框架,说得更准确一点,它更类似于一个使用Go构建微服务的工具箱,开发者可以按照自己的习惯选用或定制其中的的组件,来打造自己的微服务。也正是由于这样的原因,Kratos并不绑定于特定的基础设施,不限定于某种注册中心,或数据库ORM等,所以您可以十分轻松地将任意库集成进项目里,与Kratos共同运作。
围绕这样的核心设计理念,我们设计了如下的项目生态:
- kratos Kratos框架核心,主要包含了基础的CLI工具,内置的HTTP/gRPC接口生成和服务生命周期管理,提供链路追踪、配置文件、日志、服务发现、监控等组件能力和相关接口定义。
- contrib 基于上述核心定义的基础接口,对配置文件、日志、服务发现、监控等服务进行具体实现所形成的一系列插件,可以直接使用它们,也可以参考它们的代码,做您需要的服务的适配,从而集成进kratos项目中来。
- aegis 我们将服务可用性相关的算法:如限流、熔断等算法放在了这个独立的项目里,几乎没有外部依赖,它更不依赖Kratos,您可以在直接在任意项目中使用。您也可以轻松将它集成到Kratos中使用,提高服务的可用性。
- layout 我们设计的一个默认的项目模板,它包含一个参考了DDD和简洁架构设计的项目结构、Makefile脚本和Dockerfile文件。但这个项目模板不是必需的,您可以任意修改它,或使用自己设计的项目结构,Kratos依然可以正常工作。框架本身不对项目结构做任何假设和限制,您可以按照自己的想法来使用,具有很强的可定制性。
- gateway 这个是我们刚刚起步,用Go开发的API Gateway,后续您可以使用它来作为您Kratos微服务的网关,用于微服务API的治理,项目正在施工中,欢迎关注。
仓库、文档和社区
GitHub仓库:https://github.com/go-kratos
文档:https://go-kratos.dev/
微信群:go-kratos 官方微信群
Discord:go-kratos
为什么v2完全重新设计
以前关注过kratos项目的可能知道,Kratos的v1版本已经开源了很久,也是个较为完善的框架。那么为什么不直接基于v1继续迭代,而是要推倒重来,推出完全重新设计的v2呢?
经验源自踩坑。
在业务不断迭代、项目不断膨胀的情况下,我们发现,过去的框架和项目结构设计,导致代码变更成本逐渐升高,而没有进行合理的抽象,导致更难进行模块的测试,也更难对第三方基础库进行适配和迁移,这在一定程度上拉低了生产力。
因此,我们参考了大量的DDD和Clean Architecture等业界先进设计理念,重新设计了微服务的项目结构,并且这个结构随着我们的后续研究,会进一步进行迭代,让它成为微服务项目结构的最佳实践。
没错,新版本的是从kratos-layout开始的。也许刚接触这个项目结构时会觉得不适应,但随着项目迭代,代码复杂度的提高,这个定义良好的结构,将使项目保持优秀的代码可读性、可测试性,以及令人满意的开发效率和可维护性。
更重要的一点是,这一次我们想面向社区来设计和开发这个框架。让更多的开发者能够使用我们的框架来提高生产力,同时参与到我们的项目中来。
所以我们把整个框架设计成为一个插座,我们希望整个框架轻量,插件化,可定制。对于几乎每一个微服务相关的功能模块,我们都设计了标准化接口,对于第三方库设计为插件,这样就能迅速把任意基础设施集成到使用Kratos的项目里,因此,无论您的公司使用何种基础设施,有何种规范,您都可以轻松将Kratos定制成与您的开发、生产环境相匹配的样子。
不破不立,v2是一次从内到外的彻底革新,我们无法在旧版本上修修补补,而是选择重新设计和开发新版本。而目前v2版本也已经在很多生产环境使用,我们也将持续迭代和完善这个框架,同时也更欢迎各位开发者参与进来,一起让它变得更好。
数据库/缓存/消息队列/…
正如前文提到的,Kratos框架不限制您使用任何第三方库来进行项目开发,因此您可以根据喜好来选择库进行集成。我们也会逐步针对更多被广泛使用的第三方库开发插件。
这里给出一些被广泛使用的库供参考:
数据库:
- database/sql 官方库
- gorm
- ent
缓存:
消息队列:
- sarama kafka客户端

最低0.47元/天 解锁文章
3125

被折叠的 条评论
为什么被折叠?



