Wow4j Wow4j
首页
个人使用说明书
后端开发
前端开发
测试开发
运维开发
大数据开发
产品&UI交互
团队管理
软技能
他山之石
开源产品
敬请期待
GitHub (opens new window)
首页
个人使用说明书
后端开发
前端开发
测试开发
运维开发
大数据开发
产品&UI交互
团队管理
软技能
他山之石
开源产品
敬请期待
GitHub (opens new window)
  • 概要
  • 成为会带团队的技术人
  • 团队「奖优罚劣」14条军规
  • OKR 最佳实践
  • 超实用网址大全
  • 技术人员如何准备晋升答辩?【转载】
  • 番茄工作法(简单易行的时间管理方法)
  • 电商常见名词
  • 规范&模板

    • 概要
    • 服务端上线 CheckList 模板
    • Case Study 模板
    • 服务端系统设计 模板
      • 1. 修订记录
      • 2. 需求/背景
      • 3. 设计目标
        • 3.1 实现功能
        • 3.2 设计指标
      • 4. 概要设计
        • 4.1 设计思路
        • 4.2 技术选型
        • 4.3 业务架构
        • 4.4 技术架构
        • 4.5 系统环境
      • 5. 详细设计
        • 5.1 流程设计
        • 5.2 算法设计
        • 5.3 数据模型设计
        • 5.4 接口设计
        • 5.5 异常处理
      • 6. 风险评估
        • 6.1 已知风险
        • 6.2 可能风险
      • 7. 测试建议
        • 7.1 功能测试
        • 7.2 性能测试
      • 8. 上线准备
      • 9. 评审意见
    • 性能测试报告 模板
    • 日报格式 模板
    • 月报格式 模板
    • Git 提交 message 规范
  • 如何做好技术规划
  • 张一鸣精选微博55条
  • 项目理念与愿景
  • 项目版本号
  • 团队管理
  • 规范&模板
timchen525
2023-01-30

服务端系统设计 模板

这里以 CRM 项目的用户触达模块为例,给大家分享一下。

# CRM 技术设计文档「消息触达模块」

项目名称 CRM 系统
项目负责人 @张三
模块名称 用户触达模块
模块负责人 @李四

# 1. 修订记录

版本 修订人 修订内容 修订日期
v1.0 @张三 创建 2022-12-23

# 2. 需求/背景

产品文档:xxx

为了实现用户的精细化运营,通过多种途径,向用户发送消息通知……

# 3. 设计目标

# 3.1 实现功能

  1. 多种渠道给用户推送消息,主要包含站内和站外两大部分:
  • 站内:
    • 站内信
    • 弹屏
  • 站外
    • 邮箱
    • 短信
    • push
    • 微信
    • ……
  1. 触达任务
  • 支持定时/延时消息发送
  • 支持触发型消息发送
  • 支持用户分群发送

功能点比较多的话,可以用思维导图的形式来整理。

# 3.2 设计指标

  1. 性能指标
  • 百万级消息分钟级发送完成
  • xx接口,性能指标:单机 1000 并发,95%响应 <= 200ms
  • ……
  1. 可用性
  • 触达模块 99.9% 可用
  • 消息推送成功率 80% 以上
  • ……
  1. 扩展性
  • 采用策略模式+配置,新增消息渠道,只需少量代码+代码即可实现。
  • 引入规则引擎,统一消息类型的不同渠道,可以通过规则调整,无需发版。
  • ……
  1. 兼容性
  • 接口xxx向前兼容 APP 1.9.0 版本,低版本需强制更新。
  1. 可观测性
  • 接入 Prometheus 和 Grafana,对服务和业务进行监控
    • 服务监控:通过控制面板观察服务的内存、CPU、JVM、接口 QPS、接口 RT …… = 业务监控:通过埋点上报,收集用户触达数据,通过面板可以分设备、渠道查看用户触达成功率 ……
  1. 告警
  • 通过 Prometheus Alert 实现服务的告警,告警信息分级别,进行飞书通知、电话通知、告警类型分为服务告警和业务告警。
    • 服务告警:内存、CPU 占用过高、接口 QPS 过高、接口 RT 过长,触发告警
    • 业务告警:用户触达成功率过低告警

# 4. 概要设计

# 4.1 设计思路

  • 数百万消息短时间发送完成,流量较大,对数据存储性能要求较高,需要选用高性能 DB,对存储压力也比较大,同时需要一定削峰处理。
  • 定时/延时消息发送采用消息队列完成,对 MQ 的消费要求较高,并发度要高,批量消费。
  • ……

# 4.2 技术选型

  • 存储:TiDB
  • 缓存:Redis
  • 消息队列:业务 RocketMQ、埋点 Kafka
  • 注册中心:Nacos
  • 配置中心:Nacos
  • RPC:Dubbo
  • 网关:Gateway
  • Push通道:自建
  • ……

# 4.3 业务架构

待补充

# 4.4 技术架构

待补充

# 4.5 系统环境

  • JDK 版本:11

  • 部署环境:k8s + Container,单 pod 8 核 CPU + 4G 内存,服务集群 32 个 pod

  • 数据库

    • 业务数据:TiDB 64核 CPU + 128G 内存
    • 离线数据:Hbase ……
    • ……
  • ……

# 5. 详细设计

详细设计,是具体指导开发的设计部分,包括:流程、数据模型、算法、客户端的接口等等。

# 5.1 流程设计

  • push 流程

待补充

  • Alipay 接入时序图

待补充

# 5.2 算法设计

  • 渠道分流:同一消息类型、多种渠道,支持按比例分流,采用加权随机算法实现。
  • ……

# 5.3 数据模型设计

  • crm_user_toutch_tash:用户触达任务表
字段 数据类型 描述
id bigint 主键
task_no bigint 任务编号
comment varchar 描述
……

# 5.4 接口设计

接口名称 添加支付任务
接口文档地址 https://yapi.comn/xxx
入参
入参描述
出参
出参描述

# 5.5 异常处理

  • 系统中的不确定异常,进行统一处理,响应"Network Error"
  • 埋点异步发送,不影响主要功能 _ ……

异常处理也是需要考虑的地方,哪些异常可以吞掉,哪些异常需要降级,怎么到日志等。

# 6. 风险评估

# 6.1 已知风险

  • 对数据相关服务压力较大,用户分群、用户画像等数据服务崩溃风险
  • MQ 存在堆积风险,导致用户收到消息延迟
  • QPS 较高,数据库 CPU 飙升风险
  • ……

# 6.2 可能风险

  • 场景类消息延迟,可能会影响交易相关流程,拉低转化率和成交率
  • ……

# 7. 测试建议

需求评审、设计阶段,都需要拉上测试同学,测试同学要对整体功能、性能,有比较清楚的了解。由于具体实现逻辑,开发会比较清楚,因此需要给测试同学一些建议,给测试的测试用例提供参考。

# 7.1 功能测试

功能 测试步骤 预期结果
定时消息发送 创建定时消息 消息定时发送
……

# 7.2 性能测试

  • xxx接口压测,预估单机 QPS 1000。

# 8. 上线准备

  • 运维搭建环境
  • 数据初始化
  • 添加配置
  • 消息队列创建
  • 依赖服务上线
  • 服务上线

# 9. 评审意见

评审意见 提出人 提出日期 解决意见 解决人 解决日期
xxx接口需要考虑一下兼容性,建议xx字段,从object改为list @李四 2023-01-02 修改字段类型 @张三 2023-02-01
……
上次更新: 2023/01/31, 17:37:12
Case Study 模板
性能测试报告 模板

← Case Study 模板 性能测试报告 模板→

Theme by Vdoing | Copyright © 2022-2023 timchen525 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×