微服务架构开发实战:基于容器的部署与发布微服务,30K有望了

      最后更新:2022-05-19 05:39:43 手机定位技术交流文章

      安装和通过包装解散的微观服务

      微观服务结构系统有若干项服务。服务之间有复杂的依赖关系。{fn黑体fs22bord1shad03aHBE4aH00fscx67fscy662cHFF3cH808080}它会是这样的 {fn黑体fs22bord1shad03aHBE4aH00fscx67fscy662cHFF3cH808080}它会是这样的 {fn黑体fs22bord1shad03aHBE4aH00fscx67fscy662cHFF3cH808080}它会是这样的 {fn黑体fs22bord1shad03aHBE4aH00fscx67fscy662cHFF3cH808080}如果进行部署的方式能够解决总体依赖、确定联系和地址的协议等问题,等等,因此,重新部署到新环境的费用将高得令人望而却步。与此相反,集装箱技术为迅速重新部署所有服务提供了一种公式。此外,视需求而定,可横向扩大。且保证高可用性,当出现问题时,备份服务可以自动恢复或启用。

      虚拟化技术

      虚拟化技术的目的是将物体从一种形式转换成另一种形式。操作系统中的内存虚拟化是最广泛使用的虚拟化技术。用户在实际操作中使用的内存空间可能大大超过物理机器所需的内存空间。通过利用记忆虚拟化,某些硬盘可以由用户虚拟化为存储器。用户也意识到这一点。又如,虚拟私人网络技术可用于在公共网络中将安全可靠的隧道虚拟化。用户的印象是他们正在利用私人网络。

      一种虚拟技术是虚拟机器技术。IBM在1960年代和1970年代开创了虚拟机器技术。软件模拟被归类为硬件。最常见的作业方式是随着时间推移共享昂贵的大型设备。高端监视器是一个软件层,在基本物理服务器和操作系统之间运行。它使许多操作系统和应用程序能够分享硬件。VMM(虚拟机器监测器)是它的另一个名称。虚拟机监视器)。VMM对虚拟技术很重要。用于将物理平台分成许多虚拟机器。VMM公司以特权模式运作。首要的责任是孤立和管理一些从上而下运行的虚拟机器。他们想弄清楚 他们对硬件底部做了什么为每个客户操作系统提供一个独立于实际硬件(包括CPU、内存和I/O设备)的虚拟硬件环境。为了通过虚拟机器共享CPU, VMM 使用某种形式的发送机制。例如,采用了时间档轮用方法。

      容器和虚拟机

      虚拟化改变了当前计算方式。它提高了使用系统资源的效率。为了打破程序与低级硬件之间的联系它还提高了载荷可携带性和安全性。然而,虚拟机器和超视仪只是部署虚拟载荷的一种方法。作为典型虚拟化方法的替代办法,由于其效率和可靠性,集装箱虚拟化有了显著增长。它可以给你一个新的身份。协助数据中心专家应对新出现的挑战。

      具有轻量级特性的包装,所需的内存空间较少。它的启动时间很快。另一方面,虚拟机器为专门操作系统提供安全和更坚实的逻辑边界。如果是虚拟机,虚拟机管理软件和硬件通信操作系统和应用,如虚拟计算机,由单独的物理机器组成。虚拟机器的操作系统 可能与主机的操作系统完全不同

      集装箱更加隔离。主机操作系统运行若干程序。一些操作系统图书馆和操作系统的内核由所有方案共享。经证实的屏障可以防止集装箱在操作过程中相互破裂。然而,这种分离存在某些安全关切。我们稍后会探讨。

      集装箱和虚拟机器都非常便携,但方式不同。 比如,虚拟机器可以移植到使用同一个虚拟机器经理(通常是VMware的ESX,微软的Hyper-V,或者Open Source的Zen,KVM)的众多系统中。

      由于集装箱系在操作系统的一种版本上,因此不需要虚拟机器经理,然而,只要有操作系统的副本,集装箱中的应用程序可以移到任何地方。

      容器的一个重大优点是,在将各种应用放入容器之前,其结构一致。开发商可使用同样的工具和程序。不论目标操作系统如何。一旦在容器中,每个程序都以同样的方式使用网络。这样一来,容器酷似虚拟机,他们又在包装文书工作了信息可通过互联网或内部网络发送。

      Linux、Solaris和FreeBSD的集装箱可供使用。微软正与多克合作视窗集装箱开发Docker 容器的应用程序无法移动到另一个操作系统 。确切地说,可通过常规方式将其传送到互联网上。这便利了软件在数据中心内部和之间流动。在操作系统的单一版本中,一个集装箱总是与核连接。

      一. 债务比较

      虚拟机器是一种高度发达和成熟的技术,其最基本的操作负荷已经证明可以运行,虚拟软件供应商已经建立了管理系统,能够处理数百台适应公司数据中心现有运行的虚拟机器。

      集装箱意味着一种新的未来技术。这种令人兴奋的新技术不一定能解决所有问题。开发者正在研究相应的管理系统。开始把地产分送到一套容器里相反,我们可以对可比容器进行分组。建立网络或改善安全然而,这些系统仍在运行中。

      Docker的基本格式化引擎正在演变成一个平台。有若干工具和工作流程相关联。另一方面,一些大型技术生产商则赞成包装。Google的Kubernetes项目已加入IBM、Red Hat、微软和Docker。这一自由开放源码集装箱装卸系统可以将若干Linux集装箱作为单一系统加以管理。

      2启动速度的比较

      该集装箱的建造比虚拟机器快得多,因为虚拟机器必须从存储系统向操作系统取回10-20GB的空间,而当集装箱的负荷被嵌入主机服务器的操作系统时,这一步骤就被取消了。

      以这种速度,发展小组可以迅速启动项目代码,以各种方式测试,并在其网站上增加额外的电子商务能力。

      3.安全方面的比较

      就目前来说,集装箱比虚拟计算机更不安全。包装技术不像看起来那么可靠例如,利用像Docker这样的图书馆管理员提供技术援助一直是一个重要的知识来源。In Linux的操作模式程序、网络、安装、主机名和共享记忆是解放者可以进入的五个命名空间。它很好,它很强大,它很强大,它很强大,它很好,它很好,它很好,它很好,它很好,它很好,它很好,它很好,它很好,它很好,它很好,它很好,它很好,它很好,它很好,它很好,它很好,它很好,它很好,它很好,它很好,它很好,它很好,它很好不幸的是,一些关键的Linux核心子系统仍然与集装箱不兼容。所有装置,Selinux、集体和文件系统,都包含在Issys之下。这意味着,如果用户或程序在集装箱内获得超级用户访问权限,基本操作系统有可能断裂。这是一个可怕的事情。

      为保障Docker和其他集装箱技术,已制定了各种保障措施。举例来说,一个Isys 文件系统可以只读化 。相反, 指示容器程序对指定的文件系统进行“ 仅写字” 操作 。替换为创建网络命名空间 。限制信息流向不同的公司内联网。但是,这些补救办法并不涉及问题的根本原因。这种集装箱安全维护需要大量的时间和工作。

      另一个关切是,许多个人正在发布集装箱程序,如果不在网络上检测到,这些程序很可能被下载到木马应用程序中,对我们的服务器构成重大的安全关切。

      4.性能方面的比较

      在2014年,虚拟机器和Linux集装箱系统通用性能比较是IBM研究小组发布的一份比较包装和虚拟环境性能的文件。在这项工作中,Docker和KVM被用作研究科目。是关于杜克使用NAT或AUFS的费用使用虚拟计算机操作集装箱的做法也受到质疑。

      在原始环境、集装箱环境和虚拟环境中,提交人经营CPU、记忆、网络和IO基准。其中,KVM和Docker分别被用作虚拟化和集装箱技术倡导者。基准还包括各种配置中Redis和MySQL载荷的例子。将微小的数据集和多用户的比较表明,该国人口相当多,人口也非常多。Redis公司关注网上商店的表现。MySQL关注记忆、网络和文件系统性能。

      调查结果显示,在每次测试中,Docker的性能与KVM相同或更好,就CPU和内存性能而言,KVM和Docker都提出了明显但微不足道的费用。

      为了减轻支出的影响,必须作出调整。

      在与AUFS存储文件时,杜克的表现会因此受损而相比之下,卷量为改进业绩提供了条件。这本书是一个有独特设计的目录。至少有一个集装箱。您可以使用此目录绕过联合文件系统 。因此,取消了后端储存费用。默认的 AUFS 后端将产生高IMO 成本 。特别是当大量目录深度水平被整合时。

      Docker 默认网络选项是 -- net=bridge 。自从NAT重写数据包后也引入了性能开销。当数据集的分布率增加时,需要更多关于软件包内容的信息。这类支出将公布于众。使用 -- net=host, 您可以提高网络性能 。如果选择了此选项, Docker 将不会为容器建造单独的网络存储器 。使集装箱能够完全进入主机网络接口

      然而,应谨慎使用这一选项,因为它允许集装箱中的程序像其他根程序一样使用较小的港口,并使用D-bus等本地网络服务。 这使得集装箱中的程序能够做一些出乎意料的事情,例如重新启动主机。

      尽管自诞生以来,科索沃核查团的业绩显著改善。但是,它并不适用于对延迟或高IO进入率敏感的任务负荷。因为每次IO操作,都得花很多钱对于耗时较少的内审办活动,这种处罚很重。另一方面,可以忽略较长的I/O作业。

      尽管在虚拟环境中使用集装箱的做法很普遍,然而,它被告知,它们直接运行在真正的Linux服务器上。否则,与直接操作非虚拟Linux的战略不同由于虚拟机器的性能开支,这种实践方法不会带来进一步的好处。

      基于集装箱的连续连续部署技术

      随着像Docker这样的集装箱技术的推广和自由来源的释放,解决这个问题是可行的。在软件开发行业,现有程序的包装和分发方式发生了重大变化。考虑在集装箱等虚拟化技术存在之前的一段时间。程序经常需要人工部署和测试。这种劳动非常耗时,容易出错。特别是当服务器数量巨大时一再开展的工作变得一成不变。由于环境的发展、测试以及最终生产环境的变化,同样的程序,在不同情况下出现各种问题是可行的。

      结果,往往是开发者和测试者把垃圾扯出来。 开发者没有遇到任何困难,但在被推到测试服务器时遇到了问题。

      现在让我们解决就如何完成长期集装箱部署提出的关切。

      1. 连续部署流的建造

      持续部署当前线路(持续开发管道)是指在收到每份代码文件时将采取的一系列行动。

      本行的目标是通过向生产环境部署经过充分测试的工作服务或应用程序,完成各种任务。

      唯一的手工操作是代号仓库嵌入操作。其余阶段自动处理。在某种程度上,这一程序可以消除人为错误部分。从而增加可靠性。它还使机器能够尽其所能:重复。而不是创新性思考,因此,系统化的输送量有所增加。每笔捐款都必须通过目前的水线,因为不会通过水线。其解释是“持续”一词。如果决定推迟执行这一进程,例如,我们在斯普林特关门前再跑一趟因此,整个测试和部署进程已经停止。

      2.测试

      随着集装箱技术的出现,现在可以简单地应对一系列广泛的测试挑战。因此,用于测试和最终部署到生产环境的容器将是一样的。该系统各组成部分与依赖性同时发挥作用。因此,开发者选择测试过程中将使用的组件。利用整个团队的连续部署技术创建和操作集装箱。允许容器进行必要的测试。

      当密码通过所有测试时之后,我们可能开始下一步的项目。测试包必须在登记中心(可以是私营或公营)登记。以便之后重用。除了上述优势外,试验完成后就可以销毁该容器,返回服务器初始状态 。如此一来,同一服务器(或服务组)可用于测试所有服务。

      3.构建

      一旦所有测试完成,包件可能准备完毕并随后送到生产环境。 由于我们有可能将包件发送到一个服务器上,从用来创建的服务器上,它也应该在注册中心注册。

      在测试完成和新释放量建立之后,它们可以被准备安装到生产服务器上。我们需要做的就是拿回镜子,执行容器。

      4.部署

      通过将容器上载到登记中心,我们的微服务可在每次登录后部署,新的功能可以以前所未有的速度提供给用户。

      5.蓝-绿部署

      整个过程中最危险的阶段可能是部署。一旦我们收到新的出版物 并开始运行,该集装箱将用一个新的集装箱取代先前的释放。也就是说,在整个程序中,将有一些停工时间。集装箱必须暂停先前的出版并开始新的出版。同时,我们必须启动我们的服务。虽然这一程序可能需要几分钟、几秒甚至几微秒,但情况并非总是如此。然而,这也是断电的原因。如果采用微观服务和连续部署程序,特派团将能够解决问题。此后,释放数量将超过以往。最终,一天之内我们可能有几次部署我不管它有多频繁发生我们应该避免的只是干扰用户。

      应利用蓝绿色部署来解决这一问题。简单地说,这一程序将导致部署新的释放人员。让它与最后一期出版同时运行。一个版本可以称为“蓝色”,一个版本也可以称为“蓝色”。另一种叫"绿色"在新版本分发后进行检查并非难事。再完全撤掉旧版本,而在这之前,上一个版本将继续运作。

      第六,做入门前和入门后测试。

      虽然测试的操作至关重要,但无法保证在生产环境中部署的服务将按计划进行。

      服务未能在生产环境中有效运作有几个原因。一些连接有可能导致错误。获得服务的机会可能受到错误的数据库或防火墙安装的限制。即使代码按计划运作它也没有表明已部署的服务配置正确。尽管已经建立了一个分发前服务器,但它无法部署我们的服务。当时又进行了一系列测试。也不保证生产环境总是取得同样的结果。为了区分不同种类的测试,Viktor Farcic

      在建立和部署服务之前进行部署前测试。

      7.回滚与清理

      当过程的任何阶段发生错误时,环境应恢复到启动过程之前的状态,即 " 倒车 " 。

      即使一切如预期,仍有一些清理工作有待完成,我们需要终止先前的出版并销毁其登记资料。

      第八,决定执行每一步骤的环境。

      确定每个阶段的执行环境至关重要,一般而言,尽可能避免在生产服务器上执行。

      这意味着,除了部署相关任务外,还应在单独一组专用于持续部署的任务中执行。

      例如,如果Docker Swarm被用来部署集装箱,就不需要直接接触主节点的服务。

      相反, DOCKER_HOST 变量被设定为将最终目的地地址通知本地的 Dockker 客户端 。

      9. 完成目前的整个部署流

      我们现在可以满怀信心地在生产环境中签字。然而,我们只完成了一半的任务。另一部分是部署监测。这项工作利用实时和历史数据进行。因为我们的最终目的是在签署《守则》之后实现所有活动的自动化,因此,人造相互作用将减少。发展自应系统是一个重大问题。这需要我们不断作出改变。我们希望该系统不仅能够从失败中恢复(反应性恢复),而且能够从失败中恢复。还打算尽快避免这些失败(预防性追回)。

      如果服务进程因任何理由停止,应重新启用该系统。如果失败是由不可靠的节点造成的,因此,启动程序应在另一个健康服务器上进行。应急恢复工作的基本组成部分是通过工具收集数据和持续服务监测。万一出事就采取行动预防性恢复要复杂得多,需要在数据库中记录过去的数据。(a) 比较各种模型;预测未来是否会出现具体的异常情况。

      预防性恢复可能暴露出访问次数正在增加,系统必须在几个小时内扩大,也可能是每周一上午访问次数最多的一次,在此期间,系统必须扩大,然后在访问次数恢复正常时,将其减少到以前的规模。

      对基于集装箱的部署过程有了粗略的了解,对基于集装箱的部署的更多研究将在下几节继续进行。

      本篇文章内容给大家讲解的是安装和通过包装解散的微观服务

      下一篇文章将浏览Docker是如何用来创建、执行和出版微服务。

      相信这篇文章很好的朋友 可以把它交给主编

      感谢大家的支持!

      如果你想学习更多,你可能会发现我在混乱中 我会等你的

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/25195.html

          热门文章

          文章分类