Skip to content

Go项目Demo功能需求收集(会开源一个Demo涵盖所有功能展示)

Notifications You must be signed in to change notification settings

marmotedu/gocollect

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 

Repository files navigation

Go项目demo feature需求收集

想写一个 go demo 项目,把 go 项目开发中的一些比较重要的特性都包含进去,这里收集一些功能需求和反馈,demo 今年内会上线。

大家可以提issue反馈,感谢大家!

大概可以分3个版本:

  • V1:经典构建方式 V1架构

  • V2:微服务化 V2架构

  • V3:架构升级 V3架构

版本1

当前的 Feature(v1)

  • 开发环境配置
  • 代码结构和目录设计
  • 代码设计建议
  • 配置管理
  • Go常用包的使用
    • cobra
    • viper
    • gorm
    • gin
    • pflag
    • ...
  • HTTP
  • HTTPS
  • Web框架
    • Middleware
    • Router
  • 错误包设计
  • 错误代码设计
  • 客户端CLI设计
  • client-go风格的:SDK设计,支持:
    • username/password
    • token
    • tokenfile
    • secretid/secretkey
  • RESTful设计和实现
  • RESTful API设计规范
  • Grpc设计和实现
  • 数据库操作
  • 数据交互格式设计
  • Swagger文档
  • Cache机制设计
  • 业务逻辑处理
    • 参数读取、返回
    • 请求参数校验
    • 请求逻辑处理
  • API认证
    • SecretID/SecretKey
    • Token
    • Username/Password
  • 授权:基于RBAC/ACL的授权控制策略
  • 开发规范
    • 注释规范
    • 错误日志规范
    • Go开发规范
    • Go开发技巧
  • API调试
  • 测试
    • 单元测试
    • 功能测试
    • 性能测试
    • 性能分析
  • 部署方式
    • 物理机/虚拟机部署
    • Kubernetes部署
    • Serverless化部署
  • 云原生架构设计

待实现功能

  • Validate
    • gin binding
    • custom validate
    • validate function
  • 打包:rpm、Dockerfile
  • A/B测试
  • 数据库同步
  • 限流
  • CLI增加分库分表功能
  • 验证码
  • 邮箱密码找回
  • elect(kube-controller-manager选举)

待评估功能

  • Go项目发布变更流程

前端功能

  • vue?/react?

版本2

Feature

  • 网关层/service mesh层
  • Graphql
  • Mongo支持
  • Crontab系统 -- nightwatch
  • JobFlow - 类似airflow的轻量级子系统
  • Webscoket
  • Sync mongo data to Elasticsearch
  • 有状态服务leader elect
  • 对接etcd: list & watch,替换pub/sub

彻底微服务化

  • 消息队列
  • 配置中心
  • 调用链追踪
  • 监控告警 - prometheus
  • EFK
  • 服务注册/服务发现
  • 日志管理

版本3

架构设计思路改变

  • 基于模型定义(通过protobuf做定义解耦)
  • list & watch(类似于k8s operator设计思路)
  • golang面向接口编程
  • etcd支持

About

Go项目Demo功能需求收集(会开源一个Demo涵盖所有功能展示)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published