什么是云原生和 CNCF?

news2024/11/18 3:25:07

一、CNCF简介

CNCF:全称Cloud Native Computing Foundation(云原生计算基金会),成立于 2015 年 12 月 11 日,是一个开源软件基金会,它致力于云原生(Cloud Native)技术的普及和可持续发展。

成立CNCF这个组织的初衷或者愿景,简单说:

  • 推动云原生计算可持续发展;
  • 帮助云原生技术开发人员快速地构建出色的产品:

 

二、CNCF Landscape 路线图

CNCF Landscape最重要的产出包括一个路线图和一个全景图。路线图(Trail Map)是CNCF对云原生用户使用开源项目以及云原生技术的推荐过程。在路线图的每个步骤中,用户都可以选择供应商支持的产品或自己动手使用开源项目。 

整个路线图分成了十个步骤,每个步骤都是用户或平台开发者将云原生技术在实际环境中落地时,需要循序渐进思考和处理的问题:

  1. 容器化。目前最流行的容器化技术是 Docker,你可以将任意大小的应用程序和依赖项,甚至在模拟器上运行的一些程序,都进行容器化。随着时间的推移,你还可以对应用程序进行分割,并将未来的功能编写为微服务。
  2. CI/CD(持续集成和持续发布)。创建 CI/CD 环境,从而使源代码上的任意修改,都能够自动通过容器进行编译、测试,并被部署到预生产甚至生产环境中。
  3. 应用编排(Kubernetes)。Kubernetes 是目前市场上应用编排领域被最广泛应用的工具,Helm Charts 可以用来帮助应用开发和发布者用于升级 Kubernetes 上运行的应用。
  4. 监控和分析。在这一步中,用户需要为平台选择监控、日志以及跟踪的相关工具,例如将Prometheus用于监控、Fluentd用于日志、Jaeger用于整个应用调用链的跟踪。
  5. 服务代理、发现和治理。CoreDNS、Envoy 和 LInkerd 可以分别用于服务发现和服务治理,提供服务的健康检查、请求路由、和负载均衡等功能。
  6. 网络。Calico、Flannel 以及 Weave Net 等软件用于提供更灵活的网络功能。
  7. 分布式数据库和存储。分布式数据库可以提供更好的弹性和伸缩性能,但同时需要专业的容器存储予以支持。
  8. 流和消息处理。当应用需要比JSON-REST这个模式更高的性能时,可以考虑使用 gRPC 或者 NATS。gRPC 是一个通用的 RPC(远程调用)框架(类似各种框架中的RPC调用),NATS 是一个发布/订阅和负载均衡的消息队列系统。
  9. 容器镜像库和运行环境。Harbor 是目前最受欢迎的容器镜像库,同时,你也可以选择使用不同的容器运行环境用于运行容器程序。
  10. 软件发布。最后可以借助 Notary 等软件用于软件的安全发布。

 

三、CNCF 全景图(Landscape)

CNCF Landscape路线图从实践步骤上帮助用户梳理了整个云原生应用的最佳流程。然而整个实践过程中的每个环节,用户都需要了解有哪些具体的软件和产品选择,这就是CNCF Landscape全景图发挥作用的地方了(https://landscape.cncf.io/)。

这张全景图试图从云原生的层次结构,以及不同的功能组成上,让用户了解云原生体系的全貌,并帮助用户在不同组件层次去选择恰当的软件和工具进行支持。

四、云原生简介

云原生(cloud native)是一种基于云的基础之上的软件架构思想,以及基于分布部署和统一运管的分布式云,以容器、微服务、DevOps等技术为基础建立的一套云技术产品体系。

  • 云原生从字面意思上来看可以分成云和原生两个部分。
  • 云是和本地相对的,传统的应用必须跑在本地服务器上,现在流行的应用都跑在云端,云包含了 IaaS、PaaS 和 SaaS。
  • 原生就是土生土长的意思,我们在开始设计应用的时候就考虑到应用将来是运行云环境里面的,要充分利用云资源的优点,比如️:云服务的弹性和分布式优势。

如何开发出适合于在云环境里面部署的程序呢?其实主要是需要遵循几个开发原则:

 

1、容器化(docker + k8s)

容器化的好处在于运维的时候不需要再关心每个服务所使用的技术栈了,每个服务都被无差别地封装在容器里,可以被无差别地管理和维护,现在比较流行的工具是docker和k8s。

2、微服务

微服务解决的是我们软件开发中一直追求的低耦合+高内聚,与微服务对应的是我们传统的单体应用。微服务还建议使用RESTful API通信。

3、无服务(Serverless)

无服务器架构并不是说,未来不再需要服务器,而是不再着重关注底层的基础架构,更多的注意力可以放在和业务更相关的一些逻辑实现上。例如一些函数的代码片段,平台自动根据负载按需部署和启动,以及自动伸缩代码逻辑来满足业务处理的需求。

4、DevOps

DevOps(Development和Operations的组合词)即开发、运维一体化。涉及软件在整个开发生命周期中的持续开发,持续测试,持续集成,持续部署和持续监控。

  • 维基百科对DevOps的定义比较拗口。其实往简化里讲DevOps是提倡开发和IT运维之间的高度协同,从而在完成高频率部署的同时,提高生产环境的可靠性、稳定性、弹性和安全性。
  • 从另外一个维度,广义上来说,DevOps不仅需要打通开发运维之间的部门墙,我们认为DevOps更多的需要从应用的全生命周期考虑,实现全生命周期的工具全链路打通与自动化、跨团队的线上协作能力

5、Service Mesh(服务网格)

Service Mesh是近年兴起的一个话题,在容器微服务的基础上,通过 Service Mesh 可以让用户更精细、更智能的去管理服务之间的通讯Service Mesh 社区的旗舰项目Istio,当前的热度正在迅速的飙升。

6、云(Cloud)

云是云原生的基础,没有云也就没有云原生。没有对云正确地理解,也不可能对云原生有正确的打开方式。对于非技术人员来说,至少要理解云的多种不同的服务模型,比方:IaaS、PaaS、SaaS 以及各种服务模型的应用场景和价值。

 

五、小结

我们不难发现,云原生是一个很宽泛的概念,想要开发一个支持云原生的应用并不难,可能就是简单的实现可基于容器部署、使用Kubernetes进行编排与调度,集成CI/CD工具以及Prometheus监控工具等

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/803210.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MATLAB与ROS联合仿真——绘图类功能模块介绍

1、Drawing Trajectories (1)输入参数: xr和yr为小车在世界坐标系下当前的位置坐标,X和Y世界坐标系下当前目标点的位置坐标,Xall与Yall为完整的需要跟踪的轨迹,仅用来画图作为参考,与小车的控制…

【JavaWeb】渲染技术Jsp

🎄欢迎来到边境矢梦的csdn博文,本文主要讲解Java web中渲染技术 Jsp 的相关知识🎄 🌈我是边境矢梦,一个正在为秋招和算法竞赛做准备的学生🌈 🎆喜欢的朋友可以关注一下🫰&#x1faf…

MySQL~SQL语句

一、SQL 1.什么是SQL? Structured Query Language:结构化查询语言 每一种数据库操作的方式存在不一样的地方,称为“方言”。 2.SQL通用语法 SQL 语句可以单行或多行书写,以分号结尾 可使用空格和缩进来增强语句的可读性 MyS…

理解构建LLM驱动的聊天机器人时的向量数据库检索的局限性 - (第1/3部分)

本博客是一系列文章中的第一篇,解释了为什么使用大型语言模型(LLM)部署专用领域聊天机器人的主流管道成本太高且效率低下。在第一篇文章中,我们将讨论为什么矢量数据库尽管最近流行起来,但在实际生产管道中部署时从根本…

有哪些好用的思维导图软件?这几款软件很好用

有哪些好用的思维导图软件?思维导图软件是一类专门用于制作和管理思维导图的工具软件。它能够帮助用户将复杂的思维过程、信息和知识进行有机的组织和整理,从而达到更好的思维和工作效果。下面就给大家介绍几种好用的思维导图绘制软件。 第一种软件&…

广州道可维斯受邀参加首届金蝶暨佛山数字化生态峰会

2023首届金蝶暨佛山数字化生态峰会,于7月28日在佛山隆重举行。此次大会由金蝶软件集团主办,共有超150家软件行业企业莅临参与,共同探讨数字化行业的最新动态和趋势。 活动当日,道可维斯的客户成功中心主任梁健,做了以“企业内容管…

C++程序获取python脚本控制台输出的一种方法

作者:朱金灿 来源:clever101的专栏 为什么大多数人学不会人工智能编程?>>> 最近要使用C程序调用python脚本,调用方法是通过启动python进程来调用,其中遇到的一个问题是在C程序中需要获取python脚本的控制台…

公文需要重点强调的内容,可以采用格式进行突出显示

在公文的写作中,对于需要重点强调的内容,可以采用加粗、斜体或下划线等格式进行突出显示,以使读者更容易理解和把握公文的重点和主旨。 具体来说,可以使用以下几种方式进行突出显示: 1.加粗:将需要强调的关…

Go 语言入门指南:基础语法和常用特性解析

文章目录 Hello,World变量、指针及赋值变量和常量指针赋值 选择和循环选择循环 基本数据类型整型整型的取值范围 运算符二元运算符一元运算符 浮点型复数和布尔类型 字符串runeUnicode和UTF-8按字节访问按字符rune访问特点 数组数组的定义1. 使用默认初始值2. 定义并初始化3. 省…

蓝桥杯单片机第十三届国赛 真题+代码

注:PWM没搞出来 iic.c /* # I2C代码片段说明1. 本文件夹中提供的驱动代码供参赛选手完成程序设计参考。2. 参赛选手可以自行编写相关代码或以该代码为基础,根据所选单片机类型、运行速度和试题中对单片机时钟频率的要求,进行代码调试和修…

​《吐血整理》进阶系列教程-拿捏Fiddler抓包教程(9)-Fiddler如何设置捕获Https会话​

1.简介 由于近几年来各大网站越来越注重安全性都改成了https协议,不像前十几年前直接是http协议直接裸奔在互联网。还有的小伙伴或者童鞋们按照上一篇宏哥的配置都配置好了,想大展身手抓一下百度的包,结果一试傻眼了,竟然毛都没有…

ChatGML2新手速通!自定义魔法指令,一键开启大模型奇妙之旅!

我们的宗旨是! 让人人都有大模型用! 让人人都能轻松上手使用大模型! ChatGLM2-6B是中英双语对话模型 ChatGLM-6B 的第二代版本,相比第一代,第二代支持更强大的性能、更长的上下文、更高效的推理。 飞桨AI Studio已支…

数据库转换分析软件:EasyMorph 5.X Crack

EasyMorph 为您和您的团队提供数据超能力。无需编码技能。不要问 IT 人员。 自己做。 内置动作 即使您不是 IT 专家,也可以从任何地方检索数据并自动执行复杂的数据转换 无需 SQL 或编程知识 — 设计简单且 100% 可视化 减少对企业IT部门的依赖,减少繁琐…

揭秘爱数AnyShare认知助手:大模型深度产品化,深化人与机器的“分工协作”

文 | 智能相对论 作者 | 叶远风 大模型竞逐日趋白热化,百模大战热闹非凡。 但是,对产业主体或者普通看客而言,大模型究竟如何改变一线业务、实现工作方式的变革甚至组织转型,很多人并没有具象化的认知。 技术厉害、产品牛&…

HEVC 率失真优化技术介绍

背景 为了将具有庞大数据量的视频在有限信道内传输、存储、高压缩率的编码算法往往会造成编码重建视频与原始视频存在差别,即重建视频产生失真,该类压缩被称为有损压缩。对于有损压缩算法,其性能需要根据编码输出的比特率和编码带来的失真度…

Mongo 集群部署

1. 集群架构 # mongos:提供路由数据库集群请求的入口,所有的请求都通过 mongos 进行协调,不需要在应用程序添加一个路由选择器,mongos 自己就是一个请求分发中心,它负责把对应的数据请求转发到对应的 shard 服务器上。在生产环境通常有多 mongos 作为请求的入口,防止其中…

消息服务概述

消息服务的作用: 在多数应用尤其是分布式系统中,消息服务是不可或缺的重要部分,它使用起来比较简单,同时解决了不少难题,例如异步处理、应用解耦、流量削锋、分布式事务管理等,使用消息服务可以实现一个高…

适用于 Linux 系统的综合日志审计和报告

从 Linux 设备以及各种其他日志源收集日志,并从单个控制台监控它们,以轻松了解网络活动。 Linux 系统日志如何工作 Linux 操作系统日志包含多个日志文件,其中包含有关网络中发生的事件的详细信息。在服务器上执行的每个操作都可以通过日志进…

【C语言】从零开始学习数组

🍁 博客主页:江池俊的博客 💫收录专栏:C语言——探索高效编程的基石 💻 其他专栏:数据结构探索 💡代码仓库:江池俊的代码仓库 🎪 社区:C/C之家社区 🍁 如果觉…

【项目方案】OpenAI流式请求实现方案

文章目录 实现目的效果比对非stream模式stream模式实现方案方案思路总体描述前端方案对比event-source-polyfill代码示例前端实现遇到的问题与解决方法后端参考资料时序图关键代码示例后端实现时遇到的问题与解决方法实现目的 stream是OpenAI API中的一个参数,用于控制请求的…