纯小白也能看懂,十分钟帮你快速了解云原生概念

news2024/12/25 13:32:50


在这里插入图片描述

随着云原生相关技术的蓬勃发展,不管你是刚入职的小白,还是多年经验的老手,都在关注这种技术趋势。但相关内容太多,导致一些小白无从入手,也没有一个全局的概念。那就花10分钟看完本文,帮你快速了解云原生的起源和发展,并介绍一些技术现状

📕作者简介:战斧,从事金融IT行业,有着多年一线开发、架构经验;爱好广泛,乐于分享,致力于创作更多高质量内容
📗本文收录于 云原生,有需要者,可直接订阅专栏实时获取更新
📘高质量专栏 RabbitMQ、Spring全家桶 等仍在更新,欢迎指导
📙Zookeeper Redis kafka docker netty等诸多框架,以及架构与分布式专题即将上线,敬请期待


一、麻烦的一天

小明是一个小企业的程序猿,他觉得他的工作麻烦又枯燥。每天,他需要处理一大堆服务器和应用程序,手动部署和维护它们。这让他感觉像是在重复地做着无尽的琐碎工作。

每当有新的应用需要部署,或者把同一个应用部署在不同的服务器上时,小明都得花费大量时间来配置服务器、安装依赖和解决各种兼容性问题。今天这台机器mysql端口与众不同要重新配置,明天那台机器环境依赖发生冲突要解决冲突,有时候,一个小小的错误就可能导致整个应用无法正常运行,让他陷入绝望。

而且,每当服务器出现故障时,他必须赶紧跑去现场解决问题,有时候甚至要在深夜起床处理紧急事务。这让他感到心力交瘁,无法得到休息。

另外,应用程序的扩展也是一个头疼的问题。每当用户量激增时,他得手动调整服务器资源,希望能满足需求。但有时候,应用程序还是会因为资源不足而崩溃,让他倍感无奈。
在这里插入图片描述

二、魔法的种子

1. Docker

假设你是一位热爱烹饪的厨师,有一天你决定去朋友家里做一道特别的美食。然而,你们两个的厨房设备和材料不完全相同,你的厨房里有一些特殊的调味料和器具,而你朋友的厨房里则有一些其他的特色食材。

在传统情况下,为了做这道美食,你需要将所有的调味料和器具都带到朋友家,而且可能还需要重新学习适应朋友的厨房设备。这样做不仅麻烦,还浪费时间和精力。

但是,你可以将所有的调味料、食材和器具都装进一个精美的密封箱子中,在箱子里,你的食材和调味料都是独立的、封闭的,不会与其他东西混合,也不会受到外界的干扰。你可以轻松地将这个箱子带到朋友家,只需要在朋友的厨房里打开箱子,就可以开始烹饪了。

这样一来,你不需要在朋友家里携带大量的物品,也不需要适应不同的环境。你可以专注于烹饪美食,保持高效和一致的操作,而不用担心与朋友的厨房设备产生冲突。

而对于程序猿,不仅仅是小明,实际上小张、小李等无数程序猿也饱受煎熬。大家一致认为,程序猿的天职是写代码实现业务,现在却被繁琐的部署配置,故障解决搞得焦头烂额,真是天理不容。

于是Docker公司于2013年推出了Docker容器,该技术通过将应用程序及其所有依赖项(例如库、配置文件等)打包 在一个独立的运行环境中,形成一个封闭的容器。容器可以在任何支持容器引擎的环境中运行,而不受环境差异的影响,保证了应用程序在不同环境中运行的一致性。

2. Kubernetes

自从有了箱子之后,你感觉轻松了很多,各种不同的环境你都能烹饪出同样的美食。终于成为了酒店大厨,你现在甚至可以弄出一个箱子,然后参照着复制出10个箱子,这样你就可以同时炒10份了。但你很快又发现了问题,尽管开始时10份菜是一样的食材,但在炒菜的过程中,10份菜火候却没法保证完全一致,有的还是生的,有的却还没熟,而且此时如果又来了一批客人,需要你同时炒更多份菜,你还得抽身去复制箱子然后起锅烧油。这让你分身乏术,手忙脚乱。

最后,你选择请了个专业的厨师助手,它会自动根据你的需求,调整每个容器的火力和烹饪时间。当一道菜煮熟了,它会自动关掉相应的火力,而不会让食物过熟。当有更多的客人来访时,助手会自动为帮你复制箱子,并且起锅开始炒。

你不再需要手动管理每个锅,也不用担心忘记照顾其中的一道菜。你可以轻松地同时烹饪多道菜,而且每一道菜都能在适当的时候煮熟,保持美味和口感。你的得力厨师助手,让你的烹饪过程更加高效和愉快

在Docker推出仅仅一年以后,Google的工程师Brendan Burns、Joe Beda和Craig McLuckie 在2014年提出Kubernetes(K8s)这样一个开源容器集群管理系统,其作用是帮助用户管理包括容器的创建、配置和自动化部署等一系列工作,还能够提供高可用性、负载均衡、自动扩容和自动恢复

需要注意的是,Google早在2000年就开始运行自己的容器技术,Kubernetes的出现是为了推广容器技术。Kubernetes本身不依赖于Docker,除了Docker外,Kubernetes还支持其他容器运行时,如rkt、CRI-O和Frakti,Kubernetes的容器运行时接口(CRI)定义了容器运行时与Kubernetes API的交互方式,因此如果有符合CRI规范的容器运行时,就可以在Kubernetes上使用它们来运行容器

这里我们可以说句题外话,K8s目前已经成了事实上的行业标准,而且其可以踢开Docker选用其他容器,尽管由于Docker曾经的垄断地位和巨大名气,现在很多人依旧选择Docker,但其在市场上的占有率却有所下降


三、渐入佳境

1. 技术与术语

随着K8s的推广,一种软件开发和运维的理念,逐渐发展和完善起来。这就是我们所说的云原生:云原生是一种基于云计算的应用程序开发和部署方法,它依托于云计算与云架构;会使用容器化、微服务架构和自动化管理技术来实现高效、弹性、可伸缩和可靠的云部署。当然,这云计算伴随着不少技术和术语,让我为你进行一些常用技术的解释:

容器化技术

容器化技术是将应用程序及其依赖的组件、库等打包到一个可移植的容器中,并提供统一的运行环境,从而实现跨平台和快速部署的技术。目前常用的容器化技术有 Docker、LXC等。
Pod
Pod是Kubernetes中最基本的调度单位。可以类比成进程,一个进程中可以只有一个线程,也能有多个共用资源的线程。一个Pod则代表着集群中运行的一个进程,一个Pod中可以装一个容器(建议),也可以同时封装几个紧密耦合互相协作的容器,它们之间共享资源,相互协作成为一个service单位。

DevOps

包含 developmentoperations,即开发和运维两个单词的组合。是一种将开发和运维融合起来的方法论和实践(最初是这样,但现在这个词的语义越来越大,从需求-设计-开发-测试-上线-运维整条线路,能缩短周期,提高稳定的方法都可以算在里面),目的是提高软件开发和部署的速度、质量和可靠性,其一般手段有:

  • 持续集成和持续交付
    这其实也是个老概念,持续集成和持续交付(CI/CD),代表着一种软件开发流程。在以往,开发人员写完代码需要手动打包编译,然后交给测试团队,测试团队拿到包要先部署,然后开始测试。发现问题后又需要改代码打包编译,如此反复。其实很多内容可以不用人工操作,现在我们可以自动化构建、测试、部署和交付应用程序,只需做好设定,如定时触发,其就会源源不断的执行 扫描检测-编译-打包-部署乃至自动化测试等操作,如果出现故障,会及时进行邮件通知
    在这里插入图片描述
  • 自动化运维
    利用软件技术实现运维工作自动化和标准化。它将重复性、繁琐的运维工作通过自动化程序进行处理,以提高工作效率和服务质量。比如自动化部署、自动化监控、自动化备份等

弹性伸缩

弹性伸缩是指根据应用负载和资源消耗情况,自动调整云原生应用的资源配额和容器数量等资源分配策略,以满足应用的性能需求和业务变化,比如我们可以设置当CPU使用率超过90%时,自动增加一个Pod实例。当CPU使用率低于50%时,自动减少一个Pod实例。
在这里插入图片描述

Sidecar

Sidecar的字面意思为边车,就像下图这样,摩托车附带个车斗。
在这里插入图片描述
在云原生领域,Sidecar是指一种类似的模式,用于将一些辅助服务(例如日志收集、监控和调试)部署在与主要应用程序部署同一容器,或Pod中的辅助容器中,这种设计还是符合Sidecar的形象的。通常,Sidecar容器与主应用程序容器共享相同的网络和存储卷,它们可以通过共享文件系统来进行通信和协作。这种模式可以使应用程序容器保持单一职责(Single Responsibility Principle),便于管理和维护
在这里插入图片描述

服务网格

服务网格(Service Mesh)是指将网络功能划分为一些小的、独立的组件,以点对点通信和 API 网关等方式实现服务间通信和控制的技术方案。比如有一个电商系统,其中包含了商品服务、订单服务和支付服务三个微服务,这三个服务需要相互通信,以往每个微服务都需要通过自己的代码来实现服务发现、负载均衡、故障处理等功能。现在这些与业务无关的内容都下沉到基础设施层了。

在这里插入图片描述

如图,其中绿色方块为应用服务,蓝色方块为 Sidecar Proxy,应用服务之间通过 Sidecar Proxy 进行通信,而服务网格就是由应用程序中的与每个微服务配对的网络代理和一组任务管理流程共同组成

2. 组件与框架

随着云原生的逐渐发展,很多组件和框架也顺势发展起来,我们现在就快速浏览下:

Docker

前面也介绍过,是开源的容器化技术,它可以将应用程序及其依赖项打包成一个独立的、移植性强的容器。我们可以轻松将其镜像推送至库(公共或私有),然后在其他的位置拉取下来,帮助用户加速应用程序的交付和部署过程

在这里插入图片描述

Kubernetes

前面已经提过了,Kubernetes是最流行的容器编排管理平台,可用于管理多个容器化的应用程序。主要功能包括
自动化部署、扩展和管理容器化应用程序,还可以实现滚动升级和回滚、负载均衡、服务发现、容器存储等,不难发现其具有 自动化和自我修复能力、可扩展性和高可用性等
在这里插入图片描述

Helm

Kubernetes的包管理工具,用于部署、升级和管理Kubernetes应用程序,如同Helm可以帮助用户管理应用程序的依赖项、配置和变量,并提供了图表和模板等功能
在这里插入图片描述

Istio

是一款开源的服务网格,分为控制平面,与数据平面两部分。用于管理服务之间的流量、策略和安全。Istio可以自动化地添加负载均衡、流量控制、故障恢复、度量、监控和日志记录等功能,从而提高应用程序的可靠性和安全性
在这里插入图片描述

Prometheus

普罗米修斯,开源的应用程序监控和告警系统,可以帮助用户监控应用程序的状态和性能。Prometheus提供了一个灵活的查询语言和可视化界面,可以使用它来监控系统资源的使用情况、诊断应用程序问题、识别瓶颈和优化性能

在这里插入图片描述

Jaeger

开源的分布式跟踪系统,最初由Uber公司开发并开源。主要用于分布式系统中的可视化监控、调试和故障排除。其主要包括以下几个结构:

  1. Agent:负责接收来自应用程序的跟踪数据,并发送给Collector
  2. Collector:收集来自Agent的跟踪数据,将其存储到后端存储系统,如Elasticsearch、Cassandra
  3. UI:提供一个易于使用的操作界面,包括搜索、过滤、排序
  4. Query:负责查询存储在后端存储系统中的跟踪数据,并返回一个可视化的跟踪图表
    在这里插入图片描述

Envoy

一个开源的高性能、可扩展的边缘和服务代理,用于处理现代的微服务架构,它提供了负载平衡、流量管理、安全性、观察和监控等功能。可以支持各种通信协议和格式,如HTTP、gRPC、TCP
在这里插入图片描述

四、前路漫漫

尽管云原生发展非常蓬勃,但是毫无疑问,其现在也面临着许多挑战。目前来说,可以总结出四大点:

  1. 复杂:云原生涉及多个组件和工具,需要深入的技术知识和经验才能正确实现和管理
  2. 安全:相较于传统的架构,由于云原生环境的复杂性和开放性,安全威胁和漏洞可能会增加
  3. 成本:实施和管理云原生环境需要大量的人力、物力和财力。小企业可能只能考虑租用现有云提供商的服务
  4. 标准:云原生是一个相对较新的技术,尚未存在普遍接受的标准,互操作性和可移植性仍存在问题

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

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

相关文章

PHP实践:用openssl打造安全可靠的API签名验证系统

🏆作者简介,黑夜开发者,全栈领域新星创作者✌,阿里云社区专家博主,2023年6月csdn上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。 🏆本文已…

clickhouse断电重启故障解决方案

业务场景 公司的一个日志系统用到了clickhouse。一线运维反映说有个生产环境因为异常断电造成服务器重启。在执行日志系统的启动脚本时,一直报clickhouse启动不起来,日志系统无法使用。 问题排查 通过阅读启动脚本代码,以及启动日志系统&a…

【安全测试】Web应用安全之XSS跨站脚本攻击漏洞

目录 前言 XSS概念及分类 反射型XSS(非持久性XSS) 存储型XSS(持久型XSS) 如何测试XSS漏洞 方法一: 方法二: XSS漏洞修复 原则:不相信客户输入的数据 处理建议 资料获取方法 前言 以前都只是在各类文档中见到过XSS,也进…

接口测试前置基础学习

网址结构(面试重点) 网址就是浏览器请求的地址。 网址组成:(6个部分) 1 协议http协议,超文本传输协议,https协议,s表示ssl加密。传输更安全。 2 域名:就是ip地址。从…

巨量算数:2023中国家居行业洞察报告(附下载

关于报告的所有内容,公众【营销人星球】获取下载查看 核心观点 回首过去几年,在疫情反复、地产热度消减、人口出生率下降等各种不利因素影响下,家居行业及其上下游面临极大挑战,整体行业遇冷,市场规模的增速进一步放…

超前端相关的学习网站和一些靠谱的小工具

CSS相关 1. CSS Battle - 在线比拼 CSS https://cssbattle.dev 在线比拼 CSS ,一个挺有趣的竞争性游戏,一共有12个级别,需要你用 HTML和 CSS 100%还原它给出的页面,然后再尽量减少代码,你也可以查看全球的排行榜&am…

初级职称评审流程是什么?如何才能评初级职称呢?

职称主要代表社会地位,有高职称的人享有较高的社会经济和福利待遇,与实际技能未必有直接关联。 初级职称评审流程:初级职称评审需要以企业名义参加评审才可以,提交资料到人社局,人社局核实资料和基本情况,确…

[Qt]FrameLessWindow实现调整大小、移动弹窗并具有Aero效果

说明 我们知道QWidget等设置了this->setWindowFlags(Qt::FramelessWindowHint);后无法移动和调整大小,但实际项目中是需要窗口能够调整大小的。所以以实现FrameLess弹窗调整大小及移动弹窗需求,并且在Windows 10上有Aero效果。 先看一下效果&#xf…

光环云入选“算力服务方阵”成员单位,共筑算力新生态,赋能数字经济发展

7月26日,由中国信息通信研究院、中国通信标准化协会联合主办的“2023第十届可信云大会”在北京举办。会上,光环云正式入选国内首个算力服务研究组织——算力服务方阵,携手方阵成员共筑算力新生态,赋能数字经济发展。 算力服务方阵…

日撸java_day56-57

文章目录 day56-57kMeans 聚类代码运行截图 day56-57kMeans 聚类 1.kMeans 聚类需要中心点收敛时结束. 2.数据集为 iris, 所以最后一个属性没使用. 如果对于没有决策属性的数据集, 需要进行相应修改. 3.数据没有归一化. 4.getRandomIndices() 和 knn 的完全相同, 拷贝过来. 本…

markdown语法速记

markdown语法速记 这里只记录兼容性强的语法格式: [markdown官方文档]https://markdown.com.cn 标题 #号后跟一个空格如:“# title_level_1” 代表一级标题,两个#号代表二级标题,以此类推;最小为6级标题换行 直接…

两数相加 II

给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。 你可以假设除了数字 0 之外,这两个数字都不会以零开头。 示例1: 输入:l1 [7,2,4,3], l2 [5,6,4] 输…

【ASP.NET MVC】使用动软(五)(13)

一、问题 前文完成的用户登录后的首页如下: 后续账单管理、人员管理等功能页面都有相同的头部,左边和下边,唯一不同的右边内容部分,所以要解决重复设计的问题。 二、解决方法——使用布局页 在Views上右键添加新建项&#xff…

鸿蒙4.0发布会说了啥?关注个性与效率,小艺智能程度令人惊艳

鸿蒙4.0系统的发布会已经结束,整个发布会看下来,给我最深刻的印象就是——鸿蒙4.0是一个让手机更接近个人终端的系统。但选择系统难免掺杂个人喜好和偏见,因此本文我只会从鸿蒙4.0那些让我感到惊喜的功能入手介绍,不对系统进行评价…

【深度学习Week4】MobileNet_ShuffleNet

报错:unsafe legacy renegotiation disabled 解决方案: 尝试了更换cryptography36.0.2版本,以及更换下载链接的方法,都不行,最后采用了手动下载mat文件并上传到colab的方法 高光谱图像分类数据集简介Indian Pines&…

免疫疗法勘察兵——DC细胞

DC细胞又叫树状细胞或者树突细胞,1869年由保罗兰格尔翰斯发现,一开始被误以为是神经细胞的一种,直到1973年皮肤科医师Inga Silberberg发现了他的免疫功能,同年,被拉尔夫斯坦曼和赞威尔A科恩两人正式命名为“dendritic…

《凤凰架构》第一章——演进中的部分

前言 刚开始决定弄懂文中所提到的所有东西,就像我写ByteByteGo呢几篇文章一样,把每一句话都弄懂。但是对于《凤凰架构》来说,这有点太费时间了,并且没有必要,有些东西可能永远都不会用到,但文章为了全面的…

【基础类】—CSS盒模型的全面认识

一、基本概念:标准IE模型 盒模型:margin border padding content 标准模型:将元素的宽度和高度仅计算为内容区域的尺寸(content-box,默认) 当CSS盒模型为 标准盒模型 (box-sizing: conten…

【安全测试】安全测试威胁建模设计方法STRIDE

目录 背景 TM(ThreatModeling) 实践 具体流程 资料获取方法 背景 目前安全测试一般都存在如下问题: 安全测试人员不懂业务,业务测试人员不懂安全,安全测试设计出现遗漏是无法避免的安全测试点繁多复杂,单点分析会导致风险暴…

商城-学习整理-基础-商品服务API-品牌管理(六)

目录 一、使用逆向工程生成前后端代码1、新增品牌管理菜单2、使用生成的前端代码 二、优化逆向生成的品牌管理页面1、显示状态开关优化2、品牌上传优化(使用阿里云存储)1)阿里云对象存储-普通上传方式2)阿里云对象存储-服务端签名…