团队协作项目及准备内容 – CFC 例会 2023.2.27

CFC-PPCS

项目流程协作系统

1. 项目参考

开源项目

Pear Project - 梨子项目管理系统 | 轻量级的在线项目/任务协作系统 (vilson.xyz) (本家主站)

Pear Project (vilson.xyz) (功能体验) 官方账号: 18681140825 密码: 123456

a54552239/pearProjectApi: 后端代码 (github.com) (后端源码为php)

a54552239/pearProject: 前端代码 (github.com) (前端源码为Vue2)

2. 服务端架构

go语言实现,采用原生gRPC微服务架构,api层采用Gin框架,ORM层采用Gorm框架,etcd作为注册中心,MinIO作为对象存储,数据库采用MySQL与非关系型数据库Redis,MySQL采用 ProxySQL + MGR 的高可用集群(业务无感知,代码无侵入)。在后续迭代升级中,可进一步采用nacos作为配置中心,引入Jaeger分布式链路追踪与ELK日志采集模块。

image-20230227103632549

3. 项目结构

3.0 go workspace

便于不同模块本地开发相互引用

3.1 api

处理前端发来的http请求,通过etcd发现服务进行grpc调用服务

project-api
├── api
│   ├── api.go              匿名导入其他模块api的依赖
│   ├── middle              Gin中间件目录
│   │   └── middleware.go
│   └── user                按模块将api分组
│       ├── route.go        注册路由,构建路由树
│       ├── rpc.go          初始化rpc客户端
│       └── user.go         api方法实现
├── config
│   ├── config.go           初始化、读取配置
│   └── config.yaml         配置文件
├── go.mod
├── go.sum
├── main.go                 启动方法
├── pkg
│   └── model               数据传输模型(dto)
│       ├── page.go         格式化分页配置
│       └── user            按模块分类
│           └── user.go     用户模块传输模型
└── router                  
    └── router.go           路由注册方法

3.2 common

通用工具模块

3.3 grpc

protoc 生成的pb文件

3.4 mico service

包含具体业务逻辑的服务模块,内部代码结构参考

CFC Studio Golang开发规范 项目结构核心部分示例 (kirov7.github.io)

.
├── api                             暂时存放proto文件
│   └── proto
│       ├── gen                     暂时存放proto编译后文件  
│       ├── gen.bat                 编译脚本(仅仅为了方便,下同)
│       ├── gen.sh
│       └── loginService.proto      proto文件,定义grpc服务方法与数据
├── config
│   ├── config.go
│   └── config.yaml
├── go.mod
├── go.sum
├── internal                        数据模型与数据操作,对外不可见
│   ├── dao                         数据访问层,实现repo的接口对数据表进行操作
│   │   ├── member.go               封装对于member表的数据操作的实现
│   │   ├── organization.go
│   │   ├── redis.go                封装redis操作,实现repo.cache的接口
│   │   └── trans.go                实现自定义的事务操作接口,封装事务的操作框架
│   ├── data                        数据库映射结构体与部分模型转换方法
│   │   ├── member                  按数据表划分
│   │   │   └── member.go           member表与结构体的映射
│   │   └── organization
│   │       └── organization.go     organization表与结构体的映射
│   ├── database                    封装数据库连接
│   │   ├── conn.go                 数据库连接的抽象接口
│   │   ├── gorms
│   │   │   └── gorm.go             gorm实现的数据库连接接口
│   │   └── transaction             事务操作的接口
│   │       └── transaction.go
│   ├── domain                      领域层,封装领域的行为操作
│   │   ├── member.go               
│   │   └── organization.go
│   ├── interceptor                 grpc拦截器
│   └── repo                        封装数据查询的接口
│       ├── cache.go                缓存操作的接口
│       ├── member.go               抽象对member数据表的操作
│       └── organization.go
├── main.go                         启动方法,执行各种初始化操作
├── pkg                             服务具体实现与所依赖的常量与全局变量
│   ├── model                       常量与全局变量
│   │   ├── biz.go                  业务逻辑中用到的常量/枚举值
│   │   ├── code.go                 封装的错误代码
│   │   └── redisKey.go             Redis Key的前缀
│   └── service                     grpc方法的实现
│       └── login.service.v1        调用domian整理组合数据实现业务需求
│           └── loginService.go
└── router
    └── router.go                   grpc与etcd注册与路由

3.4.1 user

用户、组织等

3.4.2 project

项目、任务等

4. 项目组件与通用模块介绍

4.1 etcd

作用:用作服务注册,与服务发现

4.2 MinIO

作用:本地部署的对象存储OSS,用在项目附件等需求文件存储的地方

4.3 Redis

作用:部分用户信息存储(缓存token)、验证码存储、缓存优化等

可视化工具:

Another Redis Desktop Manager | 更快、更好、更稳定的Redis桌面(GUI)管理客户端,兼容Windows、Mac、Linux,性能出众,轻松加载海量键值 (goanother.com)

4.4 ProxySQL + MGR

作用:

理论上在ProxySQL外层还需加一层keepalived配置VIP,资源有限,暂且忽略

5. 其他内容

5.1 开发规范

参考我整理的规范

Kirov7/cfc-golang-develop-norms: CFC Studio 内部Golang开发规范 (github.com)

5.2 准备环境

服务端所需的中间件环境以在203的内网服务器中部署完成,可放心使用

5.3 代码托管平台

代码托管平台放在实验室私有仓库 gitea 上

暂无评论

发送评论 编辑评论


|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇