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

云原生(Cloud Native)技术概述

概念

云原生是一套构建和运行应用程序的方法论,它充分利用云计算交付模型的优势,核心目标是实现应用的敏捷、弹性、可扩展和高可用。四大核心支柱:

  • 容器化:以Docker为代表,将应用及其所有以来打包成一个标准化的单元,实现环境一致性。
  • 动态编排:以Kubernetes为代表,自动化容器的部署、管理、扩展和修复。
  • 微服务:将单体应用拆分为一组小的、松耦合的服务,每逢服务独立开发、部署和扩展。
  • DevOps和持续交付:通过自动化工具链和文化,实现快速、频繁、可靠的软件交付

中间件(Middleware)的云原生演进

传统中间件(如消息队列、API网关、缓存)在云原生时代发生根本性的变化。

特点:

  • 服务化与轻量级:从笨重的单体中间件(如IBM WebSphere)演变为轻量级的、可独立部署的微服务(如Redis,RabbitMQ)
  • 容器化:中间件本身被容器化,可以通过Kubernetes进行编排和管理。
  • Operator模式:使用Kubernetes Operator来管理有状态应用(如数据库、消息队列),实现运维的自动化(如利用ETCD Operator可完成本分、恢复、升级等复杂操作)。
  • Sidecar模式:通过Sidecar容器(如Envoy)将中间件能力(如服务发现、负载均衡、熔断)下沉到基础设施层,对应透明。

代表性技术:

  • 服务网格:Istio,Linkerd(集成了服务发现、负载均衡、熔断、限流、观测等所有网络中间件功能)
  • 消息队列:Apache Kafka、RabbitMQ、NATS
  • API网关:Kong,Apache APISIX,Envoy
  • 缓存:Redis,Memcached

无服务器计算 Serverless

Serverless(无服务器计算)是一种原生开发模型,开发者无需关心服务器(底层基础设施)的运维,只专注于编写业务代码,服务器管理、容量规划、扩缩容等工作全部由云平台自动完成。

Serverless应用需要按需使用中间件服务,推动了“数据库即服务”、“消息队列即服务”等托管中间件的变革。

函数计算

函数计算(Function as a Service, FaaS)是Serverless中最具代表的执行模型。

核心概念:

  • 事件驱动:函数由特定事件触发执行,例如HTTP请求、消息队列中的消息、文件上传、定时器等。
  • 极致弹性:根据请求量毫秒级自动扩缩容,从零实例扩展到成千上万个实例,空闲时自动缩容为零。
  • 按需付费:只在中世纪执行函数时按执行时长和资源消耗付费,空闲时不产生任何费用。

优势:降低运维负担、成本优化、开发敏捷

挑战:

  • 冷启动延迟:实例从零启动需要时间,可能影响响应速度
  • 状态管理:函数本身应是无状态的,状态需要存储在外部的数据库或存储服务中
  • 调试和观测:分布式和瞬态的特性使得调试和追踪变得更复杂

代表性技术:

  • 公有云服务:AWS Lambda、Google Cloud Functions、Azure Functions
  • 开源框架:Knative(基于Kubernetes的Serverless框架)、OpenFaaS

可观测行 Observability

可观测行是指除监控Monitoring外,通过系统外部输出的信息(如日志、指标和追踪)来理解系统内部状态的能力。

三大支柱:

  • 日志 Logs:离散的、带时间戳的事件记录,用于记录详细上下文信息,如错误信息,调试信息。云原生工具如ELK Stack,Loki,Fluentd
  • 指标Metrics:一段时间内可聚合的数字数据,用于衡量系统性能,如CPU使用率、请求QPS、错误率。云原生工具如Prometheus事实标准、Grafana可视化
  • 追踪Traces:记录单个请求在分布式系统中流转的完整路径,用于分析延迟性能瓶颈。云原生工具如Jaeger,Zipkin

关联与协同

云原生技术栈是一个有机整体,容器化和Kurbernetes编排是基石,Serverless提供了最新应用开发范式,现代化中间件提供支撑服务,可观测行保证整个系统稳定、高效运行。

完整的应用生命周期势力:开发者编写一个函数(Serverless),该函数通过API网关(中间件)暴露,调用其他微服务,并将状态写入Redis(中间件),通过OpenTelemetry手机日志、指标和追踪数据,在Promethus和Grafana上展示。

http://www.dtcms.com/a/344282.html

相关文章:

  • 企业级大模型解决方案:架构、落地与代码实现​
  • LeetCode 分类刷题:34. 在排序数组中查找元素的第一个和最后一个位置
  • Unreal Engine APawn 与 ACharacter 比较
  • 开发避坑指南(31):Oracle 11g LISTAGG函数使用陷阱,缺失WITHIN子句解决方案
  • 如何优雅统计知识库文件个数与子集下不同文件夹文件个数
  • Vue3源码reactivity响应式篇之Ref
  • Oracle APEX 经典报表中的Checkbox
  • 期货Level2五档订单簿0.25秒级高频分时及日频历史行情数据使用指南
  • Docker 部署 MySQL 8.0 完整指南:从拉取镜像到配置远程访问
  • 高级SQL优化 | 告别 Hive 中 GROUP BY 的大 KEY 数据倾斜!PawSQL 自适应优化算法详解
  • MsSQL 函数,实现数字转换成人民币大写
  • IDEA基础配置优化指南(中英双版)
  • matlab中随机森林算法的实现
  • AI重塑职业教育:个性化学习计划提效率、VR实操模拟强技能,对接就业新路径
  • 在Excel和WPS表格中如何隐藏单元格的公式
  • 视觉语言对比学习的发展史:从CLIP、BLIP、BLIP2、InstructBLIP(含MiniGPT4的详解)
  • 一分钟了解六通道 CAN(FD) 集线器
  • 第二阶段WinFrom-6:文件对话框,对象的本地保存,序列化与反序列化,CSV文件操作,INI文件读写
  • 【虚拟化】磁盘置备方式的性能损耗对比
  • k8s应用的包管理Helm工具
  • 基于国产麒麟操作系统的Web数据可视化教学解决方案
  • 【Java SE】深入理解继承与多态
  • 使用 YAML 文件,如何优雅地删除 k8s 资源?
  • Apache Druid SSRF漏洞复现(CVE-2025-27888)
  • 孤独伤感视频素材哪里找?分享热门伤感短视频素材资源网站
  • Sklearn 机器学习 房价预估 使用GBDT训练模型
  • 【Linux我做主】细说进程地址空间
  • Ansible入门:自动化运维基础
  • docker 打包
  • 前端项目打包+自动压缩打包文件+自动上传部署远程服务器