架构设计关键点

本文探讨了架构设计的关键点,包括如何设计可扩展、高性能和高可用的架构。在可扩展性方面,介绍了拆分和封装的策略;在高性能设计中,讨论了单机和集群的解决方案;对于高可用架构,提出了计算和存储的高可用方案,如数据复制和状态决策。此外,还提到了提升架构质量的关注点,如低成本、安全性以及可测试性、可维护性和可观测性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

架构设计关键点

一:如何设计可扩展架构

目标:

  1. 理解架构设计复杂度模型
  2. 理解可扩展架构的复杂度本质
  3. 掌握可扩展架构的“拆分”和“封装”手段

1.架构设计复杂度模型

【业务复杂度】

业务固有的复杂度,主要体现为难以理解、难以扩展,例如业务数量多(微信)、业务流程长(支付宝)、业务之间关系复杂(例如ERP)。

【质量复杂度】

高性能、高可用、成本、安全等质量属性的要求。

业务复杂度和质量复杂度是正交的

可扩展定义

可扩展 extensibility:系统适应变化的能力,包含可理解和可复用两个部分

可伸缩 scalability:系统通过添加更多资源来提升性能的能力

可理解和可复用是如何影响可扩展的?

2.可扩展复杂度模型

3.可扩展架构设计 - 拆分

鸡蛋篮子第一法则(拆分法则):如果一个篮子数不清,拆分到多个篮子再数!

拆分粒度 - 两个复杂度

内部复杂度

又称为“单体复杂度”,指单个对象内部的复杂度,例如传统的单体系统,所以业务都在一个系统里面。可以用参与的开发人数来衡量单个拆分对象的复杂度。

例如:3个人负责一个子系统/子模块是比较合理的,20个人来在同一个子系统上开发,则内部复杂度过。

外部复杂度

又称为“群体复杂度”,指拆分后的多个对象之间的关系复杂度。可以用业务流程涉及对象数量来衡量外部复杂度。

例如:一次用户请求需要5个子系统参与是比较合理的,如果需要20个子系统参与,则外部复杂度过高。

拆分粒度 - 平衡的艺术

拆分第一原则:内部复杂度和外部复杂度是天平的两端,一方降低,另一方必然升高,关键在于平衡。

拆分第二原则:如果你把握不准,那么就先拆少一些,后面发现有问题再继续拆分。

4.可扩展架构设计 - 封装

预测最大的挑战:一切皆有可能?

预测第一原则:只预测2年内的可能变化,不要试图预测10年后的变化

例如:你准备接入微信支付,那么预测接入支付宝是很自然的,但数字钱包就没那么必要了

预测第二原则:3次法则,预测没有把握就不要封装,等到需要的时候重构即可

例如:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值