kratos-bootstrap 是一个基于 Go 语言的Kratos微服务框架应用引导框架,旨在为微服务或独立应用提供标准化的初始化、配置管理、组件集成能力,简化应用开发中的基础设施搭建工作。该项目集成了多种常用中间件、数据库客户端、服务注册发现机制及脚本引擎,帮助开发者快速构建稳定、可扩展的应用程序。


Keywords
bootstrap, elasticsearch, ent, go-kratos, golang, gorm, influxdb, minio, mongodb, protobuf, redis, rpc
License
MIT
Install
go get github.com/tx7do/kratos-bootstrap/config/consul

Documentation

kratos-bootstrap

项目概述

kratos-bootstrap 是一个基于 Go 语言的Kratos微服务框架应用引导框架,旨在为微服务或独立应用提供标准化的初始化、配置管理、组件集成能力,简化应用开发中的基础设施搭建工作。该项目集成了多种常用中间件、数据库客户端、服务注册发现机制及脚本引擎,帮助开发者快速构建稳定、可扩展的应用程序。

核心功能模块

1. 应用引导(Bootstrap)

  • 核心能力:提供统一的应用启动入口,封装配置加载、日志初始化、服务注册等流程。
  • 关键实现:通过 bootstrap/bootstrap.go 中的 Bootstrap 函数,接收应用初始化逻辑,自动完成配置解析、日志组件初始化、服务注册中心连接等前置操作,最终启动应用并处理优雅退出。
  • 优势:简化应用启动流程,减少重复代码,确保初始化逻辑的一致性。

2. 多数据库支持

项目集成了主流的ORM,提供了基础的CURD封装:

  • Ent
  • GORM

项目集成了多种主流数据库的客户端封装,提供简洁的操作接口:

  • ElasticSearch:支持文档插入(InsertDocument)等操作,封装索引、文档的核心交互逻辑。
  • MongoDB:提供查询(Find)、字段投影(SetProjection)等方法,类比关系型数据库的表、行结构,降低使用门槛。
  • ClickHouse:通过查询构建器(QueryBuilder)简化 SQL 构建,支持 SELECT 语句的条件、排序、分页等操作。
  • InfluxDB:支持时序数据插入(Insert),提供数据映射(Mapper)机制,方便结构化数据与时序点的转换。

各数据库客户端均包含错误处理和日志记录,提升调试效率。

3. 服务注册与发现

  • 支持组件:集成 KubernetesConsulEtcdEureka 等主流服务注册中心(registry/ 目录)。
  • 核心逻辑:通过 bootstrap/registry.go 中的 NewDiscovery 函数,根据配置动态创建对应类型的服务发现客户端,实现服务节点的自动发现与管理。
  • 注意:Kubernetes 注册中心目前处于参考阶段,未经过生产环境验证。

4. 脚本引擎

提供多语言脚本执行能力,支持动态扩展业务逻辑:

  • 支持语言LuaJavaScript(基于 goja 实现,支持部分 ES6 语法),配置中预留 Python 支持。
  • 核心接口EngineInterface 定义了脚本引擎的通用能力,包括初始化(Init)、加载脚本(LoadString/LoadFile)、执行(Execute)、注册全局变量 / 函数等。
  • 优势:允许通过脚本动态调整业务规则,无需重新编译应用,提升灵活性。

5. 配置管理

通过 Protobuf 定义统一的配置结构(api/gen/go/conf/v1/),涵盖:

  • 服务器配置(REST、gRPC、Kafka 等多种服务类型)
  • 日志、追踪、认证授权配置
  • 脚本引擎、对象存储(OSS)、通知(短信等)配置
  • 支持远程配置(ApolloConsulEtcd 等,config/ 目录)

配置结构清晰,便于扩展和维护。

6. 其他组件

  • 中间件:支持限流、监控、链路追踪、参数校验等常用中间件(middleware/ 目录)。
  • 对象存储:集成 MinIO 客户端(oss/minio/),提供对象存储操作能力。
  • 工具链:通过 Makefile 提供 API 生成(基于 Protobuf)等自动化命令,简化开发流程。

技术特点

  • 高集成度:一站式集成数据库、服务注册、脚本引擎等常用组件,减少第三方依赖的整合成本。
  • 可扩展性:通过接口定义(如 EngineInterface、注册中心 Creator)支持自定义实现,方便替换或扩展组件。
  • 易用性:封装底层细节,提供简洁的 API 接口,降低开发者使用门槛(如数据库查询构建器、脚本执行接口)。
  • 标准化:统一配置格式、启动流程和错误处理,提升项目规范性和可维护性。

适用场景

  • 微服务架构下的服务初始化与基础设施管理
  • 需要集成多种数据库的复杂应用
  • 需通过脚本动态扩展业务逻辑的场景(如规则引擎、动态计算)
  • 追求开发效率,希望减少重复搭建基础设施的项目

许可证

项目基于 MIT 许可证开源(详见 LICENSE 文件),允许自由使用、修改和分发,需保留原版权信息。