proto-store项目概述.md

概述

定义

此仓库是总控、引擎、插件系统中多个组件共同使用的中央协议定义库,在proto-store项目中,我们组织软件模块、包和子系统,以促进高效的开发流程和代码的可维护性。项目主要使用Go语言开发,采用清晰、模块化的方式组织代码,以支持多组件间的 gRPC 通信。

主要职能

项目分为几个主要模块,包括gRPC接口定义、服务实现和工具类。

依赖安装

项目包含一个README.md文件,其中详细描述了如何设置开发环境,包括安装Go语言环境、gRPC 工具和其他依赖项。

包含 Makefile 文件,帮助开发人员迅速搭建开发环境、生成所需代码等。

开发模型

分层逻辑

  1. 清晰的逻辑分层:核心逻辑(core)分离出来,突出其稳定性和重要性;api用于常规业务逻辑,而extension用于易变或实验性质的特性。
  2. 便于维护和扩展:通过这种分层,维护者可以快速识别代码的稳定性和变化频率,从而更有效地进行维护和更新。
  3. 降低风险:将核心逻辑与易变逻辑分离,减少了核心功能因频繁更改而出现问题的风险。
  4. 灵活性提升:为新特性提供了灵活的试验空间(在extension),不影响核心和常规逻辑。
  5. 通用代码灵活使用: common 按需使用,可以跨版本使用,也可跨功能使用
  6. 服务分层: service 描述服务层面的接口定义,用于控制和管理该功能中的行为,例如获取信息、配置更新等。

版本概念

  1. 向后兼容性:新版本并不会立即替换旧版本,使得客户端可以平滑过渡。
  2. 清晰的版本管理:每个版本的更改和特性都清晰可追溯。

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



proto-store项目概述.md
https://abrance.github.io/2024/09/04/proto-store项目概述/
Author
xiaoy
Posted on
September 4, 2024
Licensed under