• 服务端技术方案应该具有哪些章节


    欢迎大家关注公众号「JAVA前线」查看更多精彩分享文章,主要包括源码分析、实际应用、架构思维、职场分享、产品思考等等,同时欢迎大家加我微信「java_front」一起交流学习


    0 文章前言

    我在之前文章《结合DDD讲清楚编写技术方案七大维度》介绍了从零到一使用DDD方法论搭建项目的七个步骤:

    • 四色分领域
    • 用例看功能
    • 流程三剑客
    • 领域与数据
    • 纵横做设计
    • 分层看架构
    • 接口看对接

    四色分领域:四色分析法将一个整体需求拆分为不同领域,这是DDD方法论核心思想。四色分析法同样可以用在子域或者限界上下文中,直到拆分出可以得心应手处理之边界为止。

    用例看功能:当领域划分完成后,使用用例图描述系统功能。用例图不关心实现细节,而是从外部视角描述系统功能,即使不了解实现细节的人,通过用例图也可以快速了解系统功能。

    流程三剑客:使用活动图、顺序图、状态机图三种流程类型的图示描述系统,三种图各有特点:活动图着重描述逻辑分支,顺序图着重描述时间线索,状态机图着重描述状态流转。

    领域与数据:如何区分领域模型和数据模型。二者重要区别是值对象存储方式。领域模型在包含值对象的同时也保留了值对象的业务含义,而数据模型可以使用更加松散的结构保存值对象,简化数据库设计。

    纵横做设计:纵向做隔离,横向做编排。复杂业务之所以复杂,一个重要原因是涉及角色或者类型较多,很难平铺直叙地进行设计,所以我们需要增加分析维度。其中最常见的是增加横向和纵向两个维度。

    分层看架构:系统架构分为两个层次,第一种层次指本项目在整个公司位于哪一层次。持久层、缓存层、中间件、业务中台、服务层、网关层、客户端和代理层是常见的分层架构。第二种层次指本项目内部代码组织方式,一般可以分为接口层,访问层,业务层,领域层,整合层和基础层。

    接口看对接:一个接口代码编写完成后,这个接口如何调用,输入和输出参数是什么,这些问题需要在接口文档中得到回答。

    上述步骤如何落地为技术方案,这是本文需要回答之问题。本文重点分析技术方案章节,每个章节具体实践文末参看我之前文章链接。


    1 需求分析

    1.1 需求文档

    本章节记录需求文档地址


    1.2 需求背景

    • 当前业务现状
    • 本次需求内容
    • 本次需求目标

    2 概要设计

    2.1 领域划分

    本章节使用四色分析法划分领域


    2.2 系统功能

    本章节使用用例图描述系统功能


    3 详细设计

    3.1 流程视图

    3.1.1 整体流程

    本章节使用时序图描述整体流程

    • 顺序维度:正向、逆向
    • 调用方式:同步、异步

    时序图应该着眼全局

    不应过多描述复杂逻辑分支

    如果有需要可以根据不同维度画多张图


    3.1.2 复杂流程

    本章节使用活动图描述复杂逻辑分支

    如果有需要可以结合多维表格分析


    3.1.3 状态流转

    本章节使用状态机图描述状态流转


    3.2 数据视图

    3.2.1 关系模型

    本章节使用ER图描述实体关系模型


    3.2.2 数据库表

    本章节描述建库建表语句:

    • 创建语句
    • 索引语句
    • 初始化语句

    3.3 接口视图

    本章节描述与前端交互接口信息:

    • 接口路径
    • 输入参数
    • 输出参数
    • 接口说明
    • 老版本兼容性

    4 非功能设计

    4.1 安全设计

    • 常见安全维度
      • 系统安全
      • 数据安全
      • 业务安全
    • 常见安全操作
      • 校验操作权限
      • 记录操作流水
      • 记录业务快照
      • 敏感字段不依赖前端(userId、金额)

    4.2 性能设计

    • 性能分析
      • RT
      • QPS
      • 并发
      • 压测
    • 优化层级
      • 数据层
      • 缓存层
      • 服务层
      • 前端层
      • 客户端
      • 代理层
    • 常用方法
      • 减少请求
      • 空间换时间
      • 任务并行化
      • 任务异步化

    4.3 扩展性设计

    • 数据表设计
      • 二进制字段
      • extend1、extend2
      • bizType、bizSubType
    • 接口设计
      • bizType、bizSubType
      • 松散参数
      • 版本号
    • 代码设计
      • 设计模式
      • 纵向做隔离
      • 横向做编排

    4.4 高可用设计

    • 降级策略
    • 延时策略
    • 隔离策略
    • 冗余策略
    • 告警策略
      • 系统错误(一次立刻感知)
      • 业务错误(一定频次感知)
      • 数据监控(数据异常感知)

    5 项目排期

    本章节使用表格记录负责人和排期:

    • 端信息
      • 服务端
      • 客户端
      • 前端
      • 测试
      • 项目经理
      • 产品经理
    • 表格内容
      • 哪个端
      • 负责人
      • 开始时间
      • 结束时间
      • 是否完成
      • 风险信息
      • 备注信息
      • 上线准备

    6 文章总结

    本文展示了一篇技术方案需要具备的章节,需要说明根据需求复杂度,并不是所有章节都必须。如果一个需求复杂度不高,可以只选取其中几个章节。在《结合DDD讲清楚编写技术方案七大维度》文章有上述章节中各种图实例,希望本文对大家有所帮助。


    7 延伸阅读

    结构化思维如何指导系统优化

    架构权衡评估方法:如何评估系统质量

    多图详解七种具体方法增强代码扩展性

    结合DDD讲清楚编写技术方案七大维度

    结合DDD讲清楚编写技术方案七大维度再讨论


    欢迎大家关注公众号「JAVA前线」查看更多精彩分享文章,主要包括源码分析、实际应用、架构思维、职场分享、产品思考等等,同时欢迎大家加我微信「java_front」一起交流学习

  • 相关阅读:
    自定义权限指令与防止连点指令
    Windows安装docker
    spring+SpringMVC+MyBatis之配置多数据源
    第11章_数据库的设计规范
    maven的下载以及配置的详细教程(附网盘下载地址)
    Redux中进行异步操作(网络请求)的方案
    【SQL屠夫系列】leetcode-176. 第二高的薪水
    Bobo Python 学习笔记
    基于ssm的大学生信息管理及就业预测系统
    io_uring 之 liburing 的简单使用
  • 原文地址:https://blog.csdn.net/woshixuye/article/details/128122915