news 2026/4/17 18:19:50

云原生架构设计模式

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
云原生架构设计模式

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


文章目录

    • 一、云原生概述
      • 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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 17:04:05

初学者电钢琴怎么买?9款好用又高性价比横评,我的选购笔记全公开!

当你想为生活添置一份能长久陪伴的爱好&#xff0c;或为孩子选择一位严肃的“音乐启蒙老师”时&#xff0c;一台电钢琴无疑是明智的起点。它安静、省心、功能多样&#xff0c;但面对铺天盖地的型号、参数和营销话术&#xff0c;从何选起成了最大的困扰。 作为一名在乐器行业沉浸…

作者头像 李华
网站建设 2026/4/15 17:03:09

小说下载器终极指南:三步实现全网小说免费离线阅读

小说下载器终极指南&#xff1a;三步实现全网小说免费离线阅读 【免费下载链接】novel-downloader 一个可扩展的通用型小说下载器。 项目地址: https://gitcode.com/gh_mirrors/no/novel-downloader 你是否曾经遇到过这样的情况&#xff1a;追更的小说突然下架&#xff…

作者头像 李华
网站建设 2026/4/15 17:03:09

为什么92%的AI团队在多模态融合上失败?SITS2026首席架构师亲述:4个被忽略的数据-模型-部署断层及72小时修复方案

第一章&#xff1a;SITS2026专家&#xff1a;多模态模型融合 2026奇点智能技术大会(https://ml-summit.org) 融合动机与核心挑战 在SITS2026专家系统中&#xff0c;单一模态模型&#xff08;如纯文本LLM或独立视觉编码器&#xff09;已难以满足跨域协同推理需求。真实世界任务…

作者头像 李华
网站建设 2026/4/15 17:03:05

为什么你的微信聊天记录应该像相册一样被永久珍藏?

为什么你的微信聊天记录应该像相册一样被永久珍藏&#xff1f; 【免费下载链接】WeChatMsg 提取微信聊天记录&#xff0c;将其导出成HTML、Word、CSV文档永久保存&#xff0c;对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeChatMs…

作者头像 李华
网站建设 2026/4/15 17:01:17

3分钟掌握BilibiliDown:跨平台B站视频下载高效解决方案

3分钟掌握BilibiliDown&#xff1a;跨平台B站视频下载高效解决方案 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader &#x1f633; 项目地址: https://gitcode.com/gh_mirrors/…

作者头像 李华
网站建设 2026/4/15 17:00:41

告别风扇噪音烦恼:Fan Control如何精准掌控Windows电脑散热系统

告别风扇噪音烦恼&#xff1a;Fan Control如何精准掌控Windows电脑散热系统 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Tr…

作者头像 李华