@@ -158,71 +158,118 @@ cookiecutter https://github.com/better-go/cookiecutter-go.git --directory="libra
158
158
159
159
- [x] Mono Repo:
160
160
161
- ``` bash
162
161
163
- [~/cookiecutter-go/{{cookiecutter.repo_name}}] [master]
164
162
165
- -> % tree . -L 5
163
+ - 目录结构简略说明: 对整体目录的 quick look.
164
+
165
+
166
+ ``` html
167
+ -> % tree . -L 3
166
168
.
169
+ ├── app
170
+ │ ├── basic // 基础服务: 通常是业务无关的
171
+ │ │ ├── demo // 示例:
172
+ │ │ └── user // 用户管理:
173
+ │ ├── biz // 业务服务: 根据业务切分
174
+ │ │ └── member // 会员服务:
175
+ │ │ └── order // 订单服务:
176
+ │ │ └── cart // 购物车服务:
177
+ │ └── std // 业务内统一定义:
178
+ │ ├── proto // 统一定义业务状态码
179
+ ├── deploy // 部署脚本, 服务编排
180
+ │ ├── local
181
+ │ │ └── Makefile
182
+ │ └── staging
183
+ │ └── Makefile
184
+ ├── infra // 基础设施
185
+ │ └── tool
186
+ └── pkg // 项目积累的 utility 代码库, 与业务无关
187
+ ```
188
+
189
+ - 目录结构详细说明:
190
+
191
+ ``` html
192
+ -> % tree . -L 6
193
+ .
194
+ ├── LICENSE
167
195
├── Makefile
168
196
├── README.MD
169
197
├── app
170
- │ ├── basic
171
- │ │ ├── user
172
- │ │ │ ├── auth
173
- │ │ │ ├── identity
174
- │ │ │ │ ├── Makefile
175
- │ │ │ │ ├── cmd
176
- │ │ │ │ ├── configs
177
- │ │ │ │ ├── docs
178
- │ │ │ │ ├── internal
179
- │ │ │ │ ├── proto
180
- │ │ │ │ └── readme.md
181
- │ │ │ ├── permission
182
- │ │ │ ├── readme.md
183
- │ │ │ └── role
184
- │ │ └── {{cookiecutter.basic_app_name}}
185
- │ │ ├── cmd
186
- │ │ │ └── main.go
187
- │ │ ├── configs
188
- │ │ │ └── configs.toml
189
- │ │ ├── docs
190
- │ │ ├── internal
191
- │ │ │ ├── dao
192
- │ │ │ ├── domain
193
- │ │ │ └── service
194
- │ │ └── proto
195
- │ │ ├── api
196
- │ │ ├── config
197
- │ │ └── model
198
- │ ├── biz
199
- │ │ └── {{cookiecutter.biz_app_name}}
198
+ │ ├── basic // 基础服务单元1 : 用户管理/推送/短信/等业务无关的通用服务
199
+ │ │ ├── demo // 单个微服务示例:
200
+ │ │ │ ├── cmd // 单服务启动入口: 包含 多个启动方式:
201
+ │ │ │ │ └── main.go // api server, grpc server, job server, admin server 启动
202
+ │ │ │ ├── configs // 外部中间件配置项: db,缓存,mq 等
203
+ │ │ │ │ └── configs.toml
204
+ │ │ │ ├── docs // 单服务自身文档
205
+ │ │ │ ├── internal // 业务逻辑(不对外暴露)
206
+ │ │ │ │ ├── dao // 数据层 read/write
207
+ │ │ │ │ │ ├── cache // 缓存 r/w
208
+ │ │ │ │ │ ├── db // db crud
209
+ │ │ │ │ │ ├── http // 调用本服务之外的 http api
210
+ │ │ │ │ │ ├── meta.go // dao 资源收敛
211
+ │ │ │ │ │ ├── mq // mq r/w
212
+ │ │ │ │ │ └── rpc // 调用本服务之外的 rpc(gRPC) api
213
+ │ │ │ │ ├── domain // 服务内业务拆分:
214
+ │ │ │ │ │ └── demo // 业务单元1 / 业务单元2
215
+ │ │ │ │ └── service // API 收敛层(对外收敛内部逻辑, 暴露 API: grpc/http/job/admin)
216
+ │ │ │ │ └── service.go
217
+ │ │ │ └── proto // 数据定义层: (可对外暴露)
218
+ │ │ │ ├── api // grpc + http api 定义
219
+ │ │ │ │ └── api.proto
220
+ │ │ │ ├── config // config toml 映射 model
221
+ │ │ │ │ └── config.proto
222
+ │ │ │ └── model // 内部 model
223
+ │ │ │ └── model.proto
224
+ │ │ └── user // 基础服务2:
225
+ │ │ ├── identity // 服务内
226
+ │ │ │ ├── Makefile
227
+ │ │ │ ├── cmd
228
+ │ │ │ │ └── main.go
229
+ │ │ │ ├── configs
230
+ │ │ │ │ └── configs.toml
231
+ │ │ │ ├── docs
232
+ │ │ │ ├── internal
233
+ │ │ │ │ ├── dao
234
+ │ │ │ │ ├── domain
235
+ │ │ │ │ └── service
236
+ │ │ │ ├── proto
237
+ │ │ │ │ ├── api
238
+ │ │ │ │ ├── config
239
+ │ │ │ │ └── model
240
+ │ │ │ └── readme.md
241
+ │ │ └── readme.md
242
+ │ ├── biz // 具体业务单元:
243
+ │ │ │── member // 会员服务
244
+ │ │ │ └── cmd
245
+ │ │ │ └── main.go
246
+ │ │ └── order // 订单服务
200
247
│ │ └── cmd
201
248
│ │ └── main.go
202
- │ └── std
249
+ │ └── std // 项目业务内统一定义(业务状态码, 业务出错 msg 编号)
203
250
│ ├── Makefile
204
251
│ ├── proto
205
252
│ │ ├── config
206
253
│ │ │ └── config.proto
207
254
│ │ └── error
208
- │ │ └── code.proto
255
+ │ │ └── code.proto // 业务状态码
209
256
│ └── readme.md
210
- ├── deploy
257
+ ├── deploy // 部署相关脚本: dockerfile 等
211
258
│ ├── local
212
259
│ │ └── Makefile
213
260
│ └── staging
214
261
│ └── Makefile
215
262
├── go.mod
216
- ├── infra
263
+ ├── go.sum
264
+ ├── infra // 插件依赖服务: cli, 中间件等
217
265
│ └── tool
218
- ├── pkg
219
- ├── script
220
- └── tmp
266
+ └── pkg // 项目中逐步积累的 utility 代码库
267
+
268
+ 46 directories, 24 files
269
+ ```
221
270
222
- 39 directories, 15 files
223
271
224
272
225
- ```
226
273
227
274
228
275
- [x] single app:
@@ -250,6 +297,35 @@ cookiecutter https://github.com/better-go/cookiecutter-go.git --directory="libra
250
297
```
251
298
252
299
300
+ ## 调用链路说明:
301
+
302
+
303
+ - 代码调用链路说明: 以 ` app/basic/demo ` 服务为例(自顶向下调用)
304
+ - Cmd 启动入口: ` app/basic/demo/cmd/main.go `
305
+ - Service 入口: ` app/basic/demo/internal/service/service.go `
306
+ - 对外 API 网关: ` app/basic/demo/internal/service/outer/outer.go `
307
+ - 对内 RPC 网关: ` app/basic/demo/internal/service/inner/inner.go `
308
+ - 对内 Admin API 网关: ` app/basic/demo/internal/service/admin/admin.go `
309
+ - 对内 Job 网关: ` app/basic/demo/internal/service/job/job.go `
310
+ - Proto 数据定义:
311
+ - API 层: ` app/basic/demo/proto/api/api.proto `
312
+ - Config 层: ` app/basic/demo/proto/config/config.proto `
313
+ - Model 层: ` app/basic/demo/proto/model/model.proto `
314
+ - Router 路由注册: ` app/basic/demo/internal/router/router.go `
315
+ - Domain 业务领域:
316
+ - 某业务单元: ` app/basic/demo/internal/domain/demo/demo.go `
317
+ - Dao 数据层操作:
318
+ - Meta 聚合(收敛 Dao 层资源): ` app/basic/demo/internal/dao/meta.go `
319
+ - DB 层: ` app/basic/demo/internal/dao/db/db.go `
320
+ - Cache 层: ` app/basic/demo/internal/dao/cache/cache.go `
321
+
322
+
323
+ ## Wiki:
324
+
325
+ - [x] https://github.com/zeromicro/zeromall/wiki
326
+ - [x] 服务详细初始化步骤
327
+
328
+
253
329
## Reference:
254
330
255
331
- https://github.com/audreyr/cookiecutter-pypackage
0 commit comments