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  数据库设计规范                    

        

mer_bank.sql

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:  待续...

10) 属性文件中敏感数据加密处理
     测试环境和线上环境对数据文件中的敏感数据加密处理, 可借助springcloud config加密解密功能
11) 用户登录行为埋点
待续...

12) 技术选型

当前阶段爱库存技术选择如下

缓存 阿里云 redis 集群
数据库 RDS 的读写分离
API通信 restfulAPI 为主
消息队列 rocketMQ
文件存储  OSS 与 fastDFS  (优化抽像可切换)
搜索引擎  ElasticSearch

springcloud 研发规范的更多相关文章

  1. 7-MySQL DBA笔记-研发规范

    第7章 研发规范 本章将为读者解读一份研发规范.为了更好地协同工作和确保所开发的应用尽可能的稳定.高效,建立一套数据库相关的研发规范是很有必要的,虽然研发规范的确立和推广是一项很耗时的工作,但所取得的 ...

  2. 高效能团队的Java研发规范(进阶版)

    目前大部分团队是使用的阿里巴巴Java开发规范,不过在日常开发中难免遇到覆盖不到的场景,本文在阿里巴巴Java开发规范基础上,补充一些常用的规范,用于提升代码质量及增强代码可读性. 编程规约 1.基础 ...

  3. mysql 研发规范

    1. 命名    a) 有意义.    b) 数据库.表,都用小写,仅使用下划线和小写字母.    c) 索引以idx_开头.    d) 命名不要过长,尽量少于25个字符.    e) 不要使用保留 ...

  4. MongoDB硬件及开发标准规范

    大数据平台部 运维研发组 MongoDB硬件及开发标准规范             说明:   无特殊情况,均以此文档为参考文件搭建,如有特殊情况,需与运维研发组和开发组商议后进行更改. MongoD ...

  5. Java&Android代码规范

    项目中直接导入Square的代码风格文件.(不导入Google的原因是Square同时提供了Java和Android两套统一风格,Google只提供了一套) Square Code Styles Go ...

  6. postgresql使用规范解读

    表设计规范1.建议能使用小字节数类型,就不要用大字节数类型2.建议能用varchar(N).text就不用char(N):3.建议使用default NULL,而不用default '':4.建议使用 ...

  7. CODING —— 云原生时代的研发工具领跑者

    本文为 CODING 创始人兼 CEO 张海龙在腾讯云 CIF 工程效能峰会上所做的分享. 文末可前往峰会官网,观看回放并下载 PPT. 大家上午好,很高兴能有机会与大家分享 CODING 最近的一些 ...

  8. 研发效能之技术治理&技术治理架构师

    最近很多公司专门设置了一个职位叫「技术治理架构师」,主要负责公司技术治理相关事宜.这是个非常有意思的职位.技术治理的活,之前我们也是做的,只是没有提的这么明确,一般都是研发效能团队.PMO.架构团队. ...

  9. Visual C++ 设置适合自己的解决方案目录结构

    Visual C++ 使用解决方案来管理项目,项目之间还可能有依赖关系,设置适合自己的解决方案目录结构,便于代码的管理.程序的发布. 下面开始一个虚拟解决方案设计:         假设此解决方案有应 ...

随机推荐

  1. python模块相关

    aniso8601 pyquery networkx (2.0)                 - Python package for creating and manipulating grap ...

  2. 通达OA 小飞鱼工作流在线培训教程(七)工作流应用的意义及基础设置(图文)

    这个课程计划已经有一段时间了,经过这段时间结合实际网络教学又进行了一些总结,这里将陆续为大家呈现相关的工作流设计开发课程. 同一时候线上的视频教学课程也将立即上线,欢迎朋友们的关注. 首先介绍一些工作 ...

  3. 关于文本处理sort-cut-wc详解

    sort sort命令对File参数指定的文件中的行排序,并将结果写到标准输出.如果 File 参数指定多个文件,那么 sort 命令将这些文件连接起来,并当作一个文件进行排序.   sort语法 [ ...

  4. Synchronized与ReentrantLock的区别

    1.ReentrantLock 拥有Synchronized相同的并发性和内存语义,此外还多了 锁投票,定时锁等候和中断锁等候 线程A和B都要获取对象O的锁定,假设A获取了对象O锁,B将等待A释放对O ...

  5. 接口性能测试方案 白皮书 V1.0

    一. 性能测试术语解释 1. 响应时间 响应时间即从应用系统发出请求开始,到客户端接收到最后一个字节数据为止所消耗的时间.响应时间按软件的特点再可以细分,如对于一个 C/S 软件的响应时间可以细分为网 ...

  6. C#托付之愚见

    C#托付起源 近期參加实习和奔走于各大招聘会,被问及非常多技术方面的问题.C#问的较多的就是托付和linq. linq之前已经写过一篇文章,能够參见 http://blog.csdn.net/yzys ...

  7. Android fragment (二)

    怎样使用fragment? 1.首先你要确定下你有多少个fragment要使用在一个activity里. 2.依据你的fragment的数量,创建继承自fragment的class.然后依据实际需求重 ...

  8. Laravel 5.4的本地化

    简介 Laravel 的本地化功能提供方便的方法来获取多语言的字符串,让你的网站可以简单的支持多语言. 语言包存放在 resources/lang 目录下的文件里.在此目录中应该有应用对应支持的语言并 ...

  9. 一步一步实现一个简单的OS(简单的让boot载入setup)

    这次直接写用boot载入setup模块. 文件系统就先不弄了,以后再说, 咱先整个转简单的载入器. 我把软盘引导改成硬盘了,由于硬盘的读扇区函数简单一些. 这里没有做硬盘的mbr区,我认为在如今我的这 ...

  10. php selenium 测试验证码问题

    $this->pause(10000)这段代码用于停止程序执行,可以在这个空隙内输入验证码