一份完整齐全的技术方案文档

article/2025/3/6 23:16:14

2022年-[归一计划三期-用户中心三期第二阶段]技术方案

部门:基础架构部

时间:2022.02.25

1、背景

描述技术方案的背景

由于历史原因,旧服务存在很多代码不规范、冗余度高、扩展性差等问题,为了解决此类问题,以及将功能进行清晰的模块化划分,为以后用户中心隔离打好基础,需要将旧服务用户相关的功能或接口进行重构,下沉至新用户中心

旧服务用户相关旧接口:

接口地址接口描述调用方3个月内请求量2周内请求量开发阶段顺序
checkOrganizationState查询店铺异常C端(小程序)
addAllGoodsAdditionPrice一键加价(全局)B端(小程序、APP)
/weiXinUser/addWechatUserGroup记录用户所属用户群C端(小程序)
/user-tag/get-tags.action用户标签C端(小程序、APP)

接口地址接口描述调用方3个月内请求量2周内请求量开发阶段顺序
/weiXinAgreement/grantUserAgreement用户协议同意C端(小程序)314169169686584
/weiXinAgreement/getUserAgreementInfo查询用户协议是否同意C端(小程序)1562389863210
/weiXinUser/initWeiXinUserInfo微信用户授权初始化C端(小程序)390172125239
/weiXinUser/updateAllIsShowStoreGoodsGroup全局设置店铺是否显示分组B端、C端(小程序、APP)74632352
/weiXinUser/checkRealIDCard身份证实名认证检测B端、C端(小程序)13875102605118

2、业务流程图

用图描述此技术方案的实现处理过程

  • 蓝湖

检查店铺是否异常接口

一键加价

记录用户所属微信群

用户标签

用户同意协议接口

用户初始化

设置全局的是否展示分组

身份证实名认证检测

3、领域模型

列出需求对象、关键属性和对象之间的关系

4、数据库设计

4.1 表关系图(对应:领域模型)

ER图

2 表设计

表的数据字典设计

4.3 SQL语句设计

SQL语句设计,例如索引技术、分区字段使用等。如没有,则写无
  • 索引技术

BTREE

  • 分区字段使用说明

5、技术要点

5.1 核心内容

简要体现后续工作的主要内容和难易程度,目的在于让文档阅读人员快速抓住重点。

5.2 系统架构图

整个架构最终的输出模型状态。如果是部分重构或新增部分,可以用不同颜色区分新旧部分

5.3 相关UML图

有多种状态需要说明的,则附加,例如泳道图等。如没有,则写无

以下新序列图按方案一编写,方案二相对于方案一少了新服务的调用,暂不单独出图

5.3.3 查询店铺是否异常

(旧)

不支持在 Docs 外粘贴 block

(新)

不支持在 Docs 外粘贴 block

5.3.4 一键加价

(旧)

不支持在 Docs 外粘贴 block

(新)

5.3.5 记录用户所属微信群

(旧)

(新)

6、接口设计

用户中心swagger
(为了规范参数名字的命名,下面的红色参数为改动的参数,字段意思不变,只是修改了参数名字,表示店主id)

入口(小程序、APP)

接口名称

旧接口 (plus)

旧接口入参

新接口入参

新接口 (weeget-bullet-user-rest)

小程序

查询店铺是否异常

/weiXinUser/checkOrganizationState

{

"organizationId" : 135700927

}

{

"organizationId" : 135700927

}

/user/organization/checkOrganizationState

小程序

一键加价

/weiXinUser/addAllGoodsAdditionPrice

{

"organizationId":135700927,

"additionPrice":123836168,

"groupId" : 111

}

{

"organizationId":135700927,

"additionPrice":123836168,

"groupId" : 111

}

/user/organization/addAllAdditionPrice

小程序

记录用户所属微信群

/weiXinUser/addWechatUserGroup

{

"organizationId":135700927,

"userId":123836168,

"encryptedData",

"iv": "asd123jk4j32",

"openGId" : 1,

"userGroupName": "aaacde"

}

{

"organizationId":135700927,

"userId":123836168,

"encryptedData",

"iv": "asd123jk4j32",

"openGId" : 1,

"userGroupName": "aaacde"

}

/user/saveUserGroup

小程序

用户标签

/user-tag/get-tags

{

"userTagId": 0

}

{

"userTagId": 0

}

/user-tag/getUserTag

入口(小程序、APP)

接口名称

旧接口 (plus)

旧接口入参

新接口入参

新接口 (weeget-bullet-user-rest)

小程序、APP

用户同意协议

/weiXinAgreement/userAgreementInfo

{

"agreement" : 1,

"userId" : 1,

"application" : 1

}

{

"agreement" : 1,

"userId" : 1,

"application" : 1

}

/weiXin/userAgreementInfo

小程序、APP

微信初始化接口

/weiXinUser/initWeiXinUserInfo

{

"userId" : 1,

"organizationId" :135700927,

"wechatName": 微信名称,

"portraitUrl": 头像地址,

"inviteUserId": 拉新活动分享用户,

"isPushInvitation": 是否推送,

"encryptedData": 加密数量,

"iv": iv

}

{

"userId" : 1,

"organizationId" :135700927,

"wechatName": 微信名称,

"portraitUrl": 头像地址,

"inviteUserId": 拉新活动分享用户,

"isPushInvitation": 是否推送,

"encryptedData": 加密数量,

"iv": iv

}

/weiXin/initWeiXinUserInfo

小程序、APP

设置全局店铺是否显示分组

/weiXinUser/updateAllIsShowStoreGoodsGroup

{

"organizationId":135700927,

"groupId" : 111,

"isShowStoreGoodsGroup":是否显示店铺分组,

"isShowSystemSecommendation": 是否系统推进店铺分组

}

{

"organizationId":135700927,

"groupId" : 111,

"isShowStoreGoodsGroup":是否显示店铺分组,

"isShowSystemSecommendation": 是否系统推进店铺分组

}

/weiXin/updateAllIsShowStoreGoodsGroup

小程序、APP

身份证实名认证检测

/weiXinUser/checkRealIDCard

{

"idNo": 身份证号码,

"name": 身份证姓名

}

{

"idNo": 身份证号码,

"name": 身份证姓名

}

/weiXin/checkRealIDCard

6.2 C端:接口性能指标

2021-性能测试基准v1.0
目标值:指压测前初步评估值
实际值:指经过压测后实际值

压测接口汇总.xlsx

指标项

目标值

实际值

接口平均耗时

200ms以内

压测:单pod支撑QPS值(4C8G)

200QPS

接口成功率

99.99%

压测:总QPS值

pod数等压测结果来确定

旧接口qps值,查看阿里云arms的5分钟,全部pod的QPS总值,QPS总值 / 300 = 每秒总QPS值

单pod 的 qps = 每秒总qps / 云pod总数量

plus:25个pod,4C20G

接口地址接口描述每秒请求数rt(ms)大促QPS大促rt
/weiXinUser/checkOrganizationState.action查询店铺异常3
/weiXinUser/addAllGoodsAdditionPrice.action一键加价0.5
/weiXinUser/addWechatUserGroup.action记录用户所属用户群0.2
/user-tag/get-tags.action用户标签0.03

找一下大促的数据

发截图

7、非功能性设计

注:研发人员在做接口设计或功能设计是需要考虑如下点来进行设计。

7.1 扩展性设计

至少需要考虑未来一年的存储容量、并发等的扩展支持。如没有,则写无
前端:拆分可复用的组件、封装工具库等,如不需要,则写无

7.2 兼容性设计

接口应该兼容旧版应用,向下兼容;系统兼容、数据结构兼容等。如没有,则写无
前端:微信/浏览器api兼容性处理,屏幕/机型兼容性处理,ES语法兼容性处理等,如没有,则写无

7.3 一致性设计

例如缓存与数据库数据的一致性等

l2cache缓存框架来实现

7.4 并发问题设计

超领、超卖等。如没有,则写无

分布式锁

7.5 幂等性设计

重复请求、重复消息等。如没有,则写无

7.6 高性能设计

高可用、高并发设计说明,如缓存、SQL索引技术、分页等。如没有,则写无

7.7 异常处理

超时处理,已知异常处理,未知异常处理。如没有,则写无
前端:接口异常处理、页面超时提醒、内存溢出、CPU占用过高等,如没有,则写无
  • 出现异常的接口,关闭开关,切换到旧接口

7.8 异常恢复

回滚方案,异常恢复方案 。如没有,则写无
前端:超时触发刷新页面,刷新无效重定向首页等,如没有,则写无

7.9 禁用设计

业务开关、功能开关等,非必要功能同时应用在高并发场景下必须。如没有,则写无
  • 补充开关设计

设计接口切换开关,测试一下新接口有问题,立刻切换旧接口

设计开关切换,nacos配置格式

存放开关文件: controller/common/SwithController.java

user.switch.part3v2:true

默认ture 新接口 ,设置false表示使用旧接口

nacos配置如下:

user:

switch:

part3v2: true

注:part3v2 , 表示part3 代表期数也就是3期,v2表示2阶段

7.10 N+1设计

系统中的每个组件都应做到没有单点故障。如没有,则写无
  • 有,可忽略

7.11 监控设计

在设计阶段就要考虑监控的手段 。如没有,则写无。
超领、超卖等业务监控。
前端:页面超时上报,JS报错上报,接口异常上报等,如没有,则写无
  • 忽略

7.12 资源隔离设计

应避免单一业务占用全部资源。如没有,则写无

7.13 安全性设计

支付安全、防篡改、数据安全等。如没有,则写无

7.14 模块化、组件化设计(前端技术方案专用)

通用的功能组件,比如分页组件,Loading组件,ModalDialog组件。通用的业务组件,比如站点通用头部,通用footer,通用分享组件。

详见:

  • 忽略

7.15 弱网络处理策略(前端技术方案专用)

离线缓存,HTTP Cache,Service Worker 和 Cache Storage API,Workbox

详见:

  • 忽略

7.16 移动端适配方案(前端技术方案专用)

  1. vw vh: postcss-px2viewport
  2. rem: postcss-px2rem

详见:

  • 忽略

7.17 静态资源处理(前端技术方案专用)

图片资源CDN上传,,如没有,则写无

详见:

  • 忽略

7.18 用户体验设计(前端技术方案专用)

首屏数据秒出(默认数据占位+复用数据显示),耗时不超过250ms(过度动画),如不需要,则写无
滑动帧率维持60 fps,如达不到,则写出原因
选择正确的图片尺寸,如不需要,则写无

详见:

  • 忽略

7.19 数据影响范围

  1. 对新增数据是否有影响?对历史数据是否有影响?
  2. 历史数据影响的数据量是多少?

详见“5.4 老旧数据兼容、迁移方案”

8、系统资源评估

列出系统用到的微服务和阿里云中间件,或新增资源,或复用现有资源。如没有,则写无

8.1 系统流量评估

主要对流量大的服务做一个评估,服务清单及各负责人见:

8.1.1 总体流量评估

流量的变化可能增加(+)也可能减少(-),如果是重构项目,旧服务有些接口已经逐步废弃,流量预估变化是:-xxxQPS

8.1.2 C端接口流量评估(包括本服务的接口和调用其他服务的接口)

流量的变化可能增加(+)也可能减少(-),如果某个接口接入的业务场景减少了,流量预估变化是:-xxxQPS;如果接口流量变化预估超过5QPS的,都要写下来。包含但不限于整个全链路的请求评估

说明:减少的QPS主要是基于发表评价和查询评价的内容独立到新的服务,所以原服务此部分流量减少,发表评价和查询评价实际QPS极低,10QPS属于粗略评估

接口所属服务

服务负责人

接口url

流量预估变化

8.2 数据库资源

9、生产服务部署 (前端项目可以写构建方案、打包方案等)

上线后云服务器数量和配置等。如没有,则写无。
注:Pod数不能出现单点,即不能只部署1个Pod,至少3个+

忽略

10、人力计划排期

10.1 预计所需人力:

FTO:@王

  • 架构部:2人@何 @王
  • 后台部:1个@黄
  • 测试部:2人@方 @徐
  • 前端部:1人@王 @吴
  • 产品部:1人@陈
  • APP部:2人@钟 @林
  • 运维部:1人

10.2 时间计划:

事项

时间

涉及部门

主负责人

配合人员

技术方案

架构部

框架搭建 + 基础设施

架构部

后端开发时间

2021.12.23 ~ 2021.12.31

架构部

王 合并 两个开发版本一起提测

前端开发时间

前端部

前后端联调

架构部

前端部

功能测试

边界测试

破坏性测试

安全检测

2022.03.14 ~ 2022.03.15

架构部

前端部

测试部

压测测试

架构部

前端部

测试部

集成测试

2022.03.16

架构部

前端部

测试部

预发布验收

2022.03.17

产品部​

系统上线

2022.03.17

架构部

前端部

测试部

2021-12-22 14:30:00 会议初步确认,以及一些纪要:

  • 技术方案文档补充 @王 2021年12月23日 17:00
  • 测试用例评审时间 @李
  • 联调/冒烟时间
  • 提测时间
  • 上线时间

2022-02-15 15:00 会议纪要:

  • 技术方案两个版本合并在一起,在此文档体现 @王 2月16日 18:30
  • 联调/冒烟时间 @吴 @陈
  • 测试用例评审 @方
  • 提测时间 2022-02-28 @方
  • 上线时间 2022-03-17


http://chatgpt.dhexx.cn/article/Wy3EOkyf.shtml

相关文章

易文档(yidocs),更简单的markdown静态文档生成模板

基本简介 yidocs(易文档),是在 vuepress 主题 vuepress-theme-hope 基础上,进一步简化使用的文档模板。 大部分配置和参数都有默认值,使用 yidocs(易文档)的用户,只需要填写必要的…

idea java配色方案_IDEA 主题配色方案+字体

IntelliJ IDEA被认为是当前Java开发效率最快的IDE工具。它整合了开发过程中实用的众多功能,几乎可以不用鼠标可以方便的完成你要做的任何事情,最大程度的加快开发的速度。 关于IDEA 主题配色方案 主题配色方案放置位置(Win7为例): C:\Users\A…

蓝绿色配色_蓝绿色部署

蓝绿色配色 传统上,我们通过替换当前版本来部署新版本。 旧版本停止了,新版本被替换了。 这种方法的问题是从旧版本停止到新版本完全运行之间的停机时间。 无论您尝试执行此过程的速度如何,都会有一些停机时间。 那可能只有一毫秒&#xff0c…

践行绿色发展理念,产业园区绿色转型发展之五大路径

近年来,我国产业园区蓬勃发展,成为区域经济的重要载体。但在这个发展过程中,一些产业园区面临着较大的能源资源及环境排放压力,影响到了园区的可持续发展。随着“碳中和”发展目标的提出,产业园区将走入绿色转型发展的…

色彩的基本配色方案

色彩是我们观察事物的第一认知,是最能触动我们感官的视觉元素。色彩可以激发我们的联想,刺激我们的情绪。在设计中,色彩的合理运用一直是个很重要的课题,在这里我总结了一些色彩部分的常识分享给大家。 一、色环 原色由红黄蓝组成…

IDEA自定义配色方案

整体颜色无主题,都是自己调整的,突然看上去色系比较多,但是多看一会就能清晰分辨出各个颜色的用途,整体配色属于鲜亮方案,元素颜色对比比较明显,个人感觉半灰阶看着不舒服。 Java文件配色方案 Mapper.xml配…

2023华数杯B题不透明制品最优配色方案设计(思路+Matlab代码+论文)

目录 思路 Matlab代码 论文框架 思路 问题1:计算着色剂在不同波长下K/S与浓度的关系 首先,问题1要求我们计算附件2中三种着色剂在不同波长下K/S与浓度的关系,并将关系式与拟合系数填写在表格中。为了完成这一步,我们需要以下步骤: 了解光学模型:阅读文献【1】《计…

前端常用的超赞的配色网站

1.中国风配色 zhongguose.com 超美的中国风配色,网站号称收集了最全的中国色,还有中英文互译,非常贴心,五星好评。 2.uiGradients uigradients.com 做渐变配色专用的网站,色值什么的非常全。 3.Adobe Color CC co…

2023年华数杯B题不透明制品最优配色方案设计(思路+代码+论文,已第三次更新)

已第三次更新,今天下午应该能把三道题都更新完毕.晚上开始写论文,专栏中有思路和代码. 4号18:00前订阅专栏,论文无需二次收费 目录 问题二+代码 问题三+代码 问题四+代码 问题1+代码 要求计算着色剂K/S与浓度的关系,然后通过拟合得到函数关系式和拟合系数。首先,我们需要…

IAR配色方案及配置方法

前言 从事嵌入式开发基本都要和 IAR 这款集成IDE打交道,其默认都是浅色主题,且自定义的一些关键字没有高亮的功能,今天给大家分享一个暗色系的配色方案,并且可以高亮自定义的关键字. 修改IAR配色方案的方法 设置编辑器的配色 T…

论文配色方案

方案1(复古): 系列色——十六进制颜色码: 0780cf - 765005 - fa6d1d - 0e2c82 - b6b51f - da1f18 - 701866 - f47a75 - 009db2 - 024b51 - 0780cf - 765005 系列色——RGB颜色值: (7,128,207&#xff09…

消除WSL中ls Windows文件夹时背光配色的方法

消除WSL中ls Windows文件夹时背光配色的方法 产生原因 首先,Linux中ls命令是自带配色的,对于某些文件夹是绿色背景色块,其实是一种权限提示,即777权限。绿色表示不安全,当其他人的权限高于所有者或者所属组时就会变成…

科研绘图-配色指南

好的图形展示方式能够简明扼要地表达数据,而好的配色一方面能够突出数据的重点,另一方面能够使所有的数据和谐共存。好的配色是图的二次进化,能够赋予图片“生命”。 1,日常生活中使用的颜色 日常生活中,我们经常提到各…

【matlab】绘制云图 + 修改配色方案 + 保存配色方案

一、绘制云图 假设 x、y 为坐标向量,f 为各个坐标点所对应的函数值 的向量 1、需要根据 x、y 的范围进行划分,可以理解为建立坐标系或比例尺 X1和Y1 X1 linspace(min(x),max(x),100); %将坐标均分成100份 Y1 linspace(min(y),max(y),100);…

【转载】SCI论文配图配色方案参考网站

1. Flat UI Colors 网站介绍: Flat UI Colors是一个免费、高颜值的扁平化设计调色板,采集了13种色彩、14个调色板、280种颜色,支持在线切换HEX、RGB、RGBA,点击色块即可复制或吸取色值。 参考网站 2. WebGradients 网站介绍&…

MATLAB周边第四期-MATLAB优雅绘图配色

1 写在前面 该系列为MATLAB周边应用,同时包含了一些相关技巧,欢迎私信一起交流问题,更多的好玩周边可查看往期的推文。有问题或者需要其他建议的话,非常欢迎后台私信交流,共同进步,如若出现违反学术道德的…

界面设计配色方案说明图一(含RGB配色表)

这些配色案例图是过去从互联网上收集到的,开发工具界面时可以借鉴配色。希望对读者有帮助。 R G B 值 R G B 值 R G B 值 黑色 0 0 0 #000000 黄色 255 255 0 #FFFF00 浅灰蓝色 176 224 230 #B0E0E6 象牙黑 41 36 33 #292421 香蕉色…

绘图中的配色方案

01. Material Palette —— 帮你生成并导出Material Design配色模板 链接地址: http://www.materialpalette.com/ 02. New Flat UI Color Picker —— 最好的扁平化UI设计配色方案 链接地址: http://www.flatuicolorpicker.com/ 03. Flat UI Colors …