zoukankan      html  css  js  c++  java
  • 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  数据库设计规范                    

            

    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
  • 相关阅读:
    JUnit测试类完成后事务是默认 回滚的。只能查询数据,不能增删改。
    linux每日命令(28):chgrp命令
    linux每日命令(27):chmod命令
    linux每日命令(26):Linux文件属性详解
    linux每日命令(25):Linux文件类型与扩展名
    linux每日命令(24):Linux 目录结构
    linux每日命令(23):find命令之xargs
    linux每日命令(22):find命令参数详解
    linux每日命令(21):find命令之exec
    linux每日命令(20):find命令概览
  • 原文地址:https://www.cnblogs.com/wzk-0000/p/11079454.html
Copyright © 2011-2022 走看看