容器云开发必备知识

news/2024/7/3 16:35:53
如今,「即服务 」的时代已经到来,将能力服务化,万物皆可具备基础设施的特征。在IT界更是如此,譬如,基础设施即服务(IaaS)、平台即服务(PaaS)、软件即服务(SaaS)等等。容器即服务(CaaS)无疑是这波浪潮中的又一位重量级参与者。

那么作为开发者,想探究CaaS的「真谛」,首先应该明白这一系列问题——Caas是什么?它能干什么?和PaaS的区别是什么?构成CaaS有哪些基本要素?有什么代表性的产品值得了解? 在本文中,我们将探讨这一系列问题,帮助开发者「破除迷雾 」、「看清真相 」。

容器云开发必备知识容器云开发必备知识

什么是容器?

容器即服务,英文全称Container-as-a-Service,简写CaaS,它提供一种上传、运行、扩展以及管理应用程序容器的方法。这类服务全面提供执行这些功能的API或CLI,有些甚至提供GUI或Web门户。这里的容器可以是多种不同类型,包括Docker、LXD以及OpenVZ等等。听起来似乎跟PaaS差不了多少,但二者也有一些区别。下面我们从概念出发,看看二者之间的差异所在。

平台即服务(PaaS),以IaaS为基础构建而成。此外,也有一部分PaaS供应商也开始以CaaS作为服务基础。

从传统意义出发,PaaS解决的是应用程序的托管、打包与分发问题,强调零停机时间部署、自动规模伸缩与负载均衡功能。此外,它还可以集成多种开发人员工具以及运行状态与指标统计信息。PaaS的核心优势之一,在于开发人员可以轻松构建应用程序,而不再分神于应用程序运行所处的具体环境。像Cloud Foundry, Heroku以及Google App Engine等,都属于典型的PaaS供应商。

而CaaS提供一种轻松快捷的容器部署方式。它还能够保证全面完善的可移植性,确保容器能够在几乎任何位置上运行。CaaS还提供用于容器乃至容器集群的配置及管理功能。

从表面上看,CaaS与PaaS好像没什么不同。二者都管理着应用程序的部署与托管任务,而且基本功能也区别不大。PaaS的不少优势,都可以通过使用容器镜像加容器注册表的方式实现。此外,Kubernetes能够帮助用户滚动部署并实现负载均衡与自动规模伸缩。典型的CaaS解决方案包括Google Kubernetes Engine (GKE)与Azure Container Service。

要PaaS?还是要CaaS?

要PaaS?还是要CaaS?实际上,选择哪种解决方案要根据你的应用场景来决定。

这二者都能帮助开发人员部署并运行应用程序。但是,PaaS会隐藏一部分容器化任务。换句话说,使用CaaS,开发者仍然需要管理一部分应用程序容器化任务;但使用PaaS,开发者就不用额外操心了。再有,PaaS在所使用的语言及技术方面也有更多要求。虽然能够支持多种不同语言,但数量毕竟有限,这是因为PaaS通常依靠构建软件包来运行应用程序,而不像Docker那样使用通用型容器。

此外,CaaS能更轻松地运用多云托管功能,这也是因为它不像PaaS那样「独断专行 」。只要云服务商支持容器,开发者也可以借此发布并运行自己的服务。

如果企业拥有强大的基础设施团队,或者已经习惯于处理网络及运营问题,那么使用CaaS将帮助企业更好地发挥自身技术优势。但如果企业并不熟悉该如何将服务部署至云端,或者运营团队在这方面的经验不是很丰富,那么PaaS无疑是更理想的入门级选项。

在PaaS与CaaS之间进行选择时,另一大重要考量因素在于速度与控制。如果企业希望快速推出应用程序,又不想为其他事情分神,那么PaaS的效果更好。但如果打算更好地控制服务的容器化及管理方式,那么CaaS解决方案将成为最佳选择。

说了半天,好像净是好事。但CaaS难道就没有任何缺点了吗?

当然有。首先,根据云服务商的具体方案,大家会发现其可能并不支持某些容器类型。绝大多数服务商当然都在支持Docker,但现在CaaS当中限定容器类型的现象正愈发普遍。云服务商越来越多地将其产品耦合起来,确保客户能够满足云服务提出的种种使用要求。因此如果企业希望在容器类型当中做出选择,至少应确保其符合多数CaaS供应商提出的OCI标准。

此外,由于CaaS并不怎么强制限定能够在容器中运行的服务类型,所以企业往往难以找到适当的工具与监控方案。请确保使用Scaylr等工具持续监控容器运行,目前大多数CaaS供应商要求用户自行跟踪容器状态。

构成CaaS的基本要素

下面来看构成CaaS的各类组件。

(1) 容器注册表

容器注册表是容器镜像存储库,我们可以将它视为容器的Maven库。在将镜像放入存储库后,容器管理系统即可提取镜像并加以运行。

大多数开发者最熟悉的注册表当数Docker Hub,可以使用这类公共注册表,也可以使用某些本地内部版本。

(2) 容器管理

CaaS的容器管理与编排组件负责管理容器与容器集群。常见的容器管理工具包括Kubernetes与Docker Swarm。

首先,容器管理能够自动执行容器部署。这类组件会创建新实例,监控这些实例以确保其正常启动,并在发生问题时加以回滚。一旦应用程序顺利启动并开始运行,容器管理还可监控服务运行状态。如果某个服务实例发生故障或无法响应,则容器管理组件将启动新实例以接管相应负载。

容器管理组件还帮助实现负载均衡并控制容器之间的通信。例如,其仅允许客户端应用程序及容器在完全启动并运行之后,方可调用服务实例。

(3) 开发者工具

除了容器管理与注册表,CaaS解决方案中还提供多种开发者工具。最常用的工具包括CLI或API。这些工具将帮助监控并管理容器实例。虽然很多开发者希望以自动化或脚本化方式处理大部分管理任务,但这些开发者工具还是可以帮助快速对实例进行规模伸缩、或即时修改配置与部署选项。

总结

多年以来,容器已经凭借自身强大的特性进入主流市场,但CaaS供应商并没有丝毫松懈。他们以更灵活的方式满足着大多数开发团队的需求,成功从PaaS手中夺下不少市场份额。但是,CaaS并不适合所有用户、所有场景。换言之,它只是我们日益庞大的开发者空间中的另一款工具。究竟适不适合,请务必认真考量。


http://lihuaxi.xjx100.cn/news/285838.html

相关文章

使用C++基于Socket编程实现文件下载(改进-封装成类)

使用: (1)首先运行服务端,待服务端运行起来; (2)最后运行客户端,输入要传输文件到哪个目标机器的IP地址; (3)输入传输文件的路径及文件&#xff0…

北大高材生割美国韭菜被FBI通缉?本人回应予以否认

一位国内私募公司创始人疑似因策划操纵股票期货合约,被美国司法部起诉。11月7日,美国司法部和商品期货交易委员会(CFTC)发布通告称,高频交易公司Tower Research Capital同意签署了一项延期起诉协议(DPA&…

Codeforces Round #648 (Div. 2)题解 A-D

文章目录A - Matrix GameB - Trouble SortC - Rotation MatchingD - Solve The MazeA - Matrix Game 题解:其实这个题细细一想,剩下可以化1的位置的数量就是整行不包含1的行数或整列不包含1的列数的两者最小值,最后在判断一下奇偶即可。 /*K…

分类讨论 ---- 2021 icpc 沈阳 L Linear Fractional Transformation (思维题)

题目链接 题目大意 给你一个线性变换函数f(z)azbczdf(z)\frac{azb}{czd}f(z)czdazb​,现在把取值范围扩展到复数域。给你3个等式 f(z1)w1f(z_1)w_1f(z1​)w1​ f(z2)w2f(z_2)w_2f(z2​)w2​ f(z3)w3f(z_3)w_3f(z3​)w3​ 问你f(z0)f(z_0)f(z0​)是多少? 解题思路&a…

用Python做一个翻译软件

来源 | Ahab杂货铺(ID:PythonLearningCamp)前两天吃了平哥的一波狗粮,他给女朋友写了一个翻译软件,自己真真切切的感受到了程序员的浪漫。在学习requests请求的时候做过类似的Demo,给百度翻译发送一个post请…

[分享]iOS开发-UI篇:CAlayer层的属性

iOS开发UI篇—CAlayer层的属性 一、position和anchorPoint 1.简单介绍 CALayer有2个非常重要的属性:position和anchorPoint property CGPoint position; 用来设置CALayer在父层中的位置 以父层的左上角为原点(0, 0) property CGPoint anchorPoint; 称为“定位点”、…

云服务新手必备的SaaS成本管理技巧

企业加速部署基于云的SaaS产品可以归因于很多因素-全球疫情蔓延、过时的软件和硬件,甚至仅仅是企业数据中心中的简单设备故障。 但是很快–如果还没有,你的第一笔账单也将到来。如果你是云服务新手,并且没有适当的SaaS成本管理控制措施&#…

她破解哈希函数算法:坚持10年做一件事一定能做成

今年9月7日,2019未来科学大奖揭晓,这项设立4年的大奖迎来首位女性得主——密码学家王小云。在信息时代,金融服务、网络安全等背后都离不开密码系统的“护航”。在大众眼中,密码带着神秘色彩,王小云破解和设计密码的经历…