当前位置: 首页 > news >正文

云原生架构设计模式

系列导读:本篇将深入讲解云原生架构的核心设计模式与最佳实践。


文章目录

    • 一、云原生概述
      • 1.1 云原生定义
      • 1.2 云原生架构特征
    • 二、核心设计模式
      • 2.1 Sidecar 模式
      • 2.2 Ambassador 模式
      • 2.3 Adapter 模式
    • 三、弹性设计模式
      • 3.1 重试模式
      • 3.2 断路器模式
      • 3.3 舱壁模式
      • 3.4 限流模式
    • 四、数据设计模式
      • 4.1 CQRS 模式
      • 4.2 事件溯源模式
      • 4.3 Saga 模式
    • 五、最佳实践
      • 5.1 12-Factor App
      • 5.2 健康检查
      • 5.3 优雅关闭
    • 总结

一、云原生概述

1.1 云原生定义

┌─────────────────────────────────────────────────────────────┐ │ 云原生核心要素 │ ├─────────────────────────────────────────────────────────────┤ │ 📦 容器化:Docker、containerd │ │ 🔄 编排调度:Kubernetes │ │ 🌐 服务网格:Istio、Linkerd │ │ ⚡ 不可变基础设施:基础设施即代码 │ │ 📊 声明式 API:YAML 配置 │ └─────────────────────────────────────────────────────────────┘

1.2 云原生架构特征

特征说明
弹性伸缩自动扩缩容
故障自愈自动恢复
可观测性监控、日志、追踪
持续交付自动化部署
松耦合服务独立

二、核心设计模式

2.1 Sidecar 模式

# Sidecar 容器示例apiVersion:v1kind:Podmetadata:name:app-with-sidecarspec:containers:-name:appimage:myapp:v1ports:-containerPort:8080-name:sidecarimage:log-collector:v1volumeMounts:-name:logsmountPath:/var/logvolumes:-name:logsemptyDir:{}

2.2 Ambassador 模式

┌─────────────────────────────────────────────────────────────┐ │ Pod │ │ ┌─────────────┐ ┌─────────────┐ │ │ │ Application │◄──►│ Ambassador │ │ │ │ Container │ │ (代理) │ │ │ └─────────────┘ └─────────────┘ │ │ │ │ │ ▼ │ │ 外部服务连接 │ └─────────────────────────────────────────────────────────────┘

2.3 Adapter 模式

# Adapter 容器示例containers:-name:appimage:myapp:v1ports:-containerPort:8080-name:adapterimage:metrics-adapter:v1# 将应用指标转换为标准 Prometheus 格式

三、弹性设计模式

3.1 重试模式

// 重试配置@Retryable(value={ServiceUnavailableException.class},maxAttempts=3,backoff=@Backoff(delay=1000,multiplier=2))publicOrdergetOrder(StringorderId){returnorderClient.getOrder(orderId);}

3.2 断路器模式

// 断路器配置@CircuitBreaker(name="orderService",fallbackMethod="getOrderFallback")publicOrdergetOrder(StringorderId){returnorderClient.getOrder(orderId);}publicOrdergetOrderFallback(StringorderId,Exceptione){returnnewOrder(orderId,"默认订单",0);}

3.3 舱壁模式

# 线程池隔离resilience4j:threadpool:orderService:coreThreadPoolSize:10maxThreadPoolSize:20queueCapacity:100

3.4 限流模式

// 限流配置@RateLimiter(name="orderService")publicOrdercreateOrder(OrderRequestrequest){returnorderService.create(request);}

四、数据设计模式

4.1 CQRS 模式

┌─────────────────────────────────────────────────────────────┐ │ CQRS 架构 │ ├─────────────────────────────────────────────────────────────┤ │ │ │ Command (写) Query (读) │ │ ┌─────────┐ ┌─────────┐ │ │ │ Command │ │ Query │ │ │ │ Handler │ │ Handler │ │ │ └────┬────┘ └────┬────┘ │ │ │ │ │ │ ▼ ▼ │ │ ┌─────────┐ ┌─────────┐ │ │ │ Write DB│ │ Read DB │ │ │ └─────────┘ └─────────┘ │ │ │ └─────────────────────────────────────────────────────────────┘

4.2 事件溯源模式

// 事件存储publicclassEventStore{publicvoidappend(StringaggregateId,List<Event>events){events.forEach(event->{EventEntryentry=newEventEntry(aggregateId,event.getType(),JSON.toJSONString(event),LocalDateTime.now());eventRepository.save(entry);});}}

4.3 Saga 模式

Saga 编排模式: 订单服务 ──► 支付服务 ──► 库存服务 ──► 物流服务 │ │ │ │ │ │ │ │ ▼ ▼ ▼ ▼ 成功 成功 失败 回滚 │ │ │ │ │ │ └─── 补偿 ───┘ │ └─── 补偿 ───┘ └─── 补偿 ───┘

五、最佳实践

5.1 12-Factor App

原则说明
Codebase一份代码,多次部署
Dependencies显式声明依赖
Config配置与代码分离
Backing Services后端服务作为资源
Build, Release, Run严格分离构建和运行
Processes无状态进程
Port Binding端口绑定服务
Concurrency并发扩展
Disposability快速启动和优雅关闭
Dev/Prod Parity开发生产环境一致
Logs日志作为事件流
Admin Processes管理任务作为一次性进程

5.2 健康检查

# Kubernetes 健康检查livenessProbe:httpGet:path:/health/liveport:8080initialDelaySeconds:30periodSeconds:10readinessProbe:httpGet:path:/health/readyport:8080initialDelaySeconds:5periodSeconds:5startupProbe:httpGet:path:/health/startupport:8080failureThreshold:30periodSeconds:10

5.3 优雅关闭

// Spring Boot 优雅关闭@BeanpublicGracefulShutdowngracefulShutdown(){returnnewGracefulShutdown();}publicclassGracefulShutdownimplementsTomcatConnectorCustomizer,ApplicationListener<ContextClosedEvent>{privateConnectorconnector;@Overridepublicvoidcustomize(Connectorconnector){this.connector=connector;}@OverridepublicvoidonApplicationEvent(ContextClosedEventevent){connector.pause();try{Thread.sleep(30000);// 等待请求处理完成}catch(InterruptedExceptione){Thread.currentThread().interrupt();}}}

总结

云原生概述:容器化、编排、服务网格
核心设计模式:Sidecar、Ambassador、Adapter
弹性设计模式:重试、断路器、舱壁、限流
数据设计模式:CQRS、事件溯源、Saga
最佳实践:12-Factor、健康检查、优雅关闭

本系列完结


作者:刘~浪地球
系列:云原生与容器(五)
更新时间:2026-04-15

http://www.jsqmd.com/news/645793/

相关文章:

  • 2026年云南企业财税一体化服务深度测评:从注册到注销的全生命周期合规方案 - 精选优质企业推荐榜
  • RAG 与 MCP:每位 AI 开发人员都必须了解的架构差异
  • 2026年淘宝代运营公司哪家好?天猫京东拼多多抖音全平台服务商推荐 - 深度智识库
  • 2026年别墅移动阳光房厂家最新排名榜单 - 品牌策略师
  • ArduRemoteID开源无人机身份识别系统:架构设计与实战指南
  • Windows 11任务栏拖放功能修复:从缺失到重生的技术演进之路
  • 修改员工-查询回显
  • 2026年昆明企业财税全生命周期服务完全指南:今非企管官方联系方式与行业权威横评 - 精选优质企业推荐榜
  • 从数据丢失到稳定传输:我是如何用硬件流控拯救蓝牙文件传输项目的
  • ASMR下载神器:5分钟搞定asmr.one音频资源自动化管理
  • CRM系统应该如何选择?五大主流销售管理CRM深度测评与选型指南 - SaaS软件-点评
  • 如何在Python中轻松处理字体文件?fontTools全面指南
  • SAP RAP开发避坑指南:Locking和Numbering实战中那些容易踩的雷
  • 2026年云南昆明企业工商财税一站式服务深度横评:全生命周期合规托管与降本增效方案对比 - 精选优质企业推荐榜
  • 多语言国际化网站解决方案
  • 3分钟掌握Obsidian加密插件:保护你的数字隐私笔记
  • 贵州震华娘子军家政:家政服务与月嫂公司的专业化实践 - 深度智识库
  • 系统启动过程引导加载器与内核初始化
  • 接口突然变慢别急着看数据库,这篇复盘把排查路径讲透了
  • 从‘三重循环’到‘一维数组’:手把手带你优化完全背包的C++代码(附LeetCode实战)
  • 用 Python 批量清洗参考文献数据,省掉手工整理时间
  • 2026 想找上海优质普拉提培训?这些靠谱机构值得推荐 - 品牌2025
  • 冥想对编码质量的影响:科学验证
  • 别再自己写加法器了!聊聊Synopsys DesignWare IP库如何帮你搞定复杂时序难题
  • 2026年云南昆明企业工商财税一站式服务深度横评:如何选择合规高效的代理记账与资质代办机构 - 精选优质企业推荐榜
  • Ultimate ASI Loader:Windows游戏插件加载器的完整指南
  • 从‘无法连接’到成功远程:Windows 10神州网信版远程桌面排错全记录
  • 云原生与容器--CI/CD 流水线设计实践
  • BIOS性能优化关键设置项全解析:从超线程到虚拟化
  • 揭秘SITS2026 AI文案系统:如何在3秒内生成合规、高转化、品牌一致的营销文案?