跳到主要内容

系统设计策略


1. 可靠性相关策略

策略描述
重试 + 退避(Backoff)对失败操作进行重试,结合退避减少系统压力(如指数退避、带抖动)。
幂等性设计确保多次相同请求不会引发副作用,如支付接口设计。
熔断器(Circuit Breaker)当某个服务连续失败后,临时阻断请求,防止雪崩效应。
降级(Degrade/Fallback)服务部分不可用时提供默认值或备选路径,保持核心功能可用。
超时控制对外部依赖设置合理超时时间,避免调用阻塞整个服务。
请求隔离通过线程池、信号量、goroutine 分离不同服务,避免故障传染。

2. 可扩展性策略

策略描述
水平扩展(Scale-out)通过添加更多实例(节点)提升吞吐能力。
分布式缓存使用 Redis、Memcached 缓存热点数据,减少数据库压力。
读写分离主写从读模式提升数据库性能,常见于 MySQL 等。
分库分表按业务或数据维度拆分数据库表,提升查询/写入效率。
消息队列(异步解耦)Kafka/RabbitMQ/NSQ 等用于削峰填谷、异步处理任务。

3. 安全与一致性策略

策略描述
限流(Rate Limiting)限制单位时间内请求次数,防止接口被滥用。
Token/Bearer认证用户身份认证常用,如 JWT、OAuth2。
数据冗余多副本存储,提升高可用和容灾能力。
一致性模型选择在分布式系统中,根据 CAP 原则选择如强一致、最终一致等模型。

4. 可维护性与演进策略

策略描述
微服务化将单体应用拆成多个独立服务,便于团队协作与部署。
服务注册与发现Consul、Etcd、Eureka 等实现服务动态注册与发现。
配置中心集中管理配置,支持热更新,如 Nacos、Apollo。
灰度发布 / 蓝绿部署分阶段上线新功能,减少发布风险。
可观测性日志、指标、链路追踪三位一体(如 ELK、Prometheus + Grafana、Jaeger)。

5. 架构模式策略

策略描述
CQRS(命令查询职责分离)读写模型分离,读模型可做缓存/反范式设计,提升效率。
事件驱动架构(EDA)系统间通过事件流异步解耦,适合高并发业务。
DDD(领域驱动设计)将复杂业务建模成有界上下文和聚合根。
API Gateway + BFF统一入口、权限校验、路由;BFF 针对终端定制接口组合。

6. 综合策略在支付系统中的应用

场景策略
下单接口幂等性、缓存商品信息、限流
支付请求异步处理 + MQ、超时重试、幂等
订单查询读写分离、缓存、容灾降级
支付通知MQ 异步处理、幂等性、重试机制