系统架构设计师 云原生架构篇

🌥️ 云原生架构

🧐 什么是云原生

云原生是一种构建和运行应用程序的方法,充分利用云计算的优势,包括可扩展性、高可用性和敏捷性。

云原生架构强调应用与云环境的紧密结合,通过自动化部署、弹性伸缩、分布式处理和持续交付等方式,使应用能够快速响应变化,实现更高的性能和可靠性。其核心理念包括微服务、容器化、DevOps、CI/CD和可观测性,使得应用更易于部署、管理和扩展。

☁️ 什么是云服务

云服务是由云提供商通过互联网提供的一系列服务,包括基础设施、平台和软件服务:

  1. 基础设施即服务(IaaS):提供虚拟化的计算资源,如虚拟机、存储和网络,让用户可以灵活地构建和管理自己的IT基础设施。
  2. 平台即服务(PaaS):提供开发和部署环境,包括操作系统、数据库和中间件,帮助开发者快速构建、测试和部署应用程序。
  3. 软件即服务(SaaS):提供基于云的应用软件,用户无需管理底层基础设施,只需直接使用应用,例如邮件服务、CRM系统等。

通过云服务,企业可以降低初始投资和运营成本,获得弹性、可扩展性和高可用性,从而更专注于业务创新。

🛠️ 云原生架构七大原则

  1. 服务化原则

    当项目规模较大时,需要进行服务化拆分,如微服务或小服务架构。服务化可以提高复用性,并方便对服务进行流量控制和治理。

  2. 弹性原则

    系统应具备自动伸缩的能力,根据业务需求弹性调整资源。这可以缩短上线时间、降低成本,并应对突发的业务扩张需求。

  3. 可观测性原则

    在分布式环境下需要更强的可观测性,包括日志、链路跟踪、指标等。这些可以帮助运维、开发和业务人员实时掌握系统运行状态并进行优化。

  4. 韧性原则

    系统需具备抵御各种硬件和软件异常的能力,提升平均无故障时间。这包括异步化、限流、降级、高可用等多维度的架构设计。

  5. 全流程自动化原则

    利用自动化工具实现交付流程的标准化和自动化,提高交付效率,并减少人工操作带来的风险。

  6. 零信任原则

    转向基于身份的访问控制,解决研发、测试、运维等场景下的隔离和访问控制问题,不再依赖传统网络边界的安全思路。

  7. 持续演进原则

    架构需具备持续演进的能力,应对技术和业务的快速变化。需要考虑遗留应用的迁移成本和风险,采取渐进式的架构演进策略。

🧩 七大主要架构模式

  1. 服务化架构模式

    以应用模块为颗粒度将软件拆分,使用接口契约和标准协议实现模块之间的互联互通。结合DDD、TDD和容器化部署,提升代码质量和迭代速度。典型模式包括微服务和小服务模式。

  2. Mesh化架构模式

    将中间件从业务进程中分离,在业务进程中只保留"薄"的客户端部分。由Mesh进程处理分布式架构模式如熔断、限流等,提供更好的安全性、环境隔离和测试能力。

  3. Serverless 模式

    将应用部署从运维中"收走",由云负责处理请求/事件并调度业务进程,适用于事件驱动的计算任务、短请求/响应应用等。

  4. 存储计算分离模式

    无状态应用可以获得更好的弹性,推荐使用云服务存储各类数据,对于性能敏感的状态可采用时间日志+快照的方式。

  5. 分布式事务模式

    微服务使用私有数据源会导致分布式事务问题,架构师需根据场景选择合适的分布式事务模式如XA、BASE、TCC等。

  6. 可观测架构

    包括日志、链路跟踪和指标监控,需要选择合适的开源框架并规范可观测数据,目标是为服务SLO度量提供依据。

  7. 事件驱动架构

    事件具有Schema,可校验有效性并提供QoS保障,可应用于服务解耦、CQRS、数据变化通知等场景,适用于大量事件流处理和基于事件触发的响应。

🏢 云原生架构反模式

  1. 庞大的单体应用

    问题在于缺乏依赖隔离,包括代码耦合、模块间接口缺乏治理、不同模块开发发布进度难以协调、单个模块不稳定影响整个应用等。解决方案是通过服务化进行适度拆分,梳理聚合根,明确服务模块边界和模块间接口定义,让组织关系和架构关系匹配。

  2. 单体应用"硬拆"为微服务

    过度服务化拆分会导致新架构与组织能力不匹配,影响架构升级效果。典型问题包括小规模软件过度拆分、服务间数据依赖、服务拆分导致性能下降等。

  3. 缺乏自动化能力的微服务

    随着软件规模增大,人工处理开发测试运维等会导致交付时间变长、风险提升、运维成本增加等问题。需要建立完善的自动化能力,包括自动化测试、发布、环境管理等,以应对复杂度的提升。

🌐 云服务市场占有率总结

全球主要云服务提供商

  1. Amazon Web Services (AWS)

    • 市场占有率:约30-40%
    • AWS提供广泛的服务,包括计算、存储和网络。
  2. Microsoft Azure

    • 市场占有率:约20-30%
    • 与微软软件和企业解决方案紧密集成。
  3. Google Cloud Platform (GCP)

    • 市场占有率:约10%
    • 专注于数据分析和机器学习。

中国主要云服务提供商

  1. 阿里云

    • 中国最大的云服务提供商,提供全面的云计算服务。
  2. 腾讯云

    • 专注于游戏、金融和社交媒体领域的云服务。
  3. 华为云

    • 在中国市场占有不断增长的份额,影响力持续扩展。

备注:市场占有率数据可能有所波动,且全球云服务市场不断发展,新服务层出不穷。

云服务技术栈

Amazon Web Services (AWS) 🌐

  • 计算:EC2、Lambda、ECS、EKS(Kubernetes)、Fargate
  • 存储:S3、EBS、EFS、Glacier
  • 数据库:RDS、DynamoDB、Aurora、Redshift、ElastiCache
  • 网络:VPC、Route 53、ELB、API Gateway
  • 安全:IAM、Cognito、KMS、GuardDuty、WAF
  • DevOps:CodePipeline、CodeBuild、CodeDeploy、CloudFormation、CloudWatch
  • AI/ML:SageMaker、Rekognition、Comprehend、Lex、Polly
  • 分析:EMR、Kinesis、Athena、Glue、Quicksight

Microsoft Azure ☁️

  • 计算:Azure Virtual Machines、Azure Functions、Azure Kubernetes Service (AKS)、App Service
  • 存储:Blob Storage、Azure Files、Disk Storage、Archive Storage
  • 数据库:Azure SQL Database、Cosmos DB、Azure Database for PostgreSQL/MySQL
  • 网络:Azure Virtual Network、Azure DNS、Azure Load Balancer、Application Gateway
  • 安全:Azure Active Directory、Key Vault、Azure Security Center、Azure Firewall
  • DevOps:Azure DevOps、Azure Pipelines、Azure Repos、Azure Resource Manager (ARM) Templates
  • AI/ML:Azure Machine Learning、Cognitive Services、Bot Service、Azure Databricks
  • 分析:Azure Synapse Analytics、HDInsight、Data Lake Storage、Stream Analytics

Google Cloud Platform (GCP) 🌍

  • 计算:Compute Engine、App Engine、Cloud Functions、Google Kubernetes Engine (GKE)、Cloud Run
  • 存储:Cloud Storage、Persistent Disk、Filestore、Archive Storage
  • 数据库:Cloud SQL、Cloud Spanner、Bigtable、Firestore、BigQuery
  • 网络:VPC、Cloud DNS、Cloud Load Balancing、Cloud CDN、Cloud NAT
  • 安全:Cloud IAM、Cloud Key Management Service (KMS)、Cloud Armor、Security Command Center
  • DevOps:Cloud Build、Cloud Deployment Manager、Container Registry、Cloud Monitoring
  • AI/ML:AI Platform、AutoML、Vision AI、Natural Language AI、Speech-to-Text
  • 分析:BigQuery、Dataflow、Dataproc、Pub/Sub、Data Studio

阿里云 (Alibaba Cloud) 🐘

  • 计算:ECS(弹性计算服务)、Function Compute、容器服务Kubernetes版(ACK)
  • 存储:OSS(对象存储服务)、NAS、云盘、归档存储
  • 数据库:RDS、PolarDB、MongoDB、Redis、DataWorks
  • 网络:VPC、SLB(负载均衡)、云解析DNS、API网关
  • 安全:RAM(资源访问管理)、KMS、DDoS防护、Web应用防火墙
  • DevOps:CloudToolkit、云效、资源编排(ROS)、日志服务(SLS)
  • AI/ML:PAI(机器学习)、图像识别、自然语言处理、智能对话机器人
  • 分析:MaxCompute、DataWorks、Quick BI、实时计算Flink版

腾讯云 (Tencent Cloud) 🛠️

  • 计算:CVM(云服务器)、SCF(Serverless Cloud Function)、TKE(腾讯云容器服务)
  • 存储:COS(对象存储)、CFS(文件存储)、CBS(云硬盘)、归档存储
  • 数据库:云数据库CynosDB、云数据库MySQL、云数据库MongoDB、Redis、TDSQL
  • 网络:私有网络、负载均衡、云解析、API网关
  • 安全:CAM(访问管理)、KMS、DDoS高防、WAF(Web应用防火墙)
  • DevOps:云开发、TAPD(敏捷开发)、CI/CD工具、日志服务
  • AI/ML:TI平台、智能对话平台、腾讯云小微、图像分析与处理
  • 分析:大数据套件、EMR、实时数据仓库、数据湖分析

华为云 (Huawei Cloud) 🚀

  • 计算:弹性云服务器(ECS)、FunctionGraph(函数计算)、云容器引擎(CCE)
  • 存储:OBS(对象存储)、SFS(文件存储)、EVS(弹性文件服务)、归档存储
  • 数据库:RDS、GaussDB、DCS(分布式缓存服务)、DDS(文档数据库服务)
  • 网络:VPC、ELB、云解析服务、API网关
  • 安全:IAM、KMS、WAF、态势感知
  • DevOps:DevCloud、云容器实例(CCI)、HECS(黑石物理服务器)、应用运维管理
  • AI/ML:ModelArts、语音服务、图像识别、NLP服务
  • 分析:数据湖探索、MRS(MapReduce服务)、DLI(数据湖探索)、云搜索服务

总结 🧐

云原生架构是一种充分利用云计算的特性来构建和运行应用程序的方法,强调服务化、弹性、自动化和可观测性。它可以通过微服务、容器化、Serverless、DevOps和CI/CD等技术栈,实现应用的快速部署、弹性伸缩和持续交付。云服务提供商,如AWS、Azure、GCP、阿里云、腾讯云和华为云等,提供了丰富的云服务,涵盖计算、存储、数据库、网络、安全、AI/ML、DevOps和分析等领域,为企业在云端部署和管理应用提供了有力支持。

🎓 记忆口诀

云原生架构的七大原则,我们可以用以下口诀: "服务弹性可见,韧性自动零变"

  • 服务:服务化原则
  • 弹性:弹性原则
  • 可见:可观测性原则
  • 韧性:韧性原则
  • 自动:全流程自动化原则
  • 零:零信任原则
  • 变:持续演进原则

云原生架构的七大架构模式,我们可以用以下口诀: "服网免存事观事"

  • 服:服务化架构模式
  • 网:Mesh化架构模式(网络服务网格)
  • 免:Serverless 模式(免服务器)
  • 存:存储计算分离模式
  • 事:分布式事务模式
  • 观:可观测架构
  • 事:事件驱动架构

🌌 趣味记忆互联网案例故事

想象你是一家互联网企业的首席技术官,类似于一位宇宙探险家,正在探索一颗全新的星球------一个全新的社交应用。你刚刚在这个星球上建立了一个初步的基地,开始时一切都像科幻电影里的开场白一样顺利。但是,随着越来越多的星际居民(用户)来到你的基地,系统开始变得像巨型太空飞船里的老旧电脑一样迟缓,体验也变得糟糕得像黑洞。

于是,你决定采取一项大胆的宇宙改造计划------引入云原生科技。你将应用拆分成多个独立的**"太空站"**,每个太空站都负责不同的任务,比如:

  • 银河认证站:处理用户认证
  • 消息传递星际站:管理消息服务
  • 星际好友联络站:维护好友关系

为了应对突发的星际移民潮,你还部署了自动弹性伸缩系统,就像在宇宙中召唤更多的太空飞船,以应对突然的访问高峰。

你还在你的宇宙基地中安装了全景星图监控器 ,实时跟踪系统的健康状态和性能。一旦发现有星际风暴来袭,你可以立即进行修复。为了提高系统的韧性,你为每个太空站设定了星际熔断器流量控制器,确保某个太空站发生故障时不会让整个宇宙陷入混乱。

你还使用了自动化宇宙飞船 ,实现了从代码提交到部署上线的全自动化,就像在宇宙中让新科技快速无缝地进入使用。为了确保宇宙的安全,你引入了零信任宇宙协议,所有的访问都需要经过严格的身份验证和授权,确保宇宙中不会有任何不速之客。

随着时间的推移,你的宇宙基地不断升级,变得更加适应各种星际挑战。最终,这个社交应用成为了整个宇宙的明星,用户体验也达到了银河系的巅峰。

通过这个故事,你可以更好地理解云原生架构如何帮助企业应对各种技术挑战,实现商业目标。就像一位高明的宇宙探险家,你驾驭着不断进化的科技,成功探索了星际社交的无限可能!

参与点评
读者朋友们,如果您在阅读过程中,对文章的质量、易理解性有任何建议,欢迎在评论区指出,我会认真改进。

相关推荐
58沈剑21 分钟前
80后聊架构:架构设计中两个重要指标,延时与吞吐量(Latency vs Throughput) | 架构师之路...
架构
为什么这亚子3 小时前
九、Go语言快速入门之map
运维·开发语言·后端·算法·云原生·golang·云计算
想进大厂的小王3 小时前
项目架构介绍以及Spring cloud、redis、mq 等组件的基本认识
redis·分布式·后端·spring cloud·微服务·架构
阿伟*rui4 小时前
认识微服务,微服务的拆分,服务治理(nacos注册中心,远程调用)
微服务·架构·firefox
ZHOU西口4 小时前
微服务实战系列之玩转Docker(十八)
分布式·docker·云原生·架构·数据安全·etcd·rbac
牛角上的男孩5 小时前
Istio Gateway发布服务
云原生·gateway·istio
JuiceFS6 小时前
好未来:多云环境下基于 JuiceFS 建设低运维模型仓库
运维·云原生
deephub6 小时前
Tokenformer:基于参数标记化的高效可扩展Transformer架构
人工智能·python·深度学习·架构·transformer
景天科技苑7 小时前
【云原生开发】K8S多集群资源管理平台架构设计
云原生·容器·kubernetes·k8s·云原生开发·k8s管理系统
架构师那点事儿8 小时前
golang 用unsafe 无所畏惧,但使用不得到会panic
架构·go·掘金技术征文