springcloud 研发规范
1) 程序结构规范


1: Facade-Stub:包含所有对外提供服务的借口定义,并对外提供
2: Façade:实现Façade-Stub里面定义的全部借口,可以调用Service模块和Common模块
3: Task:包含全部的任务实现,可以调用Service模块和Common模块
4: Service:包含业务处理逻辑,通常来说事务在此模块中实现,可以调用Client、Dao和Common
5: Client:包含全部对其他服务的调用,通过引入Façade-Stub实现借口调用,可以调用其他服务的Façade-Stub和本服务Common
6: Dao:包含所有对数据的操作,包含SQL、NoSql等,可以调用Common
7: Common:一些本服务中通用的方法
8: 模块命名方法: 业务名称-服务名称-模块名称 akucun-user-client
9: 使用子模块的方式引入到主POM中
<modules>
<module>akucun-user-client</module>
<module>akucun-user-common</module>
<module>akucun-user-dao</module>
<module>akucun-user-facade</module>
<module>akucun-user-facade-stub</module>
<module>akucun-user-service</module>
<module>akucun-user-task</module>
</modules>
2) 技术栈规范
新业务应用全部使用:
java + mybatis + springcloud 的技术栈进行研发
老系统逐步替换成规定的技术栈
l 数据库设计规范
ID 统一叫: pid
created_time、updated_time、created_by、update_by是必须要加到表定义中的。
如果有删除动作还需要加上is_delete、delete_time、delete_by等字段 , is_delete 为NOT NULL字段 默认为0 , 1 表示删除
所有字段尽量全部都是NOT NULL,如果业务上确实需要使用为NULL的字段,请说明。
请尽量将数据库的默认步长设置为2方便以后扩展
频繁需要连表查询的数据,考虑是否可以进行数据冗余
3) 接口设计规范
对外接口设计时参照RESTful风格
使用HTTP Method 来标识操作:
POST: 表示新增
GET: 表示查询
DELETE: 表示删除
PUT: 表示更新
PATCH: 表示部分更新(依照以前的经验老说,不太常用,或者转义使用)
使用资源来标识操作的对象
http://www.a.com/api/v1/b2b/users/1
这个URL标识将 api->v1版本->b2b域下->ID为1的用户 作为操作对象
注:对于特别复杂的接口,可以不严格遵照规范设计,但是要在设计时提出
接口数据传递通过原则上通过JSON实现
所有接口的返回值必须有统一的结构,具体结构会在后面给出
接口返回的状态码需要统一分段分配
前端和后端需要共同维护状态码和报错信息的对应表
每个服务都要提供health-check接口,用于检测其可用
4) 提测规范
开发人员根据接口文档完成研发后需要将接口(编号)提测
提测的接口集合应该至少是一个完整的流程或功能(例如对会员信息的增删改查,应该一起提测)
有依赖关系的接口应该先提测底层接口再提测上层接口
每个提测接口应需给出一个调用示例(可以保存在postman上)
postman 账号:aikucun
密码:aikucun123456
完成接口测试之后才能进行前端系统的测试(可能是某个模块的接口)
5) 上线规范
测试人员在某个代码版本上完成测试后(通常完成测试可以认为是没有优先级高的BUG即可不需要修改完全部BUG)方可上线
每一次上线都应该至少记录BUG FIX List, 新应用或者新功能列表,已有功能的修改列表三个表格
上线步骤通常可以分为:1)数据上线 2)应用服务上线 3)前端系统上线
可以对数据进行适当备份.
执行DDL
执行DML
执行缓存数据的上线
6) 数据上线规范
可以对数据进行适当备份.
执行DDL
执行DML
执行缓存数据的上线
7) 应用服务上线规范
理清需要上线服务的调用关系
执行底层服务的上线
执行上层服务的上线
线上冒烟测试
回归测试(可选)
8) 前端系统上线规范
将静态资源发布到各个前端系统中(nginx、cdn等,没有顺序限制)
线上冒烟测试
回归测试(可选)
9) springcloud项目规范
1: 输出规范
输出类: com.akucun.common.Result
分页类: com.akucun.common.Pagination
Result中的code message对应的枚举: com.akucun.common.utils.enums.CodeMsg
2: 项目发布规范说明:
git 的分支整体预览图如下。

从上图可以看到主要包含下面几个分支:
- master: 主分支,主要用来版本发布。
- develop:日常开发分支,该分支正常保存了开发的最新代码。
- feature:具体的功能开发分支,只与 develop 分支交互。
- release:release 分支可以认为是 master 分支的未测试版。比如说某一期的功能全部开发完成,那么就将 develop 分支合并到 release 分支,测试没有问题并且到了发布日期就合并到 master 分支,进行发布。
- hotfix:线上 bug 修复分支。
参考: http://blog.jobbole.com/109466/
3: springboot 项目运行说明:
添加启动参数: -Ddeploy.app.name=merchant-platform-facade 和 -Dhost=192.168.1.1 -Dlog.level=info -Dguid.datacenter.id=2 -Dguid.machine.id=3
说明:
| deploy.app.name | 日志文件夹名称如: /home/用户/logs/merchant-platform-facade/日志文件 |
| host | 服务器的ip地址 ELK用来区分那台服务器打印的日志 |
| log.level | 初始日志级别 |
| guid.datacenter.id | 数据中心 |
| guid.machine.id | 数据中心中对应的服务器编号 |
4: 启动类继承 SpringBootServletInitializer 可以打war包

5: 待续...
12) 技术选型
当前阶段爱库存技术选择如下
| 缓存 | 阿里云 redis 集群 |
| 数据库 | RDS 的读写分离 |
| API通信 | restfulAPI 为主 |
| 消息队列 | rocketMQ |
| 文件存储 | OSS 与 fastDFS (优化抽像可切换) |
| 搜索引擎 | ElasticSearch |
springcloud 研发规范的更多相关文章
- 7-MySQL DBA笔记-研发规范
第7章 研发规范 本章将为读者解读一份研发规范.为了更好地协同工作和确保所开发的应用尽可能的稳定.高效,建立一套数据库相关的研发规范是很有必要的,虽然研发规范的确立和推广是一项很耗时的工作,但所取得的 ...
- 高效能团队的Java研发规范(进阶版)
目前大部分团队是使用的阿里巴巴Java开发规范,不过在日常开发中难免遇到覆盖不到的场景,本文在阿里巴巴Java开发规范基础上,补充一些常用的规范,用于提升代码质量及增强代码可读性. 编程规约 1.基础 ...
- mysql 研发规范
1. 命名 a) 有意义. b) 数据库.表,都用小写,仅使用下划线和小写字母. c) 索引以idx_开头. d) 命名不要过长,尽量少于25个字符. e) 不要使用保留 ...
- MongoDB硬件及开发标准规范
大数据平台部 运维研发组 MongoDB硬件及开发标准规范 说明: 无特殊情况,均以此文档为参考文件搭建,如有特殊情况,需与运维研发组和开发组商议后进行更改. MongoD ...
- Java&Android代码规范
项目中直接导入Square的代码风格文件.(不导入Google的原因是Square同时提供了Java和Android两套统一风格,Google只提供了一套) Square Code Styles Go ...
- postgresql使用规范解读
表设计规范1.建议能使用小字节数类型,就不要用大字节数类型2.建议能用varchar(N).text就不用char(N):3.建议使用default NULL,而不用default '':4.建议使用 ...
- CODING —— 云原生时代的研发工具领跑者
本文为 CODING 创始人兼 CEO 张海龙在腾讯云 CIF 工程效能峰会上所做的分享. 文末可前往峰会官网,观看回放并下载 PPT. 大家上午好,很高兴能有机会与大家分享 CODING 最近的一些 ...
- 研发效能之技术治理&技术治理架构师
最近很多公司专门设置了一个职位叫「技术治理架构师」,主要负责公司技术治理相关事宜.这是个非常有意思的职位.技术治理的活,之前我们也是做的,只是没有提的这么明确,一般都是研发效能团队.PMO.架构团队. ...
- Visual C++ 设置适合自己的解决方案目录结构
Visual C++ 使用解决方案来管理项目,项目之间还可能有依赖关系,设置适合自己的解决方案目录结构,便于代码的管理.程序的发布. 下面开始一个虚拟解决方案设计: 假设此解决方案有应 ...
随机推荐
- H5 性能调优 工具
1.阿里测:http://www.alibench.com 2.奇云测:http://ce.cloud.360.cn 3.百度应用性能检测中心:http://apm.baidu.com 推荐理由:这3 ...
- AngularJS中选择样式
代码下载:https://files.cnblogs.com/files/xiandedanteng/angularJSSelectClass.rar 要点,{{ctrl.name}}比<spa ...
- 拿wordpress站的一个小技巧
记得09年时wp爆过一个重置管理口令的漏洞, 现在用法差不多, 也是我刚刚发现, 网上也没找到有讲述关于这个的. 前提:是在有注入点(注入点的话可以通过寻找插件漏洞获得.), 密码解不开, 无法out ...
- "贪心法"
有没有想过 “==” 和“= =” 的区别 , 万一编译器曲解了你的意思,那不是爽歪歪! C语言编译器会把前面的符号当做一个整体,后面的不再. 当我们遇到指针相除时: y=x/*p 编译器会怎样? 和 ...
- 【Python】继承
子类的方法__init__() 创建子类的实例时,Python首先需要完成的任务是给父类所有属性赋值,为此,子类的方法__init__()需要父类施以援手. class Car(): '''模拟汽车' ...
- UDP通信接收端,接收二维数组,内容为0与1
1: using System; 2: using System.Net; 3: using System.Net.Sockets; 4: using System.Text; 5: 6: 7 ...
- SOCKIT 在make时出现(target pattern contains no % stop)???
Make错误(***target pattern contains no % stop) 1. 问题描述 在按照SoC_SW_Lab_13.0.pdf操作时候出现了下列图片的错误 2. Bsp ...
- 团队项目的Git分支管理规范
原文地址: http://blog.jboost.cn/2019/06/17/git-branch.html 许多公司的开发团队都采用Git来做代码版本控制.如何有效地协同开发人员之间,以及开发.测试 ...
- python etree解析xml
# -*- coding:utf-8 -*- #conding:utf-8 __author__ = 'hdfs' ''' 简洁 高效 明了 ElementTree轻量级的 Python 式的 API ...
- hashCode与equals的作用与区别及应当注意的细节
最近去面试了几家公司,被问到hashCode的作用,虽然回答出来了,但是自己还是对hashCode和equals的作用一知半解的,所以决定把它们研究一下. 以前写程序一直没有注意hashCode的作用 ...