简单的架构模板

  1. 大纲

    1. 现状
      1. 业务背景
      2. 技术背景
    2. 需求
      1. 业务需求
      2. 业务痛点
      3. 性能需求
    3. 方案描述
      1. 方案1
        1. 概述
        2. 详细说明
        3. 性能目标
        4. 性能评估
        5. 方案优缺点
      2. 方案2
      3. 方案对比
    4. 线上方案
      1. 架构图
      2. 关键设计点和设计折衷
      3. 业务流程
      4. 模块划分
      5. 异常边界(重要)
      6. 统计,监控
      7. 灰度,回滚策略
      8. 容灾方案
    5. 部署拓扑
    6. 风险评估
      1. 潜在风险
    7. 阶段规划(架构演进规划)
      1. 第一阶段
      2. 第二阶段
      3. 第三阶段
    8. 工作量评估
  2. 现状

    1. 现状
    2. 主要是用来描述当前这个业务(项目)的一些基本情况介绍和相关的背景
    3. 方案设计出来之后,是需要给你的 leader 或者团队其他成员进行评审或者查看
    4. 一般来说,由技术委员会来评审
    5. 但是别人不可能都和你一样清楚你的项目,
    6. 因此首先,你要把你项目的基本情况和背景都说清楚,让大家达成一个共识
    7. 大家站在同一个起点上,才能进行后面的方案评审和讨论。
    8. 业务背景
    9. 业务背景就是你这个业务的基本介绍,包括但不限于:
      1. 项目名称
      2. 业务描述
      3. 业务难点
    10. 技术背景
    11. 技术背景就是项目是基于什么样的技术背景下来构建的
    12. 可以是从 0 到 1 来构建,也能是基于现有的方案来优化,
    13. 但是不管是什么场景,一定都会存在相关的技术背景,因此包括但不限于
      1. 现有技术积淀
      2. 现有架构描述
      3. 现有系统的整体容量
  3. 需求

    1. 需求
    2. 不管这个需求是技术需求,还是业务需求,一定都是要为需求服务
    3. 注意:需求,这个需求可以是当下的需求,尽可能 包含未来潜在的需求
    4. 需求越完善,后面会少走弯路。
    5. 业务需求
    6. 业务需求就是你这个业务具体要做的事情,包括但不限于:
      1. 业务的功能点
      2. 要提升改造的功能
    7. 业务痛点
    8. 涉及到的业务痛点有哪些
    9. 性能需求
    10. 除了业务需求,还要从这个业务需求里面考虑清楚我们满足这个业务之下的性能需求点
    11. 如果一个系统不考虑性能,可能流量一上来,服务就挂掉了
    12. 性能需求包括但不限于
      1. 预估系统平均容量
      2. 预估系统峰值容量
      3. 可伸缩性
      4. 其他的一些性能要求点,比如安全性等
  4. 方案描述

    1. 方案描述
    2. 一般,需要会有几个可选的方案
    3. 也就是说,尽可能把相关可能的方案都描述清楚
    4. 然后给出你认为的最合适的方案,然后让大家来评审和决策,看是否同意你的意见或者有其他更好的意见。
    5. 除非万不得已,最好,不要一只有个方案
    6. 方案1
      1. 概述
        1. 说明一下方案的核心亮点、核心特色,核心目标,核心优势
        2. 比如说:高性能、可扩展、双写、主从分离、分库分表、扩容等。
      2. 详细说明
        1. 详细说明这里需要图文结合
        2. 包括但不限于架构图、流程图 等。
        3. 把你整个方案的架构和模块、细节流程都描述清楚
      3. 性能目标
        1. 性能一般来说可能包含以下部分:
          1. DAU:日活跃用户数量。一般用于反映网站、互联网应用等运营情况
          2. 平均QPS:可以参考淘宝的平均QPS 估算公式,进行估算
          3. 峰值QPS:一般可以以QPS的2~4倍计算
      4. 资源评估
        1. 给出方案的基准数据,并按性能需求评估需要使用的资源数量
        2. 按照预估性能需求,预估资源数量
          1. 单节点并发量
          2. 单节点容量
          3. 应用服务器的单节点资源配置、节点数
          4. 缓存的单节点资源配置、节点数
          5. 数据存储的单节点资源配置、节点数
          6. 消息队列的单节点资源配置、节点数
          7. 反向代理的单节点资源配置、节点数
          8. 搜索引擎的单节点资源配置、节点数
          9. 伸缩方式
          10. 高可用方式
          11. 监控预警的方式
      5. 方案优缺点
        1. 列出方案的优缺点,
        2. 这个需要通过量化的指标来支撑
    7. 方案2
      1. 可选的另外一种方案,模板和上面一样
    8. 方案对比
      1. 前面给出了多种可选的方案,那么这里就是进行一个简单的对比
      2. 然后,给出自己的觉得最优的方案,并且给出支撑的数据、理由
      3. 有了你自己的决策(倾向)的方案后
      4. 当然,对于最优的方案,就应该提供更有支撑力的细化的方案和数据
  5. 线上方案

    1. 线上方案
      1. 线上方案是对上面你更倾向的方案的更为细致的描述
    2. 架构图
      1. 整体架构是如何,把架构图画上
    3. 关键设计点 和 设计折衷
      1. 把核心的关键点,用自己的 名词系统表达出来
      2. 这里有一个要求:整体是完备的、自洽的
      3. 用来确保你的方案的大体方向是 OK 的。
      4. 因为没有一个方案设计是最完美,方案设计都是逐步演进和优化的
      5. 但是,一定是完整的、系统的、没有大漏洞的
      6. 还有,方案设计是要最符合当前的背景的
    4. 业务流程
      1. 对于业务的核心场景,弄一个整体流程图、核心流程图出来
      2. 然后分业务场景把各个业务场景的流程图也画出来,并且做好相关介绍
    5. 模块划分
      1. 模块的划分需要考虑我们架构设计的一些原则
      2. 比如:架构分层、业务分模块、微服务化、高内聚低耦合 等。
      3. 然后把每个模块的功能点都说清楚
    6. 异常边界【重要】
      1. 异常边界是比较重要的,一般情况下
      2. 大部分人都能考虑到正常的处理流程,对于异常的边界考虑的比较少
      3. 但是线上出问题,大部分都是异常情况导致,因此这里非常重要
      4. 我们可以通过一个 思维导图 去整理相关的异常边界
      5. 这样有助于自己在实现的时候有足够的把控度,也便于别人去 review 你的方案和具体实现(如coding)
      6. 异常边界需要考虑
        1. 涉及到了哪些模块
        2. 涉及到了哪些流程
        3. 每个模块、流程出现了各种可能情况的处理是?
        4. 系统底层原因导致的异常的处理是 ?
  6. 监控、预警、统计

    1. 线上运行的项目,一定需要有各种监控,预警、指标统计
    2. 可以使用 公司内部的基建的监控外
    3. 还需要从业务内部,实现自定义的一些业务监控和相关技术统计
    4. 最终的目标、保证系统的高可用、支撑系统的高可用
  7. 灰度、回滚策略

    1. 容灾方案
      1. 容灾就是当出现 IDC 异常的情况下,怎么容灾,这个可以根据实际情况去考虑。
  8. 部署拓扑

    1. 可以按照下面的方向,去做拓展:
    2. 线上部署拓扑什么,
    3. 各层的部署架构是什么
    4. 多活的部署架构是什么
    5. 公有云部署架构是什么
  9. 风险评估

    1. 风险评估
      1. 标识所选方案的风险,提出解决此风险发生时候的应对策略
      2. 比如:上线失败时的回滚策略
    2. 潜在风险
      1. 相关的改动有哪些风险点
      2. 不兼容点?
      3. 当前设计方案目前存在哪些问题?
      4. 潜在有哪些问题
  10. 阶段规划【架构演进规划】

    1. 架构怎么演进
    2. 阶段如何规划
    3. 每个阶段该达成什么目标
  11. 投入评估

    1. 最后,需要做投入的评估,作为投资回报分析的支撑,包括:
      1. 物理设备、云设备投入评估
      2. 工作量评估
    2. 这里需要细化到每个模块
    3. 工作量评估 一般按照时间进行,一定要同时包括开发时间、联调时间、测试时间
    4. 最好比较细化,不要太粗
    5. 比如开发时间可以细化到接口的维度,每个接口的设计分别需要多长时间

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/808242.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SSH远程登陆系统(RedHat9)

ssh的基本用法 ssh hostname/IP # 如果没有指定用什么用户进行连接,默认使用当前用户登录 ssh –l username hostname/IP ssh usernamehostname ssh usernameIP在第一次连接到服务器时,会自动记录服务器的公钥指纹信息 如果出现密钥变更导致错误可以…

L2-2 巴音布鲁克永远的土(二分+并查集)

思路:我们可以二分答案,然后判断当前答案合不合理。 对于判断答案合理,可以用并查集,看mid能否把所有检查点连进一个集合中,枚举每个结点,如何当前结点周围的四个方向可以连的话,就加进同一个集…

贪心算法|435.无重叠区间

力扣题目链接 class Solution { public:// 按照区间右边界排序static bool cmp (const vector<int>& a, const vector<int>& b) {return a[1] < b[1];}int eraseOverlapIntervals(vector<vector<int>>& intervals) {if (intervals.siz…

基于 OpenHarmony 音符检测实现原理

一、音符检测的基本原理 本文基于 OpenHarmony 开源系统提供了一种音符检测的原理方法&#xff0c;结合多首音乐&#xff0c;运用了 python 和 C 两种编程环境实现了预期的检出效果。旨在为振动马达(vibrator)提供音乐节奏感的触觉效果&#xff0c;代码所在目录 .\base\sensor…

2024.4.12蚂蚁庄园今日答案:豆腐在烹调时容易碎有什么办法可以避免?

原文来源&#xff1a;蚂蚁庄园今日答案 - 词令 蚂蚁庄园是一款爱心公益游戏&#xff0c;用户可以通过喂养小鸡&#xff0c;产生鸡蛋&#xff0c;并通过捐赠鸡蛋参与公益项目。用户每日完成答题就可以领取鸡饲料&#xff0c;使用鸡饲料喂鸡之后&#xff0c;会可以获得鸡蛋&…

JDK版本升级后连不上MySQL数据库的问题

1. 问题描述 用户在将 JDK 版本从 8 升级到 11 后&#xff0c;发现应用无法连接到 MySQL 数据库&#xff0c;出现连接超时或连接被拒绝的错误。 例如出现如下报错信息&#xff1a; 可能原因&#xff1a; JDBC驱动版本不兼容&#xff1a; 新的 JDK 11 可能需要使用更高版本的 My…

docker一键部署GPU版ChatGLM3

一键运行 docker run --gpus all -itd --name chatglm3 -p 81:80 -p 6006:6006 -p 8888:8888 -p 7860:7860 -p 8501:8501 -p 8000:8000 --shm-size32gb registry.cn-hangzhou.aliyuncs.com/cwp-docker/chatglm3-gpu:1.0 进入容器 docker exec -it chatglm3 /bin/bash cd /…

自定义校验器

1.前端校验 <template><el-dialog:title"!dataForm.brandId ? 新增 : 修改":close-on-click-modal"false":visible.sync"visible"><el-form:model"dataForm":rules"dataRule"ref"dataForm"keyu…

Java(IO流)

IO流 用于读写文件中的数据&#xff08;可以读写文件或网络中的数据&#xff09;I&#xff1a;inputO&#xff1a;output 1.IO流的分类 1 流的方向 输入流&#xff08;读取&#xff1a;程序 -> 文件&#xff09;输出流&#xff08;写出&#xff1a;文件 -> 程序&#x…

Hello 算法10:搜索

https://www.hello-algo.com/chapter_searching/binary_search/ 二分查找法 给定一个长度为 n的数组 nums &#xff0c;元素按从小到大的顺序排列&#xff0c;数组不包含重复元素。请查找并返回元素 target 在该数组中的索引。若数组不包含该元素&#xff0c;则返回 -1 。 # 首…

前端实用文档总结

工具类 utools 快捷键 空格option 呼出颜色提取/转换json格式化工具截图markdown笔记文本差异对比svg转png正则… deepl 翻译工具 翻译工具 poe AI工具figma 原型图设计iconfont阿里巴巴图库菜鸟工具-正则表达式Mermaid在线画图&#xff0c;属于文字类画图&#xff0c;根据对应…

C++11 设计模式2. 简单工厂模式

简单工厂&#xff08;Simple Factory&#xff09;模式 我们从实际例子出发&#xff0c;来看在什么情况下&#xff0c;应用简单工厂模式。 还是以一个游戏举例 //策划&#xff1a;亡灵类怪物&#xff0c;元素类怪物&#xff0c;机械类怪物&#xff1a;都有生命值&#xff0…

深入浅析插入排序:原理、实现与应用

在众多基础排序算法中&#xff0c;插入排序以其简洁明了的逻辑和直观的实现方式&#xff0c;赢得了广大程序员的喜爱。本篇博客将带领大家深入了解插入排序的原理、详细实现步骤以及其在实际场景中的应用&#xff0c;帮助读者更好地理解和掌握这一经典排序方法。 一、插入排序…

用python 实现进销存

进销存系统是一个基本的商业管理系统&#xff0c;用于跟踪库存、销售和采购活动。以下是一个简单的进销存系统的Python实现&#xff0c;这个系统包括商品管理、采购入库、销售出库以及库存查询的功能。 首先&#xff0c;我们定义一个Product类来表示商品&#xff1a; python复…

Unity3D知识点精华浓缩

一、细节 1、类与组件的关系 2、Time.deltaTime的含义 3、怎么表示一帧的移动距离 4、Update和LateUpdate的区别和适用场景 5、找游戏对象的方式&#xff08;别的对象 / 当前对象的子对象&#xff09; 6、组件1调用组件2中方法的方式 7、在面板中获取外部数据的方法 8、序列化属…

在Windows系统中开启SSH服务

文章目录 引言I 使用Windows内置的OpenSSH服务器功能1.1 安装并启用SSH服务器1.2 配置SSH服务器的端口号II Windows的run功能III SSH的其他操作3.1 绑定本地端口3.2 本地端口转发3.3 远程端口转发3.4 后台运行3.5 不执行远程操作3.6 在Linux上创建一个git用户用于SSH访问see al…

ChatGPT智能写作:开启论文写作新视野

ChatGPT无限次数:点击直达 html ChatGPT智能写作&#xff1a;开启论文写作新视野 引言 在当今信息爆炸的时代&#xff0c;人们需要更有效的工具来帮助他们在各种领域进行写作。ChatGPT作为一项基于人工智能技术的顶尖产品&#xff0c;为论文写作提供了全新的视角和可能性。…

海外博士后政策,这些重点你不能错过!

​ ​海外高层次人才博士后专项申报政策是针对具有较高学术造诣和研究潜力的海外学者、研究人员&#xff0c;旨在吸引他们回国从事科研工作&#xff0c;推动国内科技创新发展。该政策不仅为海外人才提供了良好的职业发展平台&#xff0c;还为他们提供了丰富的科研资源和优厚…

20240408在线给加密的PDF文件解密【打印限制】

20240408在线给加密的PDF文件解密 百度&#xff1a;PDF解密 https://smallpdf.com/cn/unlock-pdf PDF解密 未选择任何文件 或拖放PDF至此处 无文件大小限制&#xff0c;无广告水印 - 这款易于使用且免费的在线密码移除工具可为您移除恼人的PDF密码。 无需注册 数秒内解锁 PDF …

【GitHub技术全面解析及游戏开发者的应用】

GitHub技术全面解析及游戏开发者的应用 GitHub作为全球最大的开源代码托管平台&#xff0c;不仅为软件开发者提供了一个强大的工具&#xff0c;也为游戏开发者带来了前所未有的便利。在游戏开发领域&#xff0c;GitHub的技术可以帮助开发者更高效地管理代码、协作开发、分享资…