画好一张架构图有多难?

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

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值