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 |
