# grpc-server **Repository Path**: jayden-qiu/grpc-server ## Basic Information - **Project Name**: grpc-server - **Description**: grpc 的 server 端 - **Primary Language**: Go - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2021-12-22 - **Last Updated**: 2023-05-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: Go语言, 微服务, Grpc, protobuf ## README # grpc-server #### 介绍 开箱即用 grpc 架构,按需填写 config 即可集成当前主流工具链,方便快捷 #### 目录结构 ``` |-- LICENSE |-- Makefile (快捷指令) |-- README.md |-- api (swagger文件) |-- cmd (程序入口) | |-- consumer.go | |-- gateway.go | `-- grpc.go |-- config.yaml (业务配置,二选一) |-- config_center.yaml (配置中心,二选一) |-- configs (配置信息结构) | |-- config.go | `-- config_center.go |-- deploy (部署文件) | |-- Dockerfile | |-- configMap.yaml | |-- deployment.yaml | `-- service.yaml |-- githooks (当前项目 githook) | `-- pre-push |-- go.mod |-- go.sum |-- initialize (基础设施初始化) | |-- config.go | |-- exit.go | |-- init.go | |-- reader.go | |-- register.go | `-- tracing.go |-- internal (业务代码) | |-- cronjob (定时任务) | | `-- cronjob_interface.go | |-- dao (数据交互) | | |-- db.go | | |-- db_interface.go | | |-- db_mock.go | |-- logic (接口实现) | | |-- user_impl.go | | |-- user_svc.go | | `-- user_test.go | `-- models (数据表模型) | |-- migrate.go | `-- user.go |-- main.go |-- pkg (全局工具类) | |-- elastic.go | |-- init.go | |-- log.go | |-- mq.go | |-- mysql.go | |-- redis.go | `-- rpc.go |-- proto (当前项目proto) | |-- common (公共文件夹) | `-- user.proto (接口配置) |-- protocol (protoc生成代码) | `-- user | |-- user.pb.go | |-- user.pb.gw.go | |-- user.pb.validate.go | `-- user_grpc.pb.go `-- tools (工具函数) |-- tools.go `-- validate.go ``` #### 安装教程 1、安装 make 工具 2、执行 make init #### 使用说明 1、热加载开发 make dev #### 架构集成 用 Nacos 做配置中心 用 Consul 做服务治理 用 Jeager 做链路追踪 用 Zap 做本地日志 用 Gorm 做数据库驱动 用 Gorm Automigrate 数据表迁移 用 Air 做本地热加载开发 用 Pometheus 做监控数据存储 用 Grafana 展示监控及预警 用 ElasticSearch 做搜索数据库 用 Redis 做缓存层 用 Http、Grpc(Http2) 做网络协议 用 json、protobuf 做数据传输协议 用 openapiv2 工具生成 swagger 文档 用 grpc 官方 validator 做数据校验 用 gomock 实现数据模拟测试 用 testing 实现单元测试 用 gateway 功能以支持 http1 用 grpcurl 工具做本地代码调试 用 godoc 以查看当前项目文档 用 go-inject-tag 工具以实现proto文件自定义tag 用 protolint、golangci-lint 做项目代码规范调整 用 project-layout 做目录参考 #### 商用注意事项 如果您将此项目用于商业用途,请遵守Apache2.0协议并保留作者技术支持声明。