云原生(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和大数据应用提供高效、可扩展、弹性伸缩的应用程序开发和部署方式。
- 物联网:处理海量的传感器数据,实现快速部署和弹性伸缩,提高物联网应用的可靠性和可维护性。
- 区块链:为区块链应用提供高效、可扩展、弹性伸缩的应用程序开发和部署方式。
以上就是云原生的全部内容,感谢阅读!
相关文章:
云原生(Cloud native)
云原生(Cloud native) 一 定义 目前比较权威的定义主要来自Pivotal公司和云原生计算基金会(Cloud Native Computing Foundation,简称CNCF)。 1.1 Pivotal 4个要点: DevOps、持续交付、微服务、容器化。六…...
JVM OutOfMemoryError异常模拟
1.Java堆溢出 Java堆用于储存对象实例,我们只要不断地创建对象,并且保证 GC Roots 到对象之间有可达路径来避免垃圾回收机制清除这些对象,那么随着对象数量的增加,总容量触及最大堆的容量限制后就会 产生内存溢出异常。 限制Java …...
架构师机器学习操作 (MLOps) 指南
MLOps 是机器学习操作的缩写,是一组实践和工具,旨在满足工程师构建模型并将其投入生产的特定需求。一些组织从一些自主开发的工具开始,这些工具在每次实验后对数据集进行版本控制,并在每个训练周期后对检查点模型进行版本控制。另…...
【学习笔记】虚幻SkeletalMesh学习(一)基础介绍
文章目录 零、前言一、资源介绍1.1 骨架资源1.2 骨架网格体资源 二、UE4中的定义2.1 骨骼数据2.2 模型网格数据 三、渲染3.1 RenderData的初始化3.2 渲染对象的创建3.3 渲染对象的更新3.3.1 游戏线程的更新(*FSkeletalMeshObjectGPUSkin::Update*)3.3.2 …...
Apache防盗链、网页压缩、网页缓存
目录 网页压缩 类型 示例 动态添加模块操作步骤 重装Apache操作步骤 网页缓存 示例 操作步骤 隐藏版本信息 操作步骤 Apache防盗链 定义 原理 配置防盗链实验环境 实验环境 本地图片盗链示例 操作步骤 防盗链示例 操作步骤 网页压缩 网站的访问速度是由多个…...
LocalAI - 笔记
1.localAI https://localai.io/ 2 使用笔记本电脑搭建本地LLMs大模型环境 使用笔记本电脑搭建本地LLMs大模型环境 - 大模型知识库|大模型训练|开箱即用的企业大模型应用平台|智能体开发|53AI 3LocalAI视频 【LocalAI】(3):超级简单&…...
Windows图形界面(GUI)-SDK-C/C++ - 编辑框(edit)
公开视频 -> 链接点击跳转公开课程博客首页 -> 链接点击跳转博客主页 目录 编辑框(edit) 控件样式 创建控件 初始控件 消息处理 示例代码 编辑框(edit) 控件样式 编辑框(Edit Control)是Windows中最常用的控件之一,用于接收用户…...
区块链学习05-web3中solidity和move语言
Solidity 和 Move 语言的比较:Web3 开发中的两种选择 Solidity 和 Move 都是用于开发区块链平台智能合约的编程语言。它们具有一些相似之处,但也存在一些关键差异。 相似之处: Solidity 和 Move 都是图灵完备语言,这意味着它们可以表达计算…...
web滚动页面到指定位置
方法:scrollTo(x-coord,y-coord) 方法是Web API中Element接口的一部分,但它主要用于Window对象或可滚动的元素(如具有overflow属性为auto或scroll的<div>)。此方法用于将窗口滚动到文档中的特定位置,或者将某个元…...
操作系统真象还原:实现文件写入
14.7 实现文件写入 这是一个网站有所有小节的代码实现,同时也包含了Bochs等文件 本节要实现的 sys_write 是系统调用 write 的内核实现,咱们之前的 write 是个简易版,它是为了临时完成输出打印的功能,不支持文件描述符。如今要让…...
FastAPI 学习之路(四十九)WebSockets(五)修复接口测试中的问题
其实代码没有问题,但是我们忽略了一个问题,就是在正常的开发中,肯定是遇到过这样的情况,我们频繁的有客户端链接,断开连接,需要统一的管理这些链接,那么应该如何管理呢。其实可以声明一个类去管…...
STM32智能楼宇照明系统教程
目录 引言环境准备智能楼宇照明系统基础代码实现:实现智能楼宇照明系统 4.1 数据采集模块 4.2 数据处理与控制模块 4.3 通信与网络系统实现 4.4 用户界面与数据可视化应用场景:楼宇照明管理与优化问题解决方案与优化收尾与总结 1. 引言 智能楼宇照明系…...
【C语言】原码、反码、补码详解 -《码上有道 ! 》
目录 原码、反码、补码详解及其在C语言中的应用一、原码(Sign-Magnitude)1.1 定义与表示1.2 历史来源与作用1.3 示例1.4 C语言示例1.5 代码运行结果 二、反码(Ones Complement)2.1 定义与表示2.2 历史来源与作用2.3 示例2.4 C语言…...
C++找到错误的具体信息
fprintf(stderr, "Errno: %d, Error message: %s\n", errno, strerror(errno));为什么不用printf来打印输出? 使用 fprintf(stderr, …),将错误消息输出到标准错误流 stderr。这种做法是为了将错误信息输出到一个专门用于记录错误的流中&…...
Windows 安装Zookeeper
安装 下载地址:Apache ZooKeeper 我下载的版本:zookeeper-3.4.12 下载后,解压 配置 1、 在D:\zookeeper-3.4.12文件夹中创建一个“data”文件夹和“log”文件夹 2、 复制zoo_sample.cfg,改名:zoo.cfg 修改zoo.c…...
从人工巡检到智能预警:视频AI智能监控技术在水库/河湖/水利防汛抗洪中的应用
一、背景需求分析 近日,我国多省市遭遇连日暴雨,导致水库、湖泊、河道等水域水位暴涨,城市内涝频发。随着夏季汛期的到来,降雨天气频繁,水利安全管理面临严峻挑战。为保障水库安全、预防和减少洪涝灾害,采…...
【轻松拿捏 】Java-static关键字(面试)
Java-static关键字 1. 定义和基本概念 回答要点: 示例回答: 2. static 变量 回答要点: 示例回答: 代码示例: 3. static方法 回答要点: 示例回答: 代码示例: 4. static 代…...
【阶乘】个人练习-Leetcode-LCP 22. 黑白方格画
题目链接:https://leetcode.cn/problems/ccw6C7/description/ 题目大意:给出一块白方格面积为n*n,给出一个数字k,每一次操作可以把方格的某一整行或者某一整列涂黑,求使得黑色格子数字为k的【最终图案】的个数。 思路…...
十七、【文本编辑器(三)】图像坐标变换
目录 一、缩放功能 二、旋转功能 三、镜像功能 四、QMatrix简单介绍 一、缩放功能 (1)在头文件中添加 “protected slots:" 变量: void ShowZoomln( ); (2)在 createActionso函数的最后添力口事件关联&…...
生活中生智慧
【 圣人多过 小人无过 】 觉得自己做得不够才能做得更好,互相成全;反求诸己是致良知的第一步;有苦难才能超越自己,开胸怀和智慧;不浪费任何一次困苦,危机中寻找智慧,成长自己。 把困苦当作当下…...
【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...
渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...
ArcGIS Pro制作水平横向图例+多级标注
今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...
ABAP设计模式之---“简单设计原则(Simple Design)”
“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...
PAN/FPN
import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...
【分享】推荐一些办公小工具
1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...
GO协程(Goroutine)问题总结
在使用Go语言来编写代码时,遇到的一些问题总结一下 [参考文档]:https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现: 今天在看到这个教程的时候,在自己的电…...
c++第七天 继承与派生2
这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分:派生类构造函数与析构函数 当创建一个派生类对象时,基类成员是如何初始化的? 1.当派生类对象创建的时候,基类成员的初始化顺序 …...
提升移动端网页调试效率:WebDebugX 与常见工具组合实践
在日常移动端开发中,网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时,开发者迫切需要一套高效、可靠且跨平台的调试方案。过去,我们或多或少使用过 Chrome DevTools、Remote Debug…...
Neko虚拟浏览器远程协作方案:Docker+内网穿透技术部署实践
前言:本文将向开发者介绍一款创新性协作工具——Neko虚拟浏览器。在数字化协作场景中,跨地域的团队常需面对实时共享屏幕、协同编辑文档等需求。通过本指南,你将掌握在Ubuntu系统中使用容器化技术部署该工具的具体方案,并结合内网…...
