什么是架构图?
架构图 = 架构的表达 = 架构在不同抽象角度和不同抽象层次的表达
架构可以从很多个角度去看,比如:业务架构、应用架构、技术架构、代码架构、数据架构等。
从架构级别来分类,使用金字塔的说明,上层级别包含下层:系统级、应用级、模块级、代码级。
架构图核心要素:分层、分模块、分功能
业务/产品架构图
业务架构定义:业务架构是从业务和产品的视角出发,描述整个平台或特定产品的业务实现。它涉及业务规划、业务模块、业务流程等方面,并将实际业务拆分成不同的领域,并为这些领域设计模型,将现实世界中的业务流程转化成为可管理和可实施的抽象对象。
制定业务架构原则:业务架构原则应结合企业的具体业务情况制定。以电商平台为例,原则可能包括:
业务平台化:将业务分成相互独立的平台,如交易平台、物流平台等,并将基础业务模块化以便复用。
核心与非核心业务分离:区分电商系统的核心业务与非核心业务,优化核心业务以增强稳定性,同时使非核心业务更加多样化以满足不同需求。
业务隔离:根据不同业务的特点进行隔离,如交易平台需要保证高可用性以快速处理订单,履约业务则强调一致性,而秒杀业务需能处理高并发需求。
主流程与辅助流程区分:清晰区分电商系统中的主要流程和辅助流程,并确保主流程的顺畅运行,对于辅助流程可以采用后台异步处理,减少其对主流程的潜在影响。
应用架构图
(1)稳定原则:
一切以稳定为中心。
架构尽可能简单、清晰,追求小而美,不要大而全。
不过度设计。
(2)解耦
将稳定部分与易变部分分离。
将核心业务与非核心业务分离。
将电商主流程和辅助流程分离。
将应用与数据分离。
将服务和实现细节分离。
(3)抽象
应用抽象化:应用只依赖服务抽象,不依赖服务实现的细节和位置。
数据库抽象化:应用只依赖逻辑数据库,不需要关心物理库的位置和分片。
服务抽象化:应用虚拟化部署,不需要关心实体机的配置,动态调配资源。
(4)松耦合
跨域调用异步化:在不同的业务域之间尽量异步解耦。
非核心业务尽量异步化:在核心业务和非核心业务之间尽量异步化。
在必须同步调用时,需要设置超时时间和任务队列的长度。
(5)容错设计
服务自治:服务能彼此独立修改、部署、发布和管理,避免引发连锁反应。
集群容错:应用系统集群部署,避免单点服务。
多机房容灾:多机房部署、多活。
时序图
技术架构图
技术架构图是一种详细的框架图,它展示了构成应用系统的各个运行组件及其关系,以及这些组件如何部署在硬件上。这些组件可能包括负载均衡器(如LVS),web服务器(如Nginx),应用服务器(如Tomcat),以及其他必要的中间件或服务(如PHP-FPM)。技术架构图特别强调以下方面:
-
技术实现:描述系统关键技术组件和实现,如系统的分层结构、核心技术组件、组件间通信方式和数据流向。
-
非功能性特性:技术架构主要关注系统的可用性、性能、可扩展性、安全性、伸缩性和简洁性,确保系统级别的稳健性。
技术架构的设计原则包括:
-
无状态:尽量避免在本机上保存状态数据,以支持更好的扩展性和可恢复性。
-
可复用性:服务应设计为可复用的业务逻辑抽象,服务之间的引用仅依赖于服务的抽象而不是实现细节。
-
松耦合:跨业务域的调用应尽可能异步解耦,同步调用时应有超时和队列大小设置,以及将基础服务与易变流程服务分离,减少依赖性。
-
可治理原则:确保服务可以灵活地进行降级、限流、开关控制和监控,以及实施白名单机制和服务契约,保障服务质量。
-
基础服务:将基础服务(如时效、库存和价格计算)下沉并复用,确保基础服务的自治性、独立性、精简性和水平扩展能力,以及物理隔离,包括相关数据。