建设厅网站总经济师是干什么的/广告平台网
1. 焦头烂额
最近又遇到个焦头烂额的事情 ,老板有了新想法,业务有所转向,需要新的方案设计 ,架构设计,以进行后续实施。很快,第一次汇报来了, 由于前期准备时间短,模块拆分不清晰,有的部分又讲得过细节,表述的不太好,直接被打回了。
一时之间抓耳挠腮,怎么汇报,讲清其中的设计思路,争取到相应资源,是重点,也是难点。这时急需一组架构图,来辅助,拿下汇报!
2. 架构图
开始之前,问2个问题,
核心目的是什么?
业务架构图的核心目的是统一共识、减少沟通成本,无论是项目中的哪个角色大家都能讲一样的话
- 解决沟通障碍
- 达成共识
- 减少歧义
(超小声bb: 讲清楚, 让老板能听懂)
给谁讲,受众是谁?
要明确受众,再想清楚要给他们传递什么信息。
- 小白用户,甚至对于这部分业务也是一知半解
- boss,公司老板,高管
- 技术人员,相关业务人员,甚至后续直接负责开发
- 同事,公司的跨部门的团队,同事
所以你的受众是谁,决定他的关注点和理解能力,也决定他要看到什么样的架构图。
架构图种类
- 业务架构: 业务架构属于顶层设计,概览性强,high level,简洁易懂,又可以根据其展开,其对后续的业务定义和技术架构都有影响;
- 应用架构: 描述有哪些功能,其间的关系是什么样的。根据业务场景需要,设计应用的层次结构。一般由业务负责人或者产品负责人绘制。
- 技术架构: 描述了需要哪些服务;选择哪些技术组件来实现技术服务;技术服务以及组件之间的交互关系;
- 数据架构: 描述了数据模型、分布、数据的流向、数据的生命周期、数据的管理等关系;
方法论
论1: SOA
SOA 是缩写 Service-Oriented Architecture(面向服务的架构),十分经典的分层,设计模式。对应到 应用,服务,资源。
同时在规划云服务相关的架构时,还有种云计算的标准三层架构,即SaaS层,PaaS层,IaaS层。
- SaaS层:具体的应用;
- PaaS层:构建平台层服务能力;
- IaaS层:IT基础设施和虚拟化;
个人理解 : SaaS层+PaaS层+IaaS层一定程度也可以映射到 :应用+服务+资源,
即SaaS代表应用,PaaS层代表服务,IaaS层代表了底层依赖的资源。
论2: C4模型
C4指定是 Context 上下文场景、Container 容器、Component 组件和 Classes 类(或者 Code 代码),对应语境图 ,容器图,组件图 ,类图
- 语境图 :业务示意
- 容器图 :业务主要部分的展开
- 组件图 :业务主要部分组件的描述
- 类图 :如何实现组件(甚至都涉及到代码变量命名)
可以看出C4模型是逐层展开 ,细化的,从high level一直到细节的类设计。
这里有篇 【软件架构设计|C4模型】 介绍,写的比较详细这里不展开细述了。同时这边找了c4模型配套画图工具, 放在文末,见附录 - c4模型。
SOA 和 C4对比:这两种模型简单对比下,
- 个人觉得SOA更普适性,通用,整体比较high level,适合一些概览性的图例。也可以用于前期思路梳理,沟通汇报。
- C4模型,由浅入深,逐层展开,严格按照C4画,画完可以直接对应开发了(细化到了Class/Code层),更适合项目需求定型 比较明确了,或者十分严谨的项目 比如银行,金融相关项目。
论3: 三层架构
这里的三层架构特指 应用架构中的一种标准设计模式( PS: 没有找到其对应专属名称,有知道的小伙伴欢迎打在评论区 :抱拳 ),通常分为表示层(门户)、业务逻辑层(应用)和数据层(支撑)。
- 门户层(Presentation Layer):这一层是系统的用户界面部分,用户通过它来访问和使用系统。它可以包括网站、移动应用、桌面应用等所有直接与用户交互的前端界面。主要职责是展示数据和捕获用户输入,通常不包含复杂的业务逻辑。
- 应用层(Application Layer):这一层包含系统的核心业务逻辑和功能。它处理来自门户层的请求,并与支撑层交互以执行必要的操作。这一层确保业务规则得到执行,并且对外提供服务接口(例如API)。
- 支撑层(Support Layer):这一层负责底层服务或数据存储支持。这一层为应用层提供必要的资源和服务支持,使得业务逻辑可以顺利执行。
至此,架构图的受众,目的,种类,方法论都说了。总结来看就是 ,先明确 受众,再找所需侧重点,最后选取不同方法/模板进行绘图。
下面再用几个具体示例,一起感受下,
3. 示例
参考1 - 滴滴: 业务架构 - SOA
从上到下 ,应用,服务,资源。
参考2 - web服务: 技术架构 - SOA
中间三层可以都认为是服务层 。
参考3 - 数据平台:技术架构 - SOA
参考4 - 非SOA ,纯纯技术架构图
悄咪咪插入一张技术架构图,但是这个不是基于SOA分层思路画的,也可以明显感觉到和之前的结构差异。
这张图的技术架构重点需要回答的就是你在进行软件架构设计过程中,究竟会用到哪些关键技术,哪些开源产品或工具等。
参考5 - 财务系统:应用架构图 - 三层架构
结构从上到下:门户, 服务,支撑。注意:应用功能架构完全是重点描述应用系统具备哪些功能,一个功能究竟是采用什么三层技术架构实现并不用关心。因此功能架构不应该体现数据层,逻辑层,技术点这些内容。
最后,一起扒一个架构图
看到最后,留一个开放问题,这是一张百度自动驾驶平台Apollo开放平台架构图,那么拆解下,可以理清这张架构图是基于什么思路绘制的吗?欢迎有懂行的小伙伴评论区留言。
结语
评判图的好坏
- 一张好的架构图不需要多余的文字解释!受众有没有准确接收到想传递的信息;如果它所导致的疑问比它能解释的问题还要多,那么它就不是一张好的架构图;
- 图中的信息与相应的抽象级别相关,且满足利益相关者(合作方)的需求;
- 内容术语一致、信息粒度大小一致,图例清晰,颜色类型统一,美观;
简单来说,对照文章最开始提到,画出的图好不好的一个最直接标准就是:受众有没有准确接收到想传递的信息。方法论,工具这些都是辅助,最最最重要的,无论是什么形式的架构图,能针对受众,表达清楚。 最后再稍微分享几句我的经验,
我的经验
1,学习:别人架构模板,SOA ,方法论。
2,模仿:看网上各种画的好的,最近发现个 亿图图示 里面有大量优秀图例,在文末附录 - 图例参考。
3,实践:我的笨办法 ,尽可能的枚举。不论绘制什么类型架构图,都先尽可能枚举,比如枚举场景,功能或者技术信息,尽可能多的列出相关信息 ,再整合抽象 。 也是有人说 书先读厚,再读薄的过程 。
文末彩蛋,多视角
架构图都是可以拆解和再展开的,比如对于应用层本身又可以考虑业务域进一步拆分,或者根据业务生命周期拆分为多个阶段域再展开描述。也可以说一个完整的架构本身就是多视角,可以从多个视角去描述。
最后感谢各位读者观看,创作不易 ,汇总梳理创作耗费大量时间。如果觉得有所帮助 或者 启发,还麻烦点赞,收藏,这是对作者的最大支持!:抱拳
参考
系统架构图怎么画
如何绘制漂亮的架构图,方法论+工具:
讲什么是SOC,分层
如何画好架构图1
如何画好架构图2
人人都是产品经理, 不同种类的架构图
c4模型
c4软件
c4 vscode插件
图例参考
大量的图示
绘制工具
绘制工具参考,个人推荐draw.io,免费开源,各个端都支持,还有网页版 多人协助也可以。
相关文章:

【抓耳挠腮,还是升职加薪,一起来画架构图!】
1. 焦头烂额 最近又遇到个焦头烂额的事情 ,老板有了新想法,业务有所转向,需要新的方案设计 ,架构设计,以进行后续实施。很快,第一次汇报来了, 由于前期准备时间短,模块拆分不清晰&a…...

算法的学习笔记—合并两个排序的链表(牛客JZ25)
😀前言 在算法面试中,链表问题是经常遇到的考点之一,其中合并两个排序链表是一个非常经典的问题。本文将详细介绍如何通过递归和迭代两种方式实现两个有序链表的合并。 🏠个人主页:尘觉主页 文章目录 😀合并…...

《虚拟之旅:开启无限可能的机器世界》简介:
1.Ubonto的介绍: Ubuntu 是一个流行的开源操作系统,基于 Linux 内核。 它具有以下一些特点和优势: 开源免费:任何人都可以免费使用、修改和分发。丰富的软件库:通过软件包管理器可以方便地安装各种应用程序。良好的…...

centos7 服务器搭建
1. 查看 centos 版本 cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core)2 .查看 ip地址 ip addr sudo yum install net-tools -y 3. 是否能够上网 ping www.baidu.com ping 114.114.114.114 sudo systemctl restart network 4. DNS 更新DNS配置 编辑/etc/r…...

【Godot4自学手册】第四十五节用着色器(shader)制作水中效果
本节内容,主要学习利用着色器制作水波纹效果,效果如下: 一、搭建新的场景 首先我们新建场景,根节点选择Node2D,命名为Water,给根节点添加两个Tilemap节点,一个命名为Background主要用于绘制地…...

VMware Workstation Pro 安装 Ubuntu Server
这里写目录标题 VMware Workstation Pro 安装 Ubuntu Server1. 启动选项2. 系统语言3. 安装程序升级4. 键盘配置5. 安装类型6. 网卡配置7. 代理配置8. 系统镜像配置9. 硬盘配置10. 账户配置11. Ubuntu Pro 版本12. SSH 服务13. 推荐软件14. 安装成功15. 第一次重启报错16. 登录…...

智能化包括自动化与非自动化
智能化通常指的是系统或设备具备智能功能,以提高其自主性和效率。智能化可以分为自动化与非自动化两大类,每一类都有其独特的特点和应用场景。 一、自动化 自动化指的是系统能够在无需人为干预的情况下完成任务或操作。自动化系统通常依赖于预设的规则、…...

微前端架构的容器化部署:策略、实践与优势
随着微服务架构的兴起,微前端架构也成为现代Web应用开发的热门趋势。容器化技术,以其轻量级、可移植性和易于管理的特点,成为微前端部署的理想选择。本文将详细介绍微前端架构下应用容器化部署的策略、实践步骤以及这一方法的优势。 容器化技…...

面试题(网络、js、框架)
自我介绍 您好,面试官!我叫[您的姓名],非常荣幸能有机会参加这次面试。 在过去的 3 年里,我一直专注于前端开发领域,积累了丰富的实践经验。 在 Vue.js 项目中,我能够熟练运用组件化开发模式,实…...

C语言典型例题40
《C程序设计教程(第四版)——谭浩强》 题目 例题3.8 运输公司对用户计算运费。路程(以s表示,单位为千米),吨/千米运费越低。标准如下: s<250 没…...

【大模型部署及其应用 】使用 Ollama 和 Ollama WebUI 在本地运行 Llama 3
使用 Ollama 和 Ollama WebUI 在本地运行 Llama 3 目录 开始使用 Llama 3设置 Ollama WebUI访问 Ollama WebUI使用 Docker GenAI Stack 的 Llama 3骆驼 2 与 骆驼 3...

uniapp-部分文件中文乱码
一、问题 在开发时遇到,部分页面的中文显示乱码,如图 搜索了一下解决方法,这里记录一下 二、问题原因: 页面的编码格式不是 utf-8 造成的 三、解决方法 打开出现乱码页面选择编译器左上角的文件 > 以指定编码重新打开 选择U…...

Day41 | 647. 回文子串 516.最长回文子序列
语言 Java 647. 回文子串 回文子串 题目 给你一个字符串 s ,请你统计并返回这个字符串中 回文子串 的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子字符串 是字符串中的由连续字符组成的一个序列。 思路 动规五部曲来分析 1.dp数组的含义&#x…...

全面解析Gerapy分布式部署:从环境搭建到定时任务,避开Crawlab的坑
Gerapy分布式部署 搭建远程服务器的环境 装好带docker服务的系统 Docker:容器可生成镜像,也可拉去镜像生成容器 示例:将一个环境打包上传到云端(远程服务器),其他8个服务器需要这个环境直接向云端拉取镜像生成容器,进而使用该环境,比如有MYS…...

Springboot项目中使用druid实现多数据源和动态数据源,因数据库不可用导致的项目挂起的处理方案
Springboot项目中使用druid因数据库不可用导致的项目挂起的处理方案 在Spring Boot项目中使用Druid实现多数据源和动态数据源管理是一个常见的场景。通过合理的配置和错误处理机制,您可以有效地管理数据源,避免因数据库不可用而导致整个项目挂起。 1.…...

多线程 03:知识补充,静态代理与 Lambda 表达式的相关介绍,及其在多线程方面的应用
一、概述 记录时间 [2024-08-16] 前置知识:Java 基础篇;Java 面向对象 多线程 01:Java 多线程学习导航,线程简介,线程相关概念的整理 多线程 02:线程实现,创建线程的三种方式,通过多…...

机器学习中的距离概念
距离在机器学习中应用广泛,包括欧式距离、曼哈顿距离、内积距离和KL距离。 下面总结一下。 机器学习中的距离 欧式距离曼哈顿距离内积距离KL距离距离作为损失函数(MSE/MAE...)欧式距离与内积距离的联系☆距离的有效性 欧式距离 欧式距离(Euclidean Dis…...

Java 如何判断map为null或者空
1.示例一 在Java中,如果我们想判断一个Map是否为null或者空(即没有任何键值对),我们可以使用以下的方法。下面是一个完整的示例代码,展示了如何进行这样的判断: import java.util.HashMap; import java…...

终端用户视角下的性能测试,体验与度量的融合
传统的性能测试的度量标准是什么 响应时间(Response Time): 这是从客户端发出请求到接收到完整响应所需的时间。响应时间是衡量系统性能的重要指标,特别是在面向用户的应用中,因为它直接影响用户体验。 而用户体验的度…...

KCP源码解析系列(二)KCP协议结构体
一、KCP协议包 1.1 kcp协议包 kcp中只有一种数据包,不管是数据还是控制信息,都用这个数据包来表示 0 4 5 6 8 (BYTE) ---------------------------- | conv |cmd|frg| wnd | ---------------------------- 8 | …...

微软运行库全集合:一站式解决兼容性问题
开发者在部署应用程序时经常遇到因缺少运行库而引发的兼容性问题。为了解决这一问题,电脑天空推荐微软常用运行库合集,一个集成了微软多个关键运行库组件的软件包。 📚 包含组件概览: Visual Basic Virtual Machine:…...

【 亿邦动力网-注册安全分析报告】
前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞 …...

算法笔记|Day26贪心算法IV
算法笔记|Day26贪心算法IV ☆☆☆☆☆leetcode 452. 用最少数量的箭引爆气球题目分析代码 ☆☆☆☆☆leetcode 435. 无重叠区间题目分析代码 ☆☆☆☆☆leetcode 763.划分字母区间题目分析代码 ☆☆☆☆☆leetcode 452. 用最少数量的箭引爆气球 题目链接:leetcode …...

CVPR2023《DNF: Decouple and Feedback Network for Seeing in the Dark》暗光图像增强论文阅读笔记
相关链接 论文链接 https://openaccess.thecvf.com/content/CVPR2023/papers/Jin_DNF_Decouple_and_Feedback_Network_for_Seeing_in_the_Dark_CVPR_2023_paper.pdf 代码链接 https://github.com/Srameo/DNF 摘要 RAW数据的独特属性在低光照图像增强方面展现出巨大潜力。…...

大厂进阶七:React状态管理全解析
前言: React 中用于状态管理的hook及库有:useState、useReducer、useContext、useReducer useContext和一些第三方的库如redux、mobx等。 1、useState 单一组件某个具体状态 2、useReducer 单一组件中多个状态管理,策略分发机制统一管理…...

【ocr识别003】flask+paddleocr+bootstrap搭建OCR文本推理WEB服务
1.欢迎点赞、关注、批评、指正,互三走起来,小手动起来! 2.了解、学习OCR相关技术知识领域,结合日常的场景进行测试、总结。如本文总结的flaskpaddleocrbootstrap搭建OCR文本推理WEB服务应用示例场景。 文章目录 1.代码结构2.效果演…...

从零开始搭建 LVS 高性能集群 (DR模式)
从零开始搭建 LVS 高性能集群 (DR模式) 架构 本设计方案采用三台服务器构建集群,使用Linux Virtual Server (LVS) 作为负载均衡器,运行在直接路由 (DR) 模式下。集群中的每一台服务器都将运行相同的服务,以实现 高可用…...

Linux环境开发工具【yum与vim】
🌈个人主页:Yui_ 🌈Linux专栏:Linux 🌈C语言笔记专栏:C语言笔记 🌈数据结构专栏:数据结构 文章目录 1.Linux软件包管理器yum1.1 快速使用yum 2. Linux编辑器-vim的使用2.1 vim的基本…...

laravel GuzzleHttp Client 无法获取返回的错误信息
Client发送一些请求,当返回状态不是200的时候,无法获取完整错误信息 $client new Client([base_uri > $this->getUri()./order/aaaaaa,timeout > 30,verify > false]);try {$response $client->request(POST, , [headers > [Lang&g…...

XMOS 多路音频解码器
当谈及高性能音频解码器,XMOS 是一个不容忽视的名字。作为音频解决方案领域的领军者,XMOS 的多路音频解码器在音频处理技术中扮演着至关重要的角色。下面我们一起深入探讨 XMOS 多路音频解码器去了解这一技术的魅力。 设计背景:追求音频极致…...