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

云原生(Cloud native)

云原生(Cloud native)

一 定义

目前比较权威的定义主要来自Pivotal公司和云原生计算基金会(Cloud Native Computing Foundation,简称CNCF)。

1.1 Pivotal

  • 4个要点:
    DevOps持续交付微服务容器化
  • 六个特质:
    模块化(Modularity)可观测性(Observability)可部署性(Deployability)
    可测试性(Testability)可处理性(Disposability)可替换性(Replaceability)
  • 云原生是一个思想的集合,既包含技术(微服务,敏捷基础设施),也包含管理(DevOps、持续交付、康威定律以及重组等),云原生是一系列云技术、企业管理方法的集合。

1.2 CNCF

  • 云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。
  • 云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API。这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。
  • 结合可靠的自动化手段,云原生技术使工程师能够轻松地对系统作出频繁和可预测的重大变更。

二 技术特点

2.1 微服务架构:

云原生化倡导使用微服务架构来构建应用程序,将应用程序拆分为多个小型、独立且可独立部署的服务,每个服务专注于解决特定的业务功能。这样可以提高应用程序的可扩展性、灵活性和可维护性。

2.2 容器化部署:

云原生应用程序通常使用容器技术(如Docker)进行部署,通过将应用程序及其依赖打包为容器镜像,实现跨平台、可移植和一致的部署。容器化还提供了隔离性和资源利用率的优势,使应用程序能够更高效地运行。

2.3 动态编排和自动化管理:

云原生化强调使用自动化工具和平台(如Kubernetes)来进行应用程序的动态编排和管理,自动化地管理容器的部署、伸缩、升级和监控等操作,提高应用程序的弹性和可靠性,并减少人工操作的复杂性。

2.4 弹性伸缩:

云原生化允许应用程序根据负载情况进行弹性伸缩,通过自动化的容器编排和服务发现,动态地添加或移除容器实例,以适应不同的负载变化,提高应用程序的性能和资源利用率。

2.5 持续交付和部署:

云原生化倡导使用持续集成和持续交付(CI/CD)的方法来实现应用程序的快速交付和部署,通过自动化的构建、测试和部署流程,快速、可靠地将应用程序更新推送到生产环境,减少发布的风险和时间成本。


三 技术栈

3.1 容器化

  • 容器引擎:如Docker,是一种开源的应用容器引擎,它将应用程序及其依赖打包成标准化的容器镜像。容器镜像可以在任何支持Docker的环境中运行,确保应用在开发、测试和生产环境之间的一致性。
  • 容器运行时:如containerd或runc,负责容器的生命周期管理,包括容器的创建、启动、停止、删除等操作,以及与宿主机的资源交互。
  • 容器编排:如Kubernetes(K8s),是目前最流行的容器编排平台,提供了一套强大的API和工具集,用于自动化容器的部署、调度、扩缩容、负载均衡、滚动升级、自我修复、服务发现、配置管理等操作。

3.2 微服务架构

  • 微服务:将大型单体应用分解为一组小型、独立的服务,每个服务专注于单一业务功能,通过API进行交互。微服务之间通过轻量级的通信机制(如RESTful API、gRPC等)互相协作,有助于提升开发速度、降低耦合度、增强系统的可伸缩性和容错能力。

3.3 服务间通信

  • RESTful API:
    基于HTTP协议和其各种方法(GET、POST、PUT、DELETE等),遵循资源导向的架构风格设计接口,广泛应用于微服务间的交互。
  • gRPC:
    由Google开发的一种高性能、通用的RPC(Remote Procedure Call)框架,基于HTTP/2协议和Protocol Buffers序列化协议,适用于对性能和效率要求较高的场景。
  • 消息队列:
    如RabbitMQ、Apache Kafka、Amazon SQS等,作为异步通信中间件,用于解耦服务、处理峰值负载、实现事件驱动架构。

3.4 服务网格

  • 服务网格技术:
    如Istio、Linkerd、Envoy等,位于服务之间,作为一层透明的基础设施层,负责服务间的网络通信、路由、安全、可观测性等功能。服务网格抽象了服务间通信的复杂性,使得开发者无需在应用代码中实现这些功能。

3.5 持续集成与持续部署(CI/CD)

  • CI/CD工具:
    如Jenkins、GitLab CI/CD、GitHub Actions、Azure DevOps等,用于自动化软件开发的构建、测试、打包、发布和部署流程。CI/CD实践有助于缩短迭代周期、提高软件质量、减少人工干预带来的错误。

3.6 声明式基础设施

  • 声明式配置:
    使用YAML或JSON格式的配置文件来描述应用部署的目标状态,如Kubernetes的YAML manifests。开发者只需定义期望的状态,系统会自动处理如何达到这个状态。
  • 基础设施即代码(IaC)管理工具:
    如Terraform、CloudFormation等,用于跨云平台的基础设施管理,实现基础设施的版本控制、自动化部署和一致性管理。

3.7 DevOps工具链

  • 日志聚合:
    如ELK Stack(Elasticsearch、Logstash、Kibana)、Splunk、Datadog等,用于收集、解析、存储、搜索、分析和可视化日志数据。
  • 监控:
    如Prometheus、Grafana、New Relic、Dynatrace等,提供系统和应用性能监控。
  • 错误追踪:
    如Sentry、Bugsnag、Rollbar等,用于捕获、分析和管理应用运行时的异常和错误。
  • 混沌工程:
    如Chaos Monkey、Chaos Toolkit等,通过主动在生产环境中引入故障,测试系统在异常条件下的表现和恢复能力。

3.8 无服务器计算(Serverless)

  • 无服务器服务:
    如AWS Lambda、Google Cloud Functions、Azure Functions等,允许开发者编写和运行代码片段(函数),无需关心底层服务器的运维,仅在函数被触发时按需执行并计费。

四 应用场景

云原生技术在多个领域都有广泛的应用前景,包括但不限于:

  • 大规模互联网应用:构建高可用性、高性能和高可扩展性的互联网应用。
  • 金融业务:提供安全、可靠、高效的应用程序开发和部署方式,提高金融业务应用的可靠性和安全性。
  • 人工智能和大数据:为AI和大数据应用提供高效、可扩展、弹性伸缩的应用程序开发和部署方式。
  • 物联网:处理海量的传感器数据,实现快速部署和弹性伸缩,提高物联网应用的可靠性和可维护性。
  • 区块链:为区块链应用提供高效、可扩展、弹性伸缩的应用程序开发和部署方式。

以上就是云原生的全部内容,感谢阅读!

相关文章:

  • AV1 编码标准中帧内预测技术概述
  • 黑马头条-环境搭建、SpringCloud
  • 云盘挂载 开机自动模拟 cmd- alist server
  • 笔记 2 :linux 0.11 中的重要的全局变量 (a)
  • ARM架构(一)—— ARMV8V9基础概念
  • Java中常见的语法糖
  • 昇思25天学习打卡营第02天|张量 Tensor
  • Hive 常见问题
  • 超市管理系统 需求分析与设计 UML 方向
  • cesium 实现地图环境功能 - 雨,雪,雾特效
  • 【Pytorch】数据集的加载和处理(一)
  • lodash将对象转换成http参数
  • Matlab进阶绘图第63期—带标记线的三维填充折线图
  • InterSystems IRIS使用python pyodbc连接 windows环境,odbc驱动安装,DSN配置,数据源配置
  • 科技与狠活
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • CNN 在图像分割中的简史:从 R-CNN 到 Mask R-CNN
  • C语言笔记(第一章:C语言编程)
  • docker容器内的网络抓包
  • FineReport中如何实现自动滚屏效果
  • happypack两次报错的问题
  • HTTP 简介
  • js递归,无限分级树形折叠菜单
  • Linux各目录及每个目录的详细介绍
  • SpiderData 2019年2月23日 DApp数据排行榜
  • Vim 折腾记
  • vuex 学习笔记 01
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • 程序员该如何有效的找工作?
  • 解析 Webpack中import、require、按需加载的执行过程
  • HanLP分词命名实体提取详解
  • !!Dom4j 学习笔记
  • #include到底该写在哪
  • #QT(QCharts绘制曲线)
  • (Charles)如何抓取手机http的报文
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (五)IO流之ByteArrayInput/OutputStream
  • (限时免费)震惊!流落人间的haproxy宝典被找到了!一切玄妙尽在此处!
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (原创)可支持最大高度的NestedScrollView
  • (原創) 如何解决make kernel时『clock skew detected』的warning? (OS) (Linux)
  • (转)scrum常见工具列表
  • (转)我也是一只IT小小鸟
  • .Net FrameWork总结
  • .Net Remoting(分离服务程序实现) - Part.3
  • .net 写了一个支持重试、熔断和超时策略的 HttpClient 实例池
  • .NET 药厂业务系统 CPU爆高分析
  • .NET文档生成工具ADB使用图文教程
  • /etc/shadow字段详解
  • [20170713] 无法访问SQL Server
  • [BeginCTF]真龙之力