快速了解云计算与云原生

news2025/1/11 17:02:58

快速了解云计算与云原生

  • 云计算
  • 云原生
  • DevOps
  • 容器
  • 持续交付
  • 微服务

云计算

在讲云原生之前,先来讲讲云计算

其中云原生属于技术架构理念,而云计算提供应用所需的基础资源,云计算是云原生的基础,两者是相辅相成的

云计算简单来说,就是一种随时随地给大家提供解决网络资源的一种计算服务和应用

关于云计算的三种服务模式

  1. Saas(软件即服务):运用到我们的生活中,就是各种云存储云文档等等,完全不用自己去开发,直接拿来用就可以
  2. Paas(平台即服务):服务商提供给你一个框架,还有各种基础功能,你可以在这个平台上,开发不同的软件
  3. Laas(基础设施即服务):服务商只出租硬件设施,比如服务器硬盘或者网络等,给需要这些基础设施资源的人

三种模式也可以这样理解:
假如你有一个业务是需要用 Word写东西,做记录
最基础版本就是laas是服务商租你一台没有系统的电脑
中间版本paas是服务商租你一个带win10的电脑
最高版本就是saas就是服务商租你一台带win10还预装了word的电脑

专业图理解:
在这里插入图片描述

云原生

云原生(Cloud Native)是一种构建和运行充分利用云计算模型优势的应用程序的方法

云原生概括为4个要点:DevOps+持续交付+微服务+容器
在这里插入图片描述
符合云原生架构的应用程序:采用开源堆栈(K8S+Docker)进行容器化,基于微服务架构提高灵活性和可维护性,借助敏捷方法、DevOps支持持续迭代和运维自动化,利用云平台设施实现弹性伸缩、动态调度、优化资源利用率

DevOps

DevOps中的Dev指的是Development(开发),Ops指的是Operations(运维),用一句话来说,DevOps就是打通开发运维的壁垒,实现开发运维一体化

在这里插入图片描述

DevOps是为了填补开发端和运维端之间的信息鸿沟,改善团队之间的协作关系,实际上DevOps应该还包括测试

关于软件行业的研发模式,大致有三个阶段:瀑布式开发、敏捷开发、DevOps

瀑布式开发:传统的软件开发流程,软件开发人员花费数周和数月编写代码,然后将代码交给QA(质量保障)团队进行测试,然后将最终的发布版交给运维团队去布署。所有的这三个阶段,即开发,测试,布署

也叫瀑布(Waterfall)模型,就是等一个阶段所有工作完成之后,再进入下一个阶段

敏捷开发:是一种能应对快速变化需求的软件开发能力。就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态

敏捷开发优势在于把一艘大船变成许多条小船,每条小船各司其职,分配小目标,所有的小目标合起来就能完成大目标。效率高,每个人职责分明

不足之处在于小团队做不到拥有开阔的视野,看不到所有团队都在一起做什么事情,大家只知道埋头苦干做好自己的部分就可以,但看不到全局,不知道全局发生了什么事情。对于一些不可分割的大需求,需要一次性派很多人手同时做的需求,敏捷开发就不再合适

虽然敏捷开发大幅提升了软件开发的效率和版本更新的速度,但是它的效果仅限于开发环节,对于运维人员来说,就是不要出问题,但是发生改变的时候最容易出问题。因此运维非常排斥“改变”。

因此才出现了DevOps,从目标来看,DevOps就是让开发人员和运维人员更好地沟通合作,通过自动化流程来使得软件整体过程更加快捷和可靠

DevOps生态圈中的工具

容器

在软件开发过程中,通常会涉及以下几种环境:

  • 开发环境:用于开发人员编写、调试和测试软件的环境,包括开发工具、集成开发环境(IDE)、调试器、编译器等软件工具,以及开发人员个人的计算机或开发服务器。

  • 测试环境:用于软件测试的环境,包括测试服务器、测试数据库、测试数据等,用于进行单元测试、集成测试、系统测试、性能测试等各种测试活动。

  • 集成环境:用于集成开发人员编写的各个模块或组件的环境,以验证它们在一起工作的正确性和稳定性。

  • 部署环境:用于将开发完成的软件部署到生产环境中的环境,包括部署服务器、部署工具、配置管理工具等,用于将软件部署到生成环境中进行实际运行和使用。

  • 生产环境:软件部署和运行的环境,包括服务器、数据库、网络设备、负载均衡器等硬件设备,以及用于部署和管理软件的相关软件工具,用于提供稳定、可靠的环境,使软件能够正常运行并满足用户需求。

对于容器技术来说,对软件开发环境带来了许多好处,主要包括以下几点:

  • 环境一致性: 容器技术可以确保开发、测试和生产环境之间的一致性。开发人员可以在他们的开发机器上构建容器,然后将这些容器部署到测试环境和生产环境中,从而避免了“在我的机器上可以工作”的问题。

  • 快速部署: 容器可以快速部署,因为它们包含了应用程序及其所有依赖关系。这意味着开发团队可以更快地构建、测试和部署应用程序,从而加快软件开发和交付速度。

  • 资源利用率: 容器可以更有效地利用计算资源,因为它们可以在单个物理服务器上运行多个容器实例,而无需为每个应用程序实例分配独立的虚拟机或物理服务器。

  • 隔离性: 容器提供了应用程序之间的隔离,这意味着即使在同一台物理服务器上运行多个容器实例,它们之间也是相互隔离的。这有助于减少因应用程序之间的冲突而导致的问题。

  • 可移植性: 容器可以在各种不同的环境中运行,包括开发人员的个人计算机、本地数据中心、云基础设施等。这种可移植性使得开发团队能够更轻松地在不同的环境中部署和运行应用程序。

  • 微服务架构支持: 容器技术与微服务架构天然契合。通过容器化应用程序,可以更轻松地将应用程序拆分成小型服务,并通过容器编排工具(如Kubernetes)来管理这些服务的部署和伸缩

目前最常用的容器是docker,使用go语言编写
在这里插入图片描述

持续交付

CI/CD是持续集成(Continuous Integration)和持续交付/持续部署(Continuous Delivery/Continuous Deployment)的缩写。它是一种软件开发实践,旨在通过自动化的流程和工具来加速软件的开发、测试和部署

持续集成(Continuous integration,简称 CI)

持续集成指的是,频繁地(一天多次)将代码集成到主干。它的好处主要有两个:

快速发现错误。每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易。
防止分支大幅偏离主干。如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成

持续集成强调开发人员提交了新代码之后,立刻进行构建、(单元)测试。根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起

持续交付

持续交付(Continuous delivery)指的是,频繁地将软件的新版本,交付给质量团队或者用户,以供评审。如果评审通过,代码就进入生产阶段

持续交付可以看作持续集成的下一步。它强调的是,不管怎么更新,软件是随时随地可以交付的

持续交付地将经过测试的代码部署到生产环境中,以便随时进行发布。持续交付旨在确保软件在任何时候都是可发布的状态,从而降低发布新功能或修复bug的成本

持续部署

持续部署(continuous deployment)是持续交付的下一步,指的是代码通过评审以后,自动部署到生产环境,它通过自动化的流程将经过测试的代码自动部署到生产环境中,从而实现快速、频繁地发布软件

持续部署的目标是,代码在任何时刻都是可部署的,可以进入生产阶段

持续部署的前提是能自动化完成测试、构建、部署等步骤

CI/CD的实施需要借助各种工具和技术,例如版本控制系统(如Git)、自动化构建工具(如Jenkins、Travis CI)、自动化测试工具、部署工具(如Docker、Kubernetes)等。通过CI/CD实践,开发团队可以加快软件的交付速度,提高软件质量,降低风险,并提高团队的生产力。这种实践在现代软件开发中被广泛采用,并成为提高软件开发效率和质量的重要手段

微服务

讲到微服务架构,是以单体架构为基础的,就像springcloud是以springboot为基础

通过微服务,可将大型应用分解成多个独立的组件,其中每个组件都有各自的责任领域。在处理一个用户请求时,基于微服务的应用可能会调用许多内部微服务来共同生成其响应

  • 多个独立的组件,指的就是微服务
  • 独立服务一般有明确定义的API,用于通信
  • 独立服务通常由一个小型团队负责
  • 针对每个独立服务的开发,部署,运营维护,扩展等都不应该影响其他服务
  • 每个服务应该针对一组功能进行设计,专注于解决特定的问题
  • 每个服务不强调使用同一语言,这种称之为技术自由

容器是微服务架构的绝佳示例,现代云原生应用使用容器来构建微服务

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

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

相关文章

2024--Django平台开发-Web框架和Django基础(二)

day02 Web框架和Django基础 今日概要: 网络底层引入,到底什么是web框架?常见web框架对比django快速上手(创建网站)常见操作:虚拟环境、django项目、多app应用、纯净版逐点剖析:路由、视图、模…

SpringBoot基于Redis(7.2)分片集群实现读写分离

文章目录 一、前置提要二、集群搭建三、SpringBoot访问分片集群 一、前置提要 SpringBoot访问Redis分片集群和Redis哨兵模式,使用上没有什么区别。唯一的区别在于application.yml配置上不一样。 二、集群搭建 首先,无论如何,得先有一个Red…

零配置,零麻烦:MapStruct 的轻松对象映射之旅

欢迎来到我的博客,代码的世界里,每一行都是一个故事 零配置,零麻烦:MapStruct 的轻松对象映射之旅 前言MapStruct是什么快速上手:基础映射高级映射技巧1. 针对复杂类型的映射:2. 自定义映射逻辑&#xff1a…

【Sublime Text】| 01——下载安装注册

系列文章目录 【Sublime Text】| 01——下载软件安装并注册 【Sublime Text】| 02——常用插件安装及配置 失败了也挺可爱,成功了就超帅。 文章目录 前言1. 下载2. 安装3. 注册3.1 通过修改应用程序注册3.2 通过替换应用程序注册 感谢 前言 轻量代码编辑器有很多 之…

并发(4)

目录 16.sychronized修饰方法在抛出异常时,会释放锁吗? 17.多个线程等待同一个sychronized锁的时候,JVM如何选择下一个获取锁的线程? 18.sychronized是公平锁吗? 19.volatile关键字的作用是什么? 20.vo…

一文读懂 $mash 通证 “Fair Launch” 规则(幸运池玩法解读篇)

Solmash是Solana生态中由社区主导的铭文资产LaunchPad平台,该平台旨在为Solana原生铭文项目,以及通过其合作伙伴SoBit跨链桥桥接到Solana的Bitcoin生态铭文项目提供更广泛的启动机会。有了Solmash,将会有更多的Solana生态的铭文项目、资产通过…

2024年【危险化学品生产单位主要负责人】复审模拟考试及危险化学品生产单位主要负责人作业模拟考试

题库来源:安全生产模拟考试一点通公众号小程序 2024年危险化学品生产单位主要负责人复审模拟考试为正在备考危险化学品生产单位主要负责人操作证的学员准备的理论考试专题,每个月更新的危险化学品生产单位主要负责人作业模拟考试祝您顺利通过危险化学品…

二、医学影像云平台(云PACS-RIS和HIS接口和检查登记)

和HIS接口 RIS和HIS或集成平台的对接,主要是用来获取检查信息,确认状态以及报告回传等工作。这里的接口文档一般都是由HIS来提供,文档里会给出很多概念,可能有病人ID号,身份证号,门诊号、住院号、体检号、…

数据矩阵集成可提高印刷电路板识别的准确性

在复杂的印刷电路板 (PCB) 世界中,准确的电路板元件识别对于简化故障排除至关重要。它确保电子设备高效运行。 本文将探讨数据矩阵码在提高 PCB 零件识别效率方面的作用。数据矩阵码提供了一种简单的解决方案来编码和解码与 PCB 组件相关的信息,在简化识…

添加jdk 11到环境变量的一种方法

添加jdk 11到环境变量的一种方法 1.jdk11可以直接在android studio 中下载, File --> Settings --> Build, Execution, Deployment --> Build Tools --> Gradle 下载jdk 11 ,确认好下载路径 2.jdk11 添加到环境变量添加到环境变量 多个…

AI小蜜批量写作助手:多级指令,插件,GPTs满足不同写作需求

为什么会开发这个脚本? 爆文项目的核心是矩阵怼量 具体怎么做这里介绍很清楚了: AI爆文撸流量主保姆级教程3.0脚本写作教程(解放双手) 我在刚做爆文项目时候,都是手动操作,复制指令,组合指令…

设计模式之过滤器模式

目录 1.简介 2.过滤器的实现 2.1.过滤器的角色 2.2.类图 2.3.具体实现 3.过滤器模式的优点 4.过滤器模式的不足 5.适用的场景 1.简介 过滤器模式(Filter Pattern)或标准模式(Criteria Pattern)是一种结构型设计模式&…

静态代理还是动态代理?来聊聊Java中的代理设计模式

代理模式(Proxy Design Pattern)是一种结构型设计模式,为一个对象提供一个代理对象,然后使用代理对象控制对原对象的引用。即通过代理对象访问目标对象。被代理的对象可以是远程对象、创建开销大的对象或需要安全控制的对象。 一、…

JavaWeb——新闻管理系统(Jsp+Servlet)之jsp新闻查询

java-ee项目结构设计 1.dao:对数据库的访问,实现了增删改查 2.entity:定义了新闻、评论、用户三个实体,并设置对应实体的属性 3.filter:过滤器,设置字符编码都为utf8,防止乱码出现 4.service:业务逻辑处理 5.servlet:处…

Spring AI和Ollama

概述 Spring AI 不仅提供了与 OpenAI 进行API交互,同样支持与 Ollama 进行API交互。Ollama 是一个发布在GitHub上的项目,专为运行、创建和分享大型语言模型而设计,可以轻松地在本地启动和运行大型语言模型。 Docker环境安装Ollama 1.获取D…

第13课 利用openCV检测物体是否运动了

FFmpeg与openCV绝对是绝配。前面我们已经基本熟悉了FFmpeg的工作流程,这一章我们重点来看看openCV。 在前面,我们已经使用openCV打开过摄像头并在MFC中显示图像,但openCV能做的要远超你的想像,比如可以用它来实现人脸检测、车牌识…

个人笔记:分布式大数据技术原理(一)Hadoop 框架

Apache Hadoop 软件库是一个框架,它允许使用简单的编程模型,实现跨计算机集群的大型数据集的分布式处理。它最初的设计目的是为了检测和处理应用程序层的故障,从单个机器扩展到数千台机器(这些机器可以是廉价的)&#…

算法通关村第二十关-黄金挑战图的常见算法

大家好我是苏麟 , 今天聊聊图的常见算法 . 图里的算法是很多的,这里我们介绍一些常见的图算法。这些算法一般都比较复杂,我们这里介绍这些算法的基本含义,适合面试的时候装*,如果手写,那就不用啦。 图分析算法&#xf…

Qt/QML编程学习之心得:Timer的使用(22)

Qt中timer计时器如何使用? Timer的创建: void InitTimer(){myTimer = new QTimer(q);myTimer->setInterval(100); // 100msmyTimer->setSingleShot(true); //只运行一次的计时器QObject::connect(myTimer,SIGNAL(timeout()),q,SLOT(onTimeOut()));myTimer->start(…

(2023|NIPS,邻域分布预测,Wasserstein 距离)通过上下文预测改进基于扩散的图像合成

Improving Diffusion-Based Image Synthesis with Context Prediction 公和众和号:EDPJ(添加 VX:CV_EDPJ 或直接进 Q 交流群:922230617 获取资料) 目录 0. 摘要 3. 基础 4. ConPreDiff 4.1 扩散生成中的邻域上下…