文 / 阿里P7工程师 严明明
目录
抽象原则
共享原则
自治原则
冗余原则
分布原则
自动原则
抽象原则
各平台(含基础设施、中间件技术服务、各层业务服务等)需要通过合理地抽象,将内部信息、处理与扩展能力聚合成标准的服务于扩展接口,并通过统一的形式提供给使用者,屏蔽内部的实现与运行细节。
以下是一些符合抽象原则的架构规范或模式: 架构分层(layer)/级(tier),层、级间提供标准服务与数据接口 根据业务模型,统一服务标准与数据标准 使用服务目录屏蔽服务位置等实现细节 使用“逻辑库”屏蔽数据库物理细节 通过SLA,标准化服务的质量水平 提供标准插件架构支持扩展 使用标准数据库特性,保持厂商无关性 使用逻辑的网络与系统名称 使用商品化硬件单元
共享原则
最大化重用数据、计算资源、业务组件等资产,防止数据、逻辑与技术实现不一致性带来的管理复杂性,避免重复建设成本与管理成本,通过安全机制保证共享资产的合法使用,通过业务分级保障共享资源效益最大化。 以下是一些符合共享原则的架构规范或模式:
同一业务服务有唯一提供者
同一技术服务有唯一提供者
同一数据有唯一可信源
控制技术多样性 (但需要同时防止厂商绑定)
服务具备互操作性
服务具备易用性
统一的身份、访问控制与加解密机制
为共享服务提供多租户能力 (Multi-tenancy)
提供访问计量与控制能力
提供业务分级能力,对不同级别的业务提供区分服务
自治原则
每一个组件(计算资源、业务组件、信息实体等)具备最大可能的自我完备性,可独立运行、监控、部署、配置与禁用,具备确定的SLA,并与其它组件之间以松散耦合的方式进行协作。当依赖的组件不存在或者无法正常提供服务时,能够以良好的方式降级,且在故障解除后自动恢复。 以下是一些符合自治原则的架构规范或模式:
基于开-闭原则(OCP)设计组件
应用无启动依赖
最小化运行依赖集
根据运行依赖关系合理安排组件物理colocation
能够隔离依赖组件的故障
异步调用 (提升异常流量的承载能力,简化故障隔离的实现)
具备自我健康检查能力
具备自我恢复能力
无状态设计
冗余原则
各组件(计算资源、业务组件、数据等)都必须有充分、合理的冗余实例,保证单一组件实例失效不影响业务正常运行(多活/热备),或可以通过切换备份实例快速恢复(温备/冷备),不会丢失不可恢复的数据。针对不同类型的组件,需要明确定义冗余量与冗余类型。 以下是一些符合冗余原则的架构规范或模式:
高可用水平扩展服务器集群(负载均衡、健康检查与自动切换)
无单点设计 (含逻辑单点)
采用“随机写”策略的数据库水平拆分
Failover数据库
N+1或N+x设计
“多活”数据中心
数据复制
灾难备份
分布原则
整个系统拆分成职责清晰、粒度恰当、便于管理的组件,各组件(计算资源、业务组件、数据等)可分布部署运行。组件的拆分与分布可以采取复制、根据功能垂直拆分、或根据用户与访问模式水平拆分等形式。 以下是一些符合分布原则的架构规范或模式:
读写分离设计
垂直分拆
水平分拆
柔性的分布事务
自动原则
系统设计了具备自监控、自管理、自适应与自优化能力,可以随着业务量与访问模式的变化、以及其它内、外部因素的改变,自动地对资源进行调度、调整服务策略,保障自身的稳定与服务的质量。 以下是一些符合自动原则的架构规范或模式:
监控每一个服务的质量与资源的状态与报警
从客户视角监控最终服务的质量
统一、自动的错误报告、管理与响应
提供完备的配置能力
自动化系统安装
自动化应用部署
自动化资源分配
可以mark up/mark down服务
支持优雅降级
自动拒绝超出SLA之外异常流量
-END-