画好一张架构图有多难?

2024-04-08 08:28
文章标签 一张 画好 多难 架构图

本文主要是介绍画好一张架构图有多难?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

78ac4f9b12922a298b65aee34798170a.png

果芽科技

GUOYA TECHNOLOGY

9106398ea4e3de8bbf07ae206b7870f7.png

致力于写大家都能看懂的、有深度的

技术文章

04/2024

经过梳理与整合,我发现我们当前的架构呈现出一个洋葱型结构,从外到内分别是应用层、领域服务层和业务基础能力层。尽管这个基础架构方向是正确的,但绘制出来的架构图却显得杂乱无章,仿佛是我早晨未梳理的头发。

836c67a0854cd44ea630a7f3acabad06.png

31c0c323a55d268a067600c347bf2ca6.png

02

架构图的挑战与机遇

绘制架构图之所以困难,一方面是因为我个人的绘图技巧有待提升,另一方面则是由于当前架构本身的复杂性。不过,这也为我们提供了一个机会:通过改进架构图,我们可以更好地理解和优化整个系统。

为了迈向更加整洁的架构,我们有必要回顾并遵循一些关键的设计原则。

15cead1e9a1755ace5ad2b57859c67c3.png

02

整洁架构的规划设计原则

首先,我们要避免不必要的相互调用和循环调用。这种调用关系违反了设计原则,可能对系统的稳定性和扩展性造成潜在影响。当一个系统内部的相互调用过于频繁时,如果负责团队分开,他们可能会深感架构的痛点,并寻求服务自治来重构和解决问题。

其次,为了确保架构的稳定性,我们应尽量避免跨层级调用。当然,如果出现了一些跨层级调用但并未引发实际问题,且这些功能没有迫切的迭代需求,我们可以暂时保持现状,等待相关需求出现时再进行整体优化。关键在于,绝不能让内层稳定的模块为了适应外层的接口而频繁修改,而应当补充中间缺失的逻辑层次,让中间层来处理这些差异。

此外,随着服务的演进,其定位可能会发生变化。例如,一个领域服务可能会逐渐变得更加稳定,适用于更多的服务,从而演变为业务基础能力。这种平滑演进的方式比完全重写或重新设计架构更具投资回报率。我们应该有一个长期的发展蓝图,但同时也要注重逐步实现。

465e037b67ae3306668c4ad9b7d8ee38.png

02

架构图的梳理与优化

在梳理架构图时,我们还需要关注潜在的单点故障。无论是软件层面的负载均衡还是硬件如F5的主备模式,我们都应思考在出现故障时如何快速恢复。同时,要梳理系统中的各个模块,评估它们是否具备回滚能力,以及回滚的敏捷性是否满足要求。

另外,同步调用可能降低系统的可用性。Amdhal的同步定律也强调了串行化对性能提升的负面影响。因此,我们需要通过架构图来识别这些潜在的优化空间。

最后,通过架构图识别出风险较高的链路,考虑是否需要采用舱壁泳道等机制来隔离失败单元,从而提高系统的整体稳定性。

5ee44a90f720823784781933561606ad.png

04

架构图的展开与打磨

尽管初始的洋葱型架构图显得杂乱无章,但我们可以通过展开它为大家更习惯的方框架构图来使其更加清晰。然而,要进一步优化这张图,需要架构师的不断打磨和改进。这是一个持续的过程,需要我们在实践中不断学习和提升。

48e9681d1802d4e492f21f8f8aeba675.png

e161069f4ffe36605aae86ae14fa1c20.png

05

结语

绘制一张整洁的架构图并非易事,但它是系统检修和设计的关键步骤。通过遵循设计原则、梳理和优化架构图,我们可以逐步迈向更加稳定、可扩展和易于维护的系统。

有人问过我,画出一个公司的整体架构大概要多久。我回答说两天我可以画出一个初版,但是直到最后,我都在不断改进这张架构图:这是一个持续的过程,需要我们不断学习和实践。

PS:在画架构图的时候有个小的注意事项。如果想用图标表示基础组件,一定要配文字,不然很多人、不只是小白,不知道这个表示的到底是什么,识图工具可能也鉴别不出来。谁能告诉我下面这一排表示的是哪些开源组件?

d24629fad20e5d7cc3b4632200133dcd.png

下面这一排就友好很多,不知道的可以根据文字去查。

e471ce5555c504d2c36bc662a5bb7d20.png

cfb67132434699a4f834f5a5945320af.png


74eb99797f2f6de7fef2e548763d936d.jpeg

这篇关于画好一张架构图有多难?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/885061

相关文章

MiniGPT-3D, 首个高效的3D点云大语言模型,仅需一张RTX3090显卡,训练一天时间,已开源

项目主页:https://tangyuan96.github.io/minigpt_3d_project_page/ 代码:https://github.com/TangYuan96/MiniGPT-3D 论文:https://arxiv.org/pdf/2405.01413 MiniGPT-3D在多个任务上取得了SoTA,被ACM MM2024接收,只拥有47.8M的可训练参数,在一张RTX

Oracle把一个表的某个字段更新到另一张表中

第一种方法: update tablea set column_name1=(select name2 from tableb where tableb.name3=tablea.name1) 只修改一个 update tablea set column_name1=(select name2 from tableb where tableb.name3='a') where tablea.na

阿里十年架构师用一张图告诉你什么是系统架构师

阿里十年架构师用一张图告诉你什么是系统架构师 Java架构解析 2018-11-03 20:54:41 这张图从架构师的综合能力、岗位认识、岗位职责等方面,清楚的画出了作为一个架构的基本准则。人人都想成为架构师,可作为架构你达到了图上面的要求了吗?   系统架构师是个神奇的岗位。为什么这么说,在一个人数不多的小公司,你可能什么都需要做,身体力行,做总监兼架构师或者是主管/高级开发兼架构

oracle存储过程Loop循环一张表插入到另外一张表

oracle存储过程Loop循环一张表插入到另外一张表   1、创建一个存储过程   Sql代码   create or replace procedure inserttest as   cursor cs is SELECT sales_id FROM t02salesinfo_backup;sales_id varchar(128);   begin   for c in c

项目实训:创建一张贺卡以及一只盒子——WEB开发系列27

以下是两道关于基础 CSS 盒模型和其他盒子相关特性的练习题,适合测试对这些概念的掌握程度,通过实际的设计任务来深入理解这些概念。 练习题 1: 设计一张中秋节海报贺卡 任务描述 制作一张精美的中秋节海报贺卡,用于庆祝这个传统节日。你的目标是应用 CSS 盒模型的各种属性来创建一个视觉上吸引人的海报,包括边距(margin)、边框(border)、内边距(padding)和内容区域(co

自然语言处理-应用场景-文本生成:Seq2Seq --> 看图说话【将一张图片转为一段文本】

人工智能-自然语言处理(NLP)-应用场景-Seq2Seq:看图说话【将一张图片转为一段文本】

风控建模流程一张图

对于刚进入职场的小伙伴来说,对风控建模岗的内容既好奇,又充满疑问。本文用一张图简单总结风控建模流程,让你快速了解风控建模岗的内容。 文章目录 一、模型开发流程二、什么是风控建模?三、风控建模流程一张图    一、模型开发流程    对于一般的业务模型,其本质是对现有业务问题的抽象理解,从模型生命周期来看,完整的模型开发流程一般包括:    1.模型设计: 抽象问题、确定建模

一张图看懂产品经理五大必备技能

产品经理需要具备的技能,我认为可以总结出以下五个方面: 1、需求 在需求之下又细分为3个技能,分别是需求分析、竞品分析、需求分级。 1.1需求分析 所谓需求分析要求产品经理首先要了解所在的行业和市场的情况,包括行业的当前规模、未来发展趋势、市场饱和度、市场同类产品的发展情况,市场过去3年的数据资料等等; 其次产品经理要通过用户研究,提炼出较为完整的用户画像。要完成这一要求,产品经理通