# service **Repository Path**: cloudapex/service ## Basic Information - **Project Name**: service - **Description**: 控制层服务框架 - **Primary Language**: Go - **License**: LGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-09-05 - **Last Updated**: 2021-02-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # service ## 介绍 宇学业务逻辑管理服务. ### 功能与特性 1. 支持一键发布. 2. 接入ulern包 - 日志模块[按天格式输出,自动切片,日志等级控制,独立错误日志,日志过滤] - 配置管理[支持热更新] - 全局控制[控制器管理] 3. 支持上报信息至办公群 4. 支持mysql功能 5. 支持redis功能 6. 支持gin框架 7. 支持grcp功能 ## 软件架构 - >_bin (软件运行目录) - confs (配置文件存放处) - docs (文档脚本存放处) - logs (日志文件存放处(程序自动生成)) exe... (go build out_dir ) - >api (控制器层代码) - api (api公共包) - xxx1 (api模块1) - xxx2 (api模块2) - >conf (配置文件管理类) - 自行阅读代码有不理解的再沟通 - 一个配置文件对应一个setting结构 - >ctrl (全局控制器) - 自行阅读代码有不理解的再沟通 - >model (模型层代码) - mod (model公共包) - model1 (管理某个GRPC服务_端口1) - client1 (管理此GRPC服务_client1) - client2 (管理此GRPC服务_client1) - model2 (管理某个GRPC服务_端口2) - modelx (其他非GRPC管理模块) ## 编译 0. 依赖包管理: go mod tidy 和 go get -u [package_path] 1. windows版编译: go build -o ./_bin/service.exe 2. linux版编译: CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o ./_bin/service 3. 一键运行: ./publish.x.sh run ## 发布 0. 版本号修改 - 版本号遵循业内标准三段语义 - 每次版本发布记得先修改版本号 1. 服务目录结构 - service_[port] // 目录名 - service_[port] // 进程名 - update.sh // 服务更新控制脚本 - confs/ // 所需配置文件存放目录 - logs/ // 程序自动生成的日志目录(名字可配置) 2. 发布脚本: ./publish.x.sh [param_env] 支持一下参数: - build: 表示本地编译. - run : 表示编译并本地运行,类似go run main.go - test: 表示发布到测试环境. - online:表示发布到生产环境. - 注1:此脚本不可随意更改和提交git. - 注2:使用时可以按照特定格式拷贝一份改名自己使用. eg: publish-me.sh publish_me.sh 3. 更新脚本: ./update.sh [param_action] 支持以下参数(此脚本是放在服务器运行的): - stop: 让运行此服务的进程正常退出 - start: 启动此服务的进程 - restart: 让此服务的进程自动停止+更新+启动 - status: 查看此服务的进程状态 - 注1: 此脚本不可随意更改和提交git. - 注2: 一个服务目录一个此脚本. 4. 主配置文件: - 默认主配置文件名称为 service.json - 开发成员可依据不同需求环境使用自定义的主配置文件(需要在publish-me.sh里面修改StartComment 传入 "conf" 参数): - 本地: service-me.json - 测试: service-test.json ## 使用说明 1. 编写自己模块的api模块包 2. 编写自己模块的mod模块包 3. 管理自己的 publish-me.sh 脚本 ## 软件架构*新 1. 所需基础库: - ulern : 底层框架和基础功能封装库 - ulib : 特有功能和xxx的封装库 - protos: 通讯协议封装库 2. 服务组成: - gate : 一个系统一个,主要负责接口鉴权负载限流断容等职责.采用GRPC调用各个service. - service : 主要的业务服务器,可采用微服务分治,代码可以写在一起也可以分项目,根据自己项目复杂度自行搭配. 3. 服务代码目录设计[gate] - > _bin(软件运行目录) - confs (配置文件存放处) - docs (文档脚本存放处) - logs (日志文件存放处(程序自动生成)) > exe... (go build out_dir ) - > apis (控制器层代码) - files (api公共包) - dir1 (api模块1) - dir2 (api模块2) - > etcs (全局配置) - > ctrl (全局控制器) - >model (模型层代码) - files (model公共包) - model1 (管理某个GRPC服务_端口1) - client1 (管理此GRPC服务_client1) - client2 (管理此GRPC服务_client1) - model2 (管理某个GRPC服务_端口2) - modelx (其他非GRPC管理模块) 3. 服务代码目录设计[service] - > _bin(软件运行目录) - confs (配置文件存放处) - docs (文档脚本存放处) - logs (日志文件存放处(程序自动生成)) > exe... (go build out_dir ) - > svrs (控制器层代码) - > commn (公共包) - >svr1 (服务模块1) - >ctrl (main.go) - >apis - >svr2 (服务模块2) - > etcs (全局配置) - > ctrl (全局控制器) - > logic (逻辑包) - > files (由于有互相访问的场景,不建议划分字包) - > model (模型层代码) - > commn (公共包) - > cache (缓存管理) - > table (数据管理) ## 参与贡献 1. cloud 2. xinxin 3. haibo 4. 沈成博 5. cup ## 码云特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. 码云官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解码云上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目 5. 码云官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. 码云封面人物是一档用来展示码云会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)