概述
定义
此仓库是总控、引擎、插件系统中多个组件共同使用的中央协议定义库,在proto-store
项目中,我们组织软件模块、包和子系统,以促进高效的开发流程和代码的可维护性。项目主要使用Go语言开发,采用清晰、模块化的方式组织代码,以支持多组件间的 gRPC 通信。
主要职能
项目分为几个主要模块,包括gRPC接口定义、服务实现和工具类。
依赖安装
项目包含一个README.md
文件,其中详细描述了如何设置开发环境,包括安装Go语言环境、gRPC 工具和其他依赖项。
包含 Makefile
文件,帮助开发人员迅速搭建开发环境、生成所需代码等。
开发模型
分层逻辑
- 清晰的逻辑分层:核心逻辑(
core
)分离出来,突出其稳定性和重要性;api
用于常规业务逻辑,而extension
用于易变或实验性质的特性。
- 便于维护和扩展:通过这种分层,维护者可以快速识别代码的稳定性和变化频率,从而更有效地进行维护和更新。
- 降低风险:将核心逻辑与易变逻辑分离,减少了核心功能因频繁更改而出现问题的风险。
- 灵活性提升:为新特性提供了灵活的试验空间(在
extension
),不影响核心和常规逻辑。
- 通用代码灵活使用: common 按需使用,可以跨版本使用,也可跨功能使用
- 服务分层: service 描述服务层面的接口定义,用于控制和管理该功能中的行为,例如获取信息、配置更新等。
版本概念
- 向后兼容性:新版本并不会立即替换旧版本,使得客户端可以平滑过渡。
- 清晰的版本管理:每个版本的更改和特性都清晰可追溯。
proto-store 目录结构
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| proto-store/ ├── Makefile ├── pkg # pb.go 代码 │ ├── auth # 按功能分类,不要按组件分类 │ │ ├── api │ │ │ ├── common │ │ │ │ └── common.pb.go # 公共API的Go代码 │ │ │ └── v1 │ │ │ └── auth_api_v1.pb.go # auth API v1版本的Go代码 │ │ ├── core │ │ │ └── v1 │ │ │ └── auth_core_v1.pb.go # auth核心v1版本的Go代码 │ │ ├── extension │ │ │ └── v1 │ │ │ └── auth_extension_v1.pb.go # auth扩展v1版本的Go代码 │ │ └── service │ │ └── v1 │ │ └── auth_service_v1.pb.go # auth服务v1版本的Go代码 │ ├── common │ │ └── v1 │ │ └── common_v1.pb.go # 通用类型v1版本的Go代码 │ └── type │ └── v1 │ └── types_v1.pb.go # 数据类型v1版本的Go代码 ├── proto │ ├── auth │ │ ├── api │ │ │ ├── common │ │ │ │ └── common.proto # 公共API的proto定义 │ │ │ └── v1 │ │ │ └── auth_api_v1.proto # auth API v1版本的proto定义 │ │ ├── core │ │ │ └── v1 │ │ │ └── auth_core_v1.proto # auth核心v1版本的proto定义 │ │ ├── extension │ │ │ └── v1 │ │ │ └── auth_extension_v1.proto # auth扩展v1版本的proto定义 │ │ └── service │ │ └── v1 │ │ └── auth_service_v1.proto # auth服务v1版本的proto定义 │ ├── common │ │ └── v1 │ │ └── common_v1.proto # 通用类型v1版本的proto定义 │ └── type │ └── v1 │ └── types_v1.proto # 数据类型v1版本的proto定义 └── README.md
|