应用(APP)部署容器化演进之路

news2024/12/25 3:46:28

应用(Application)部署容器化演进之路

一、应用程序部署痛点

1.1 应用程序部署流程

举例:部署一个JAVA编程语言开发的Web应用,以War包放入Tomcat方式部署。

  • 部署过程如下:
    • 服务器配置运行环境:JAVA代码运行环境,例如JDK或JRE
    • 服务器上安装Tomcat web中间件,用于运行War包
    • 把JAVA Web对应的War包放置于Tomcat对应目录
    • 在服务器上启动Tomcat应用
    • 可选:涉及数据库(MySQL)或缓存系统(Redis)等都需要逐一部署。

1.2 应用程序扩缩容

  • 涉及多台服务器部署相同的上述环境
  • 痛点:上述环境部署要重新实施一遍,较浪费人力与物力成本

1.3 应用程序多环境部署

  • 环境:本地测试环境、预发布环境、生产环境
  • 在本地测试环境运行没有问题,但在预发布环境中出现了问题,甚至上面2种环境都没有问题,到了生产环境就有问题了。
  • 需求:一次成功,可到处运行。

二、 计算资源应用演进过程

2.1 使用物理服务器痛点

在这里插入图片描述

  • 从物理服务器自身管理角度

    • 物理服务器环境部署人力成本大,特别是在自动化手段不足的情况下,依靠人肉运维的方式解决。
    • 当物理服务器出现宕机后,服务器重启时间过长,短则1-2分钟,长则3-5分钟,有背于服务器在线时长达到99.999999999%标准的要求
    • 物理服务器在应用程序运行期间硬件出现故障,解决较麻烦
    • 物理服务器计算资源不能有效调度使用,无法发挥其充足资源的优势
  • 从物理服务器部署应用程序角度

    • 物理服务器环境部署浪费时间,没有自动化运维手段,时间是成倍增加的
    • 在物理服务器上进行应用程序配置变更,需要重新实施前述步骤

2.2 使用虚拟机优点与缺点

在这里插入图片描述

2.2.1 使用虚拟机优秀点

  • 从虚拟机本身管理角度

    • 虚拟机较物理服务器轻量,可借助虚拟机模板实现虚拟机快捷生成及应用
    • 虚拟机中部署应用与物理服务器一样可控性强,且当虚拟机出现故障时,可直接使用新的虚拟机代替
    • 在物理服务器中使用虚拟机可高效使用物理服务器的资源
    • 虚拟机与物理服务器一样可达到良好的应用程序运行环境的隔离
  • 从在虚拟机中部署应用程序角度

    • 在虚拟机中部署应用,容易扩容及缩容实现
    • 与物理服务器相比较,当部署应用程序的虚拟机出现宕机时,可以快速启动,时间通常可达秒级,10秒或20秒即可启动,应用程序可以继续提供服务
    • 应用程序迁移方便

2.2.2 使用虚拟机缺点

  • 虚拟机管理软件本身占用物理服务器计算资源较多,例如:VMware Workstation Pro就会占用物理服务器大量资源,所以一般在企业应用中使用KVM虚拟机较多。
  • 虚拟机底层硬件消耗物理服务器资源较大,例如:虚拟机操作系统硬盘,会直接占用大量物理服务器硬盘空间
  • 相较于容器技术,虚拟机启动时间过长,容器启动可按毫秒级计算
  • 虚拟机对物理服务器硬件资源调用添加了调链条,存在浪费时间的现象,所以虚拟机性能弱于物理服务器
  • 由于应用程序是直接部署在虚拟机硬盘上,应用程序迁移时,需要连同虚拟机硬盘中的操作系统一同迁移,会导致迁移文件过大,浪费更多的存储空间及时间消耗过长

2.3 使用容器的优点与缺点

请添加图片描述

2.3.1 使用容器的优点

  • 不需要为容器安装操作系统,可以节约大量时间
  • 不需要通过手动的方式在容器中部署应用程序的运行环境,直接部署应用就可以了
  • 不需要管理容器网络,以自动调用的方式访问容器中应用提供的服务
  • 方便分享与构建应用容器,一次构建,到处运行
  • 毫秒级启动
  • 容器可直接使用物理服务器硬件资源,物理服务器硬件资源利用率高,性能较好。

2.3.2 使用容器的缺点

对于对使用物理服务器、虚拟机已成为习惯的小伙伴来说,容器化可控性不强,最直观的就是对容器管理访问,总想按物理服务器或虚拟机的方式去管理它,其实容器与物理服务器、虚拟机管理方式上有着本质的区别的,最好不要管理。

三、 What is a Container?

3.1 容器定义

在这里插入图片描述

  • 虚拟机

    • 采用虚拟化技术手段实现物理服务器计算资源打包的方式,为应用程序提供类物理服务器运行环境
    • 能够实现应用程序与应用程序之间的隔离
    • 使用自动化技术部署应用程序及应用程序迁移较方便
    • 可横向扩展
  • 容器

    • 容器是轻量级物理服务器计算资源的打包方式,即轻量级虚拟机,为应用程序提供类虚拟机运行环境。
    • 可在物理服务器中实现高密度部署
  • 容器与虚拟机对比

对比属性容器(Container)虚拟机(VM)
隔离性基于进程隔离提供资源的完全隔离
启动时间毫秒级或秒级秒级或分钟级
内核共用宿主机内核使用独立内核
占用资源MB级GB级
系统支持容量(同级别)支持上千个容器几十台虚拟机

3.2 容器功能

  • 安装容器管理工具,例如Docker,Containerd等,把应用以容器化的方式运行

  • 应用在自己的容器中运行,实现应用程序间隔离

  • 应用程序运行的容器可以生成应用程序模板文件,即容器镜像(Image),其不可变,即为云原生代表技术基础设施不可变,且可以在其它的物理服务器中运行。

3.3 容器解决了什么问题

  • 快速交付和部署应用 (镜像与容器)
  • 资源的高效利用和隔离 (在物理机上实现高密度部署)
  • 便捷迁移和扩缩容(一次构建,多处运行)

四、使用容器步骤

  • 安装容器管理工具

    • Docker (Docker公司)
    • Containerd (2017年docker捐给CNCF云原生计算基金会)
    • Pouch (阿里云)
  • 搜索/下载容器镜像(Image)

  • 使用容器镜像生成容器(容器镜像中的应用程序启动)

  • 终端用户(互联网用户或其它应用程序)访问

  • 迁移部署(可直接把正在运行的容器打包成新的容器镜像,在其它主机上运行即可。)

Containerd (2017年docker捐给CNCF云原生计算基金会)

  • Pouch (阿里云)

  • 搜索/下载容器镜像(Image)

  • 使用容器镜像生成容器(容器镜像中的应用程序启动)

  • 终端用户(互联网用户或其它应用程序)访问

  • 迁移部署(可直接把正在运行的容器打包成新的容器镜像,在其它主机上运行即可。)

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

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

相关文章

SDMTSP:粒子群优化算法PSO求解单仓库多旅行商问题,可以更改数据集和起点(MATLAB代码)

一、单仓库多旅行商问题 单仓库多旅行商问题(Single-Depot Multiple Travelling Salesman Problem, SD-MTSP):𝑚个推销员从同一座中心城市出发,访问其中一定数量的城市并且每座城市只能被某一个推销员访问一次&#x…

AI在线医生

第一章:背景介绍与Unit的使用 1.1背景介绍 1.2 Unit对话API的使用 第二章:在线医生的总体架构与工具介绍 第三章:neo4j图数据库 第四章:离线部分 第五章:命名实体审核任务 第六章:命名实体识别任务 第七章:在线部分 第八章:句子主题相关任务 第九章:系统联调与测试

LiteFlow决策系统的策略模式,顺序、最坏、投票、权重

个人博客:无奈何杨(wnhyang) 个人语雀:wnhyang 共享语雀:在线知识共享 Github:wnhyang - Overview 想必大家都有听过或做过职业和性格测试吧,尤其是现在的毕业生,在投了简历之后经…

ubuntu paddle ocr 部署bug问题解决

ubuntu paddle ocr 部署会出现异常报错。 尝试安装以下版本: pip install paddlepaddle2.5.2 -i https://pypi.tuna.tsinghua.edu.cn/simpl ​​​​​​ 助力快速掌握数据集的信息和使用方式。 数据可以如此美好!

华为云计算HCIE笔记02

第二章:华为云Stack规划设计 交付总流程 准备工作:了解客户的基本现场,并且对客户的需求有基本的认知。 HLD方案BOQ报价设备采购和设备上架 2.安装部署流程 硬件架构设计 硬件设备选配 设备上架与初始化配置 准备相关资料(自动下载…

WWW23-多行为级联|级联图卷积网络的多行为推荐

论文:https://arxiv.org/abs/2303.15720 代码:https://github.com/SS-00-SS/MBCGCN 这篇论文MB-CGCN和上一篇CRGCN是同一个团队的,都是级联的方式。一个用了残差,一个用了特征转换,文章最后有discussion讨论了两者的不…

【day16】Java开发常用API

模块15回顾 在深入探讨模块16之前,让我们回顾一下【day15】中的重点内容: String类: 构造方法:String(), String(String s), String(char[] chars), String(byte[] bytes), String(char[] chars, int offset, int count), String…

MLU运行Stable Diffusion WebUI Forge【flux】

文章目录 一、平台环境准备二、代码下载三、基础环境准备3.1 支援whl包 四、代码修改4.2 组件下载 六、运行效果 FLUX模型是由Black Forest Labs推出的一款文本生成图像的AI模型,具有120亿参数,显著提升了图像生成的质量和多样性‌。FLUX模型包含三个版本…

PPP - NCP协议

NCP协议是一个很多子协议构成的主要取决于网络层封装的什么协议比如 三层协议NCP协议ipIPCPIPv6IPv6CPMPLSMPLSCP NCP能够协商的内容包括: 1.网络层协议(ip?ipv6?MPLS?…)  2.协商地址 主要了解使用最多…

< Chrome Extension : TamperMonkey > 去禁用网页的鼠标的事件 (水文)

问题描述 在一个视频网站看视频,在播放视频时, 如果当鼠标移到视频外,只要有点击鼠标的动作,视频就会暂停播放(包括 Window 下的 其它 tab)。有种被打劫完财物,还被凌辱的感觉。 解决方案 使…

网络安全 | 常见的网络攻击类型及防范技巧全解析

网络安全 | 常见的网络攻击类型及防范技巧全解析 一、前言二、常见网络攻击类型2.1 网络扫描2.2 恶意软件攻击2.3 网络钓鱼2.4 拒绝服务攻击(DoS/DDoS)2.5 中间人攻击2.6 SQL 注入攻击2.7 跨站脚本攻击(XSS) 三、防范技巧3.1 网络…

CE第七次作业

1. for创建20用户 用户前缀由用户输入 用户初始密码由用户输入 例如:test01,test10 [rootServer ~]# vim add_user20.sh #!/bin/bash read -p "please input usernames prefix:" name_pre read -p "please input users passwd:" p…

了解反向传播算法

目录 一、说明 二、了解反向传播算法 三、定义神经网络模型 3.1 输入层 3.2 隐藏图层 3.3 输出层 四、前向传播和评估 五、反向传播和计算梯度 六、结束语 一、说明 梯度正向和反向传播,是神经网络的重要概念。其中包含的重要技巧是:1)复函数…

实力认可 | 通付盾入选《ISC.AI 2024创新能力全景图谱》五项领域

近日,ISC.AI 2024创新能力百强(以下简称“创新百强”)正式发布《ISC.AI 2024创新能力全景图谱》。该全景图谱是由政企、资本、高校、行业力量共同完成了领域划分、综合创新等标准的制定,整合梳理了参评的300余家数字安全厂商、120…

Web3.0安全开发实践:9个sCrypt智能合约开发的最佳实践

sCrypt是一种基于TypeScript的嵌入式领域特定语言(eDSL),专为在比特币链上编写智能合约而设计。sCrypt智能合约使用比特币支持的操作码,可以编译成Bitcoin Script。由此生成的类似汇编的脚本可用作交易中的锁定脚本。 本文将探讨…

新手SEO指南如何快速入门与提升网站排名

内容概要 搜索引擎优化(SEO)是提高网站可见度和排名的重要手段,尤其对新手来说,掌握其基本概念和实用技巧至关重要。本文将针对新手提供一系列的指导,帮助你快速入门并逐步提升网站排名。 首先,了解SEO的…

【EthIf-14】EthIfGeneral容器配置-02

1.实际EthIfGeneral的配置实例 关闭DET接口开启发送确认中断开启接收中断主周期接收timeout主周期 2. 代码实例参考 阅读此部分代码,搞清楚代码分为几个section,大概瞄一眼就好,不用深究其含义,只需有一个宏观的层次结构的映像即可。 //Appl/GenData/EthIf_Cfg.h #

‘pnpm’ 不是内部或外部命令,也不是可运行的程序或批处理文件。

‘pnpm’ 不是内部或外部命令,也不是可运行的程序或批处理文件。 1.情况: npm -v 和 node -v的都正常就是 pnpm-v 无效 检查环境变量也没看出问题 2.分析 没有正确添加环境变量 3.解决 找到npm的全局安装目录 npm list -g --depth 0这里出现了npm的全局安装…

Docker 部署 SpringBoot VUE项目

是一套基于若依的wms仓库管理系统 一、后端部署 后端地址:https://gitee.com/zccbbg/wms-ruoyi/tree/v1/ 1、用IDEA拉代码,并修改API统一后缀 2、复制一个配置文件 application-dev.yaml,并修改里面的mysql与redis配置 3、将打包的jar上传…

面试基础篇---迭代器,yield, tcp, 等

1.谈谈python的装饰器,迭代器,yield? 迭代器在内存中通常是一次性遍历的,也就是说,一旦遍历完所有元素,它就会停止工作,不可再用。 惰性计算:生成器按需生成数据,即只有在…