系统架构与设计能力
- 掌握主流架构模式:
单体架构、微服务架构(Spring Boot / FastAPI + gRPC)、事件驱动架构(Kafka + RabbitMQ)、CQRS、六边形架构、分层架构(Controller-Service-Repository)等。 - 熟悉分布式系统原理:
CAP定理、一致性、负载均衡、服务发现、熔断降级、分布式事务。具备高并发、高可用、高性能设计经验:能针对业务场景做出合理权衡。 - 云原生与部署架构:
熟悉Docker容器化、Kubernetes编排、服务网格(如Istio)以及云服务平台(AWS/Aliyun/腾讯云)的常用服务。能够设计可弹性伸缩、易于部署和运维的系统架构。 - 安全性设计:
将安全作为架构的核心要素,包括但不限于身份认证与授权(OAuth2.0, JWT)、数据加密、API安全、常见Web漏洞防护等。
分布式系统原理
分布式系统是由多台通过网络通信、协同完成任务的计算机节点组成的系统,对外呈现为一个统一的整体。其核心在于分而治之与冗余容错,以解决单机系统在性能、可靠性与扩展性上的瓶颈。
核心原理
- 透明性:用户无需感知底层多节点的存在,如同操作单一系统 。
- 分片(Partitioning):将数据或任务拆分到多个节点,提升并发与存储能力 。
- 副本(Replication):为数据或服务维护多个副本,增强可用性与容错性 。
- 异步通信:节点间通过消息传递(如 RPC、消息队列)协作,不依赖共享内存 。
- 三态机制:远程调用结果只有三种可能------成功、失败、超时(未知),增加了系统设计复杂度 。
关键挑战与应对
- 网络不可靠:丢包、延迟、分区(脑裂)等问题,需依赖重试、超时、心跳检测等机制 。
- 数据一致性:多副本间如何保持一致,常用协议包括:
- Paxos / Raft:实现强一致性(如分布式数据库、配置管理)。
- 最终一致性:适用于电商、社交等场景,允许短暂不一致 。
- 缺乏全局时钟:事件顺序难以全局排序,常用逻辑时钟(如 Lamport Clock)或向量时钟解决 。
- 节点故障常态:系统需具备自动故障检测、主备切换、数据恢复能力 。
经典架构模型
- 三层架构
- 接入层:负载均衡、连接管理
- 逻辑层:业务计算、服务拆分(如微服务)
- 数据层:分布式存储(如分库分表、HDFS)
- 一致性算法
- Raft:易理解,通过 Leader 选举与日志复制保证强一致性
- Paxos:理论完备但实现复杂,用于 Google Chubby 等系统
- CAP 定理权衡
- CP:优先一致性和分区容错性(如金融系统)
- 放弃可用性:当发生网络分区时,为保证数据一致性,系统可能拒绝部分请求(返回错误或超时)。
- 典型应用:传统关系型数据库(如 PostgreSQL)、ZooKeeper
。
- AP:优先可用性和分区容错性(如社交网络)
- 放弃强一致性:系统在分区期间仍可响应请求,但可能返回旧数据,通过"最终一致性"达成一致。
- 典型应用:大多数 NoSQL 数据库(如 Cassandra、Dynamo)、电商系统的商品浏览页 。
- CA:传统单机系统,不适用于分布式场景
- 放弃分区容错性:假设网络永不故障,无法容忍分区。
- 实际意义有限:违背分布式系统本质,因网络分区不可避免,故严格意义上的 CA 系统在分布式环境中不实用 。
- CP:优先一致性和分区容错性(如金融系统)
CAP 定理的核心内容
CAP 定理指出:在一个分布式系统中,一致性(Consistency)、可用性(Availability)和分区容错性(Partition Tolerance)三者无法同时满足,最多只能同时实现其中两项。
- 一致性(Consistency):所有节点在同一时刻看到的数据完全一致。即,写操作成功后,后续所有读操作都应返回最新值 。
- 可用性(Availability):每次请求都能获得非错误响应(不保证是最新的数据),系统始终处于可响应状态,即使部分节点故障 。
- 分区容错性(Partition Tolerance):系统在出现网络分区(如节点间通信中断)时,仍能继续运行并提供服务
CAP实际设计中的权衡
- 互联网高并发场景(如社交、电商):普遍选择 AP,牺牲强一致性以换取高可用性和用户体验 。
- 金融、支付等强一致需求场景:选择 CP,确保数据准确,即使牺牲部分可用性 。
- BASE 理论(Basically Available, Soft state, Eventually consistent)是 CAP 在 AP 方向上的工程实践延伸,强调最终一致性 。
总结:CAP 定理揭示了分布式系统设计的根本权衡。P 是必选项,C 与 A 需二选一,具体选择应基于业务需求
分布式系统-负载均衡
在分布式系统中,负载均衡(Load Balancing)是指将客户端请求或工作负载智能、均匀地分发到多个服务器节点,以提升系统性能、可用性和可扩展性,避免单点过载导致服务降级或中断。
核心目的
提高系统性能:通过并行处理请求,减少响应时间。
保障高可用性:自动剔除故障节点,确保服务连续。
支持弹性扩展:按需增减节点,无缝适应流量变化。
优化资源利用率:避免部分服务器过载而 others 空闲。
工作原理(简化流程)
1.请求接收:负载均衡器作为流量入口,接收所有客户端请求。
2.健康检查:定期探测后端服务器状态,仅将请求发给健康节点。
3.算法决策:根据预设调度算法选择最优目标服务器。
4.流量转发:将请求转发至选中的服务器,并返回响应给客户端。

四层适合高并发、低延迟场景;七层适合需要内容识别、A/B测试、会话保持等高级功能的场景。
常用调度算法
- 轮询(Round Robin):按顺序轮流分配请求。
- 加权轮询(Weighted RR):按服务器性能分配不同权重。
- 最少连接(Least Connections):优先发给当前活跃连接最少的服务器。
- IP哈希(IP Hash):根据客户端IP固定分配到同一服务器,实现会话保持。
- 最小响应时间(Least Response Time):选择响应最快的服务器。
典型应用场景
Web服务高并发访问(如电商大促)
微服务架构中的服务间调用
全球分布式系统(结合GSLB实现就近访问)
云原生环境(如Kubernetes Service自动负载均衡)
现代发展趋势
AI驱动智能调度:预测流量峰值,自动扩缩容。
服务网格集成(如Istio):实现细粒度、安全的流量管理。
边缘负载均衡:在CDN节点就近处理请求,降低延迟。
无服务器支持:适配FaaS函数冷启动等特性。
分布式系统-服务发现
在分布式系统中,服务发现是一种核心机制,用于动态管理服务实例的位置信息,使服务消费者能够自动、实时地找到可用的服务提供者,而无需硬编码地址或依赖静态配置。
服务发现是指:服务实例在启动时向注册中心注册自身信息(如 IP、端口、元数据等),服务消费者通过查询注册中心获取目标服务的可用实例列表,从而实现动态通信的过程 。它是微服务架构中实现服务间动态调用的"动态路由表"。
为什么需要服务发现?
- 服务实例的网络地址(尤其是云原生/容器环境中)是动态分配的,无法提前预知 。
- 系统需支持自动扩缩容、故障恢复、版本升级等场景,静态配置无法应对 。
- 服务发现解决了"谁在哪儿、是否健康、如何连上"的关键问题 。
核心流程
1. 服务注册:服务启动时向注册中心上报自身信息(如 IP、端口、健康检查路径等)。
- 健康检查:注册中心定期检测服务实例状态(如通过心跳、HTTP 健康端点),剔除不可用实例 。
3. 服务发现:消费者向注册中心查询目标服务的可用实例列表 。
4. 服务调用:消费者根据负载均衡策略选择一个实例进行调用 。
5. 服务注销:服务关闭时主动从注册中心移除注册信息,或由注册中心因心跳超时自动移除 。
主要实现模式
- 客户端发现模式
- 消费者直接查询注册中心,获取服务列表后本地负载均衡(如 Netflix Eureka + Ribbon)。
- 优点:低延迟、灵活定制负载策略。
- 缺点:客户端耦合注册逻辑,多语言支持复杂 。-
- 服务端发现模式
- 消费者通过API 网关或负载均衡器(如 Nginx、Envoy、Kubernetes Service)转发请求,由中间件负责查询注册中心并路由 。
- 优点:客户端简单、统一治理。
- 缺点:增加一跳延迟,网关需高可用 。

典型应用场景
- 微服务架构:服务动态上下线,自动感知拓扑变化 。
- 容器编排(如 Kubernetes):内置服务发现(kube-dns + Endpoints)。
- 多集群/混合云:跨注册中心协同(如 Consul Federation)。
- 灰度发布/金丝雀发布:基于标签的流量路由 。
总之,服务发现是保障分布式系统弹性、高可用、可扩展的基础设施,其选型需结合一致性要求、运维能力、技术栈等因素综合考量 。
分布式系统-熔断降级
在分布式系统中,熔断降级是两种协同使用的容错机制,用于提升系统在面对服务故障或资源过载时的稳定性与可用性。
熔断(Circuit Breaker)
- 核心思想:模仿电路保险丝,当依赖服务出现故障(如超时、异常率高)时,主动切断调用,防止故障扩散引发雪崩。
- 工作状态:
- 关闭(Closed):正常调用依赖服务。
- 打开(Open):错误率或响应时间超过阈值(如10秒内失败50%),熔断器打开,直接拒绝请求,不走网络。
- 半开(Half-Open):经过设定时间(如5秒)后,放行少量请求探测服务是否恢复。若成功,则关闭熔断;否则保持打开。
- 典型场景:支付系统依赖风控服务,若风控超时,触发熔断,快速失败释放线程资源。
降级(Fallback)
- 核心思想:在系统压力大或部分功能不可用时,暂时牺牲非核心功能,保障核心流程可用。
- 实现方式:
- 返回默认值(如库存为0)
- 使用缓存数据
- 展示静态页面
- 关闭非关键功能(如推荐、评论)
- 触发条件:
- 超时
- 失败次数过多
- 服务宕机(网络/DNS/RPC异常)
- 限流触发
- 人工干预(如大促手动降级)
- 典型场景:双11期间关闭"查看历史订单"功能,确保下单、支付稳定。

常用实现框架 - Resilience4j:Spring Cloud 推荐替代 Hystrix 的轻量级库,支持熔断、限流、舱壁等 。
- Sentinel:阿里开源,支持流量控制、熔断降级、系统负载保护
- Hystrix(已停更):Netflix 开源,曾为行业标准,但不再维护,建议迁移到 Resilience4j 或 Sentinel 。
分布式事务
在分布式系统中,分布式事务是指事务的参与者、资源(如数据库、消息队列等)以及事务管理器分别位于不同节点或系统上,需要通过跨网络的协调机制,确保所有参与操作要么全部成功,要么全部失败,从而保障数据的一致性。
核心目标
- 保证跨多个服务或数据源的操作满足 ACID 属性(原子性、一致性、隔离性、持久性)。
- 在网络不可靠、节点可能故障的分布式环境下,仍能维持系统状态的一致性。
典型场景
- 跨服务操作:如电商下单时,订单服务扣减库存、支付服务扣款、积分服务增加积分。
- 跨数据库操作:如用户信息和订单信息分别存储在两个不同的数据库实例中。
- 微服务架构:每个微服务独立部署,事务需跨越多个 JVM 进程。
主要实现模式
- 强一致性方案(CP 模式)
- 2PC(两阶段提交):协调者先询问所有参与者是否准备好,全部同意后再统一提交。存在阻塞、单点故障等问题。
- 3PC(三阶段提交):在 2PC 基础上增加 CanCommit 阶段和超时机制,缓解阻塞问题。
- XA 协议:基于 X/Open DTP 模型,由事务管理器(TM)协调资源管理器(RM),适用于传统数据库(如 MySQL、Oracle)。
- 最终一致性方案(AP 模式,柔性事务)
- TCC(Try-Confirm-Cancel):业务层实现补偿逻辑,Try 预留资源,Confirm 确认,Cancel 回滚。
- Saga 事务:将长事务拆分为多个本地事务,每个步骤有对应的补偿操作。
- 本地消息表:通过本地事务+消息表保证消息可靠投递,实现异步最终一致。
- 最大努力通知:由消息队列(如 RocketMQ)支持事务消息,允许失败后重试。
实用框架
Seata:开源分布式事务解决方案,支持多种模式:
- AT 模式:无侵入,自动回滚(默认)。
- TCC 模式:业务自定义补偿逻辑。
- Saga 模式:长事务编排。
- XA 模式:强一致性,兼容传统数据库。
云原生与部署架构
云原生的核心特征
在分布式系统中,云原生(Cloud Native)是一种专为云环境设计的应用架构理念与技术体系,旨在充分利用云计算的弹性、可扩展性和分布式特性,构建松耦合、高容错、易管理的现代应用系统。
分布式系统强调将任务分散到多个节点协同处理,而云原生是实现分布式系统的现代化方法论。它不仅解决分布式带来的复杂性(如服务发现、容错、一致性),还通过自动化和标准化手段降低运维成本 。例如:一个电商系统在传统分布式架构中可能由多个部署在虚拟机上的模块组成;而在云原生架构下,这些模块被拆分为微服务,分别容器化,由 Kubernetes 编排,自动扩缩容,并通过服务网格管理通信
- 容器化:使用如 Docker 等技术将应用及其依赖打包成轻量、可移植的容器,实现一致的运行环境 。
- 微服务架构:将单体应用拆分为多个独立部署、自治的小型服务,每个服务聚焦单一业务功能,提升灵活性与可维护性 。
- DevOps 与持续交付(CI/CD):通过自动化工具链实现开发、测试、部署的高效协同,支持频繁、可靠、低风险的发布 。
- 不可变基础设施:基础设施一旦部署便不再修改,变更通过全新部署实现,降低配置漂移风险 。
- 声明式 API:通过定义"期望状态"而非操作步骤来管理资源,系统自动维持该状态,增强自愈能力 。
- 服务网格:用于处理服务间通信的专用基础设施层,保障请求可靠传递(如 Istio、Linkerd)。
- 弹性与可观测性:系统能根据负载自动伸缩,并提供完善的监控、日志与追踪能力,便于快速定位问题 。
Docker容器化
Docker容器化是一种轻量级的虚拟化技术,用于将应用程序及其所有依赖项(如代码、运行时、系统工具、库和配置文件)打包到一个标准化、可移植的单元------容器中,从而实现跨环境的一致运行。
核心概念
- 镜像(Image):只读模板,包含运行应用所需的所有内容,相当于"容器的蓝图"。
- 容器(Container):镜像的运行实例,具有独立的文件系统、网络和进程空间,可启动、停止、删除。
- Dockerfile:文本文件,定义如何构建镜像,包含一系列指令(如 FROM、COPY、RUN 等)。
- 仓库(Registry):存储和分发镜像的服务,如公共的 Docker Hub 或私有仓库(如 Harbor)。
主要优势
- 环境一致性:解决"在我机器上能跑"的问题,开发、测试、生产环境完全一致。
- 轻量高效:共享宿主机内核,无需完整操作系统,启动快、资源占用低。
可移植性强:可在任何支持 Docker 的平台(Linux、Windows、云环境)上运行。
快速部署与扩展:支持自动化 CI/CD 流程,便于微服务架构下的水平扩展。
隔离性:容器间相互隔离,互不干扰,提升安全性与稳定性。

Kubernetes编排
Kubernetes 编排(通常简称为 K8s 编排)是指利用 Kubernetes 平台对容器化应用进行自动化部署、扩展、管理和运维的过程。它属于容器编排的一种具体实现,而容器编排本身是自动化管理多个容器在分布式环境中协同工作的技术。
核心概念
- Kubernetes(K8s) 是一个开源的容器编排平台,最初由 Google 开发,2014 年开源,现由 云原生计算基金会(CNCF) 托管 。
- "编排"在这里并非传统意义上的流程执行(如先 A 后 B),而是通过声明式配置定义应用的期望状态,Kubernetes 自动维持该状态 。
- 它能自动处理容器的调度、故障恢复、水平扩展、服务发现、负载均衡等任务 。
主要能力
- 自动化部署:通过 YAML/JSON 配置文件定义应用,K8s 自动创建和启动容器。
- 自我修复:当某个容器或节点宕机,K8s 会自动重启或迁移 Pod 到健康节点。
- 弹性伸缩:根据 CPU、内存等指标自动增加或减少应用副本数 。
- 服务发现与负载均衡:通过 Service 对象为一组 Pod 提供统一访问入口,并自动分发流量 。
- 滚动更新与回滚:支持无停机的应用升级,并可在异常时快速回退到旧版本 。
服务网格(如Istio)
服务网格(Service Mesh) 是一种用于管理微服务之间通信的基础设施层,它通过在每个服务旁部署轻量级网络代理(通常以 Sidecar 模式),实现服务间通信的可靠、安全和可观测,而无需修改业务代码。
Istio 是目前最主流、功能最完善的开源服务网格实现,由 Google、IBM 和 Lyft 联合开发,现已成为云原生计算基金会(CNCF)的毕业项目 。
Istio 的核心特点
- 非侵入式:无需修改应用代码即可实现流量控制、安全策略和监控 。
- 多协议支持:支持 HTTP、gRPC、WebSocket、TCP 等主流协议 。
- 与 Kubernetes 无缝集成:可运行于 Kubernetes 及其他平台(如 Nomad、Consul)。
统一治理:提供跨多云、多集群的标准化微服务治理能力 。
Istio 的两大核心组件
-
控制平面(Control Plane)
- istiod(Istio 1.5 后整合了 Pilot、Citadel、Galley 等组件)负责:
- 配置下发(通过 xDS 协议)
- 服务发现
- 证书管理(自动 mTLS 加密)
- 配置校验
- istiod(Istio 1.5 后整合了 Pilot、Citadel、Galley 等组件)负责:
-
数据平面(Data Plane)
- Envoy 代理(高性能 C++ 实现)负责:
- 拦截并转发所有入站/出站流量
- 执行负载均衡、熔断、重试、健康检查等
- 支持 L4/L7 流量治理
Istio 的主要功能
- 流量管理
- 动态路由、灰度发布、蓝绿部署、金丝雀发布
- 超时、重试、故障注入、熔断限流
- 安全性
- 服务间双向 TLS(mTLS)加密
- 基于身份的访问控制(RBAC、策略授权)
- 自动证书签发与轮换
- 可观测性
- 自动采集指标、日志、分布式追踪(如 Jaeger、Zipkin 集成)
- 提供服务拓扑、调用链、延迟分析等可视化能力
云服务平台(AWS/Aliyun/腾讯云)
云服务平台(如 AWS、阿里云、腾讯云)是通过互联网按需提供计算资源和服务的系统,核心是将 IT 资源(如服务器、存储、网络、数据库等)以服务形式交付,用户无需自建物理基础设施即可按需使用、弹性扩展。
AWS(Amazon Web Services):全球最早、市场份额最大的公有云服务商,提供涵盖计算、存储、数据库、AI、物联网等超 200 种服务,以高可用性、丰富功能和全球基础设施著称 。
阿里云:中国第一、全球前三的公有云平台,提供 ECS 云服务器、RDS 数据库、VPC 专有网络等 IaaS/PaaS 服务,广泛支撑国内电商、政务、金融等关键业务 。
腾讯云:依托微信、QQ 等生态,提供 SD-WAN 组网、云原生、音视频等特色服务,适合游戏、社交、直播等场景,但存在生态锁定和跨平台兼容性较弱等问题 。
云服务平台的核心服务类型
-
IaaS(基础设施即服务)
提供虚拟化计算资源(如 EC2、ECS),用户自主部署操作系统和应用 。
-
PaaS(平台即服务)
提供开发运行环境(如容器服务、数据库托管),开发者专注代码,无需管理底层基础设施 。
-
SaaS(软件即服务)
直接提供可使用的软件应用(如 Office 365、企业微信),通过浏览器访问即可 。
安全性设计
在软件架构中,安全性设计是保障系统稳定运行、保护用户数据和满足合规要求的核心环节。结合当前(2026年)权威公开资料,安全性设计应围绕 CIA三要素(机密性、完整性、可用性)和现代安全原则(如零信任、纵深防御)展开。
核心安全原则
- 最小权限原则:组件或用户仅拥有完成任务所必需的最小权限 。
- 纵深防御(Defense in Depth):部署多层安全控制,即使一层被突破,其他层仍能提供保护 。
- 零信任架构:默认不信任任何内部或外部实体,所有访问请求都需验证 。
- 安全左移:将安全性融入需求分析、设计、开发、测试等全生命周期 。
- 默认拒绝:系统默认拒绝所有未明确授权的访问或操作 。
分层安全架构设计要点
- 身份与访问安全(零信任核心)
- 实施 多因素认证(MFA) 和 单点登录(SSO) 。
- 使用 RBAC(基于角色的访问控制) 或 ABAC(基于属性的访问控制) 进行细粒度权限管理 。
- 建立 统一身份认证平台(IAM),支持生命周期管理(入职赋权、离职回收)。
- 网络层安全
- 网络分区:划分 DMZ、应用区、数据区等,严格隔离 。
- 微隔离:控制容器/虚拟机间东西向流量,防横向渗透 。
- 全链路加密:强制使用 TLS 1.3+,禁用弱协议 。
- 部署 防火墙(边界+应用层 WAF)、DDoS 防护、API 网关安全(限流、签名、参数校验)。
- 应用层安全
- 遵循 SDL(安全开发生命周期):包含安全评审、编码规范、代码审计、自动化扫描 。
- 防御 OWASP Top 10 攻击:
- 输入验证 + 输出编码 防 XSS 和 SQL 注入 。
- 使用 CSRF 令牌 防跨站请求伪造 。
- 禁用危险函数、避免硬编码密钥,采用安全编码实践 。
- 数据安全(最高优先级)
- 数据分级分类:按敏感度(公开→机密)实施不同保护策略 。
- 传输加密:使用 TLS;存储加密:采用 AES/RSA,密钥由 KMS(密钥管理服务)管理 。
- 数据脱敏:动态/静态脱敏用于测试、展示场景 。
- 防泄露(DLP):水印、外发控制、日志追踪 。
- 安全备份:加密 + 异地 + 离线备份,定期恢复演练 。
- 基础设施与主机安全
- 系统基线加固:关闭非必要端口、删除默认账户、设置强密码策略 。
- 补丁管理:高危漏洞 72 小时内修复 。
- 部署 EDR/XDR:监控异常行为、防病毒、防挖矿 。
- 禁止 root 直连,使用普通账号 + sudo 。
- 监控、日志与应急响应
- 集中日志管理:使用 SIEM(如 Splunk、ELK)聚合分析安全日志 。
- 实时监控与告警:检测暴力破解、越权访问、异常流量等 。
- 建立 应急响应预案:涵盖入侵、数据泄露、DDoS、勒索病毒等场景,并定期演练 。
- 合规与治理
- 遵循 GDPR、等保 2.0、PCI-DSS 等法规 。
- 定期生成 合规性报告,维护安全策略文档、审计日志(留存 ≥6--7 年)
- 实施 隐私保护:用户授权、最小数据采集、支持查询/删除权 。
工具与技术栈
- 认证授权:OAuth 2.0、OpenID Connect、JWT、SAML 。
- 加密:AES(对称)、RSA/ECC(非对称)、SHA-256(哈希)。
- 防护:WAF(如 Cloudflare、阿里云 WAF)、防火墙、API 网关(如 Kong、Kubernetes Ingress)。
- 检测:SIEM、漏洞扫描(Nessus、OWASP ZAP)、代码审计(SAST/DAST)。
- 密钥管理:AWS KMS、Azure Key Vault、HashiCorp Vault 。
- 容器安全:镜像扫描(Trivy)、K8s RBAC、Pod 安全策略 。