加入收藏 | 设为首页 | 会员中心 | 我要投稿 站长网 (https://www.zhandada.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Unix > 正文

并排比较Unikernel Container 操作系统

发布时间:2022-11-22 13:31:24 所属栏目:Unix 来源:网络
导读: 云计算的下一个时代

为什么部署如此困难?
所有这些工具存在的原因是在将软件部署到生产环境时出现的问题。 以下是一些需要解决的常见问题:
· 环境一致性。 编写将在单个平台上运行的代

云计算的下一个时代

为什么部署如此困难?

所有这些工具存在的原因是在将软件部署到生产环境时出现的问题。 以下是一些需要解决的常见问题:

· 环境一致性。 编写将在单个平台上运行的代码要容易得多。 因此,您需要最小化跨部署的平台差异。

· 可扩展性。 您应该能够快速扩展基础架构,以满足需求高峰并最大程度地降低成本。

· 安全。 这几乎是不言自明的。 您希望您的软件容易受到各个级别的黑客的攻击。

· 监控。 您想有效地监视基础结构上的负载并提取各种数据以优化您的操作。

· 对开发人员友好。 软件开发人员希望尽可能少地工作来向客户发布其最新版本。 通过让开发人员感到满意,以后您将避免许多问题。

此列表并不详尽,但是这些是一些常见问题,直到最近才解决。

使用虚拟机进行部署

在容器问世之前,虚拟化堆栈是大规模应用程序部署的必备工具。 要了解差异,您首先必须了解什么是操作系统以及什么是内核。

操作系统是管理硬件并控制正在运行的软件的系统软件。 最重要的是,它使(并带走了)硬件对进程的访问权。

内核是操作系统的主要组件。 其余的OS在那里可以加载内核。 它始终驻留在内存中,并且可以完全控制硬件和软件。

现在,虚拟化是一种在共享硬件上运行多个操作系统的方法。 一个称为主机的操作系统运行一个管理程序,该管理程序可以使来宾操作系统安全地访问硬件。 有时没有主机操作系统。 Type-1虚拟机管理程序直接在硬件上运行并加载虚拟机。

unix主机空间_asp主机空间_无忧主机asp空间

asp主机空间_无忧主机asp空间_unix主机空间

典型的部署堆栈由在多个服务器上运行的多个虚拟机组成。 您可以在上面看到此类堆栈的简化图。 有时,它是每个应用程序VM,每个客户端VM或每个概念VM(一个用于数据库,一个用于缓存,等等)。 您会注意到浪费了多少资源:每个VM都必须运行自己的操作系统实例(大多数情况下是Linux),从而导致职责重复。 您还可以想象管理这样的基础架构有多么困难:您可以有效地获得100多个服务器(例如SaaS平台),它们都是独立的虚拟机。

基于VM的方法的部署过程可以采用以下两种方法之一。 构建系统可以生成带有内置软件的VM的完整映像,并且一旦更新到达,VM就会重新启动。 或者,构建系统仅生成软件包,并使用一组脚本将其上载到服务器。 这两种方法的缺点是设置复杂,最终导致VM之间的不一致。 当您需要更新操作系统版本时,一场真正的噩梦就开始了。 您将必须执行两次:首先是主机OS,然后是来宾OS。

但是,这种方法有其优点。 这样,您可以完全控制系统各个方面的环境,并可以对其进行配置以完全满足您的需求。 由于您可以直接连接到VM并将其用作常规工作站,因此它也简化了调试。

使用容器部署

随着诸如Docker之类的容器运行时以及诸如Kubernetes之类的容器编排系统的出现,软件基础设施的新纪元开始崭露头角。 您可能对容器很熟悉,有些甚至使用了它们,所以现在我将解释它们的工作原理。

容器尝试实现与虚拟机相同的概念,但消除了机器之间的重复工作。 您还记得上一节中的内核概念吗? 嗯,Docker不再为应用程序加载整个操作系统,而是让容器使用主机OS的内核,同时允许它们侧载应用程序特定的库和程序。 由于Linux内核非常普遍,并且在发行版之间并没有真正改变,因此可以实现完全的平台独立性。 通过调整容器及其映像,您可以微调您的应用将使用的特定库和配置,从而获得性能提升,而无需运行整个操作系统。 典型的容器堆栈如下所示:

无忧主机asp空间_asp主机空间_unix主机空间

运行整个操作系统所需的liveLess开销意味着您可以在同一硬件上运行更多容器(更多应用)。 值得注意的是,由于其强大的命名空间支持,Docker仅可用于Linux内核。 命名空间将可用资源标准化,并且可以控制哪个进程可以访问哪些资源。 因此,每个容器都能准确获取所需的CPU时间,内存,存储空间和网络连接量。 当您在macOS / Windows上运行Docker时,它会在后台启动Linux VM,这就是为什么在这些平台上它运行速度如此之慢的原因。

asp主机空间_无忧主机asp空间_unix主机空间

当然,基于容器的方法有其缺点。 该软件必须适合在容器(容器化)中使用,并且这可能会很棘手,尤其是对于旧的代码库。 另外,由于Docker使用Linux内核,因此您不能使用它来运行专为Windows Server设计的旧软件(在引入.NET Core之前)。 容器具有更多用于资源分配和互操作功能的配置unix主机空间,因此很容易搞砸建立适当的基础架构的过程。 最后,由于Docker容器共享同一内核,因此您不能使用自定义内核(例如,用于基于事务的软件的Realtime Linux内核)。

容器的优点之一是能够在开发计算机上轻松运行它们的能力。 开发人员非常喜欢这个,所以让我们继续。 部署过程本身也容易得多,您只需将预先构建的容器上载到容器存储库中,然后您的生产服务器就会提取更新的版本。

使用Unikernel进行部署

尽管容器正迅速成为行业标准,但Unikernels仍有很多工作要做。 Unikernel试图进一步推动容器的概念,从而完全不需要OS。 Unikernel通过使用库操作系统来实现此目的。 库操作系统提供与常规操作系统类似的功能(但仅限于单用户,单个地址空间),但以您的应用程序使用的库形式提供。 因此,无需在内存中维护驻留内核,而是通过预构建的二进制库来管理所有内容。 但是,Unikernel不处理资源分配,因此它们仍然需要管理程序:

unix主机空间_无忧主机asp空间_asp主机空间

您可以将虚拟机管理程序视为常规操作系统,而将unikernels视为在其上运行的进程,以解决问题。 区别在于,所有特定于应用程序的系统调用都应尽可能靠近应用程序推送,而管理程序仅处理直接的硬件互操作。

您可以想象,unikernel的开销甚至比容器少,并且应该具有更高的性能。 而且,通过消除使用多用户,多地址空间内核,可以大大提高安全性。 Unikernels是一项真正令人惊奇的技术,但它们还远未投入生产。 首先需要解决的一些问题是:

· 调试。 由于unikernel没有任何操作系统在运行,因此您无法直接连接到其Shell并进行调查。 我相信将会有一个更简单的方法,但是还没有。

· 简化构建。 生成单核图像非常复杂,并且需要对此主题有深入的了解。 在简化和标准化流程之前,采用将非常缓慢。

· 框架支持。 当前的大多数应用程序框架都必须修改并生成有关Unikernels中使用情况的文档。

一些著名的Unikernel项目包括ClickOS,runtime.js和Clive。

结束语

感谢您的阅读,希望我对Unikernels主题感兴趣。 请继续关注有关这项革命性技术的更多帖子!

资源资源

· 维基百科上的Unikernels

· Unikernel项目列表

普通英语的笔记

您知道我们有四本出版物吗? 通过关注他们,表达他们的爱:普通英语JavaScript,普通英语AI,普通英语UX,普通英语Python –谢谢并继续学习!

另外,我们始终对帮助推广优质内容感兴趣。 如果您有要提交给我们任何出版物的文章,请使用您的中等用户名和您感兴趣的内容发送电子邮件至submittings@plainenglish.io,我们将尽快回复您!

(本文翻译自Michael Krasnov的文章《Unikernel Vs Container Vs Operating System: Side-By-Side Comparison》,参考:)

(编辑:站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章