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

云原生(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.xdnf.cn/news/18483.html

相关文章:

  • 密码管理中硬编码密码
  • react的基本使用
  • 【学习记录】structuredClone,URLSearchParams,groupBy
  • 树莓派采集、计算机推理:基于GStreamer的YOLOv5实现方案
  • 隧道代理无需手动获取IP的核心机制与技术优势
  • 纯手撸一个RAG
  • SSM从入门到实战: 2.6 MyBatis缓存机制与性能优化
  • skywalking-agent与logback-spring.xml中的traceId自动关联的原理
  • 三,设计模式-抽象工厂模式
  • 深入解析TCP/UDP协议与网络编程
  • Leetcode—120. 三角形最小路径和【中等】(腾讯校招面试题)
  • SSM框架基础知识-Spring-Spring整合MyBatis
  • 基于SpringBoot+Vue框架的高校论坛系统 博客论坛系统 论坛小程序
  • 图神经网络分享系列-LINE(三)
  • Oracle SYS用户无法登录数据库-ORA-12162
  • Chrome和Edge如何开启暗黑模式
  • 本地部署DeepSeek实战
  • CS 创世 SD NAND 助力 T-BOX:破解智能汽车数字中枢的存储密码
  • 【UniApp打包鸿蒙APP全流程】如何配置并添加UniApp API所需的鸿蒙系统权限
  • 使用隧道(Tunnel)连接PostgreSQL数据库(解决防火墙问题)
  • 【Ansible】变量与敏感数据管理:Vault加密与Facts采集详解
  • 使用PPT进行科研绘图过程中常用的快捷键
  • Matplotlib 可视化大师系列(八):综合篇 - 在一张图中组合多种图表类型
  • Android 广告轮播全实现:图片与视频混合展示的完整方案
  • 基于ERNIE 4.5的多智能体协作的自动化视频舆情分析报告生成器
  • 图像处理中的伪影
  • git新建项目如何推送到远程仓库
  • C#_面向对象设计的艺术
  • Python 网络编程实战指南:从 TCP_UDP 到 Socket 编程
  • 基于LangChain + Milvus 实现RAG