网站cms分站系统,手游app平台排行榜,保利拍卖公司网站,营销技巧第三季微服务部署挑战
单体应用程序的部署意味着您运行单个#xff08;通常是大型应用程序#xff09;的多个相同副本。这主要是通过配置 N 个服务器#xff08;无论是物理服务器还是虚拟服务器#xff09;并在每台服务器上运行应用程序的 M 个实例来完成。虽然这看起来非常简单…微服务部署挑战
单体应用程序的部署意味着您运行单个通常是大型应用程序的多个相同副本。这主要是通过配置 N 个服务器无论是物理服务器还是虚拟服务器并在每台服务器上运行应用程序的 M 个实例来完成。虽然这看起来非常简单但通常情况并非如此。然而它比部署微服务应用程序要容易得多。
如果您计划部署微服务应用程序那么您必须熟悉这些服务所使用的各种框架和语言。这也是最大的挑战之一因为每一项服务都有其特定的部署、资源要求、扩展和监控要求。除此之外部署服务必须快速、可靠且经济高效
好消息是可以轻松扩展多种微服务部署模式以处理来自各种集成组件的大量请求。阅读此博客了解哪一个最适合您的组织并进行部署\
微服务部署策略
1. 每台主机多个服务实例物理或虚拟机
也许部署应用程序的最传统方法是“每主机多个服务实例”模式。在此模式中软件开发人员配置单个或多个物理或虚拟主机并在每个主机上运行多个服务实例。此模式有几个变体包括将每个服务实例作为一个进程或在同一进程中运行多个服务实例的变体。
好处
由于多个服务实例使用相同的服务器及其操作系统因此资源使用相对高效。
服务实例的部署也相对较快因为您只需将服务复制到主机并运行它。
例如如果服务是用 Java 编写的那么您只需复制 JAR 或 WAR 文件或者复制源代码如果它是用 Node.js 或 Ruby 编写的。
由于没有任何开销因此以这种模式启动服务也很快。如果服务有其进程您可以启动它否则您也可以动态部署到容器中或者如果该服务是在同一容器进程或进程组中运行的许多实例之一则重新启动它。
挑战
除非每个实例都是一个单独的进程否则对服务实例几乎或完全缺乏控制。您无法限制每个实例使用的资源。这会显着消耗主机的内存。如果多个服务实例在同一进程中运行则缺乏隔离性。这通常会导致一项行为不当的服务中断同一进程中的其他服务。部署时出现错误的风险更高因为部署它的运营团队需要了解服务的最微小的细节。因此开发团队和运营人员之间的信息交换是消除所有复杂性的必要条件。
2. 每台主机的服务实例物理或虚拟机
每主机服务实例模式是部署微服务的另一种方法。这允许您在其主机上单独运行每个实例。它有两个专门化每个虚拟机的服务实例和每个容器的服务实例。
每个虚拟机服务实例模式允许您将每个服务打包为虚拟机 (VM) 映像例如 Amazon EC2 AMI。每个实例都是使用该 VM 映像运行的 VM。使用这种模式的流行应用程序之一是 Netflix 的视频流服务。要构建自己的虚拟机您可以配置持续集成服务器例如 Jenkins或使用 packer.io。
好处
使用每个虚拟机一个服务实例模式的最大好处之一是它使用有限的内存并且无法从不同服务中窃取资源因为它是独立运行的。
它允许您利用 AWS 等成熟的云基础设施来利用负载平衡和自动扩展。
它密封了服务的实现技术因为一旦服务被打包为虚拟机它就变成了黑匣子。它使部署变得更加简单和可靠。
挑战
由于典型公共 IaaS 中的虚拟机通常具有固定大小因此它可能没有得到完全利用。资源利用效率较低最终还会导致部署成本较高因为 IaaS 提供商通常对虚拟机收费无论虚拟机是闲置还是繁忙。最新版本的部署通常很慢。这是因为 VM 映像因其大小而创建和实例化速度很慢。这个缺点通常可以通过使用轻量级虚拟机来克服。除非您不使用工具来构建和管理虚拟机否则每个虚拟机一个服务实例模式对于您和您的团队来说通常非常耗时。这通常是一个乏味的过程但好消息是可以通过使用诸如 Box fusion 等各种解决方案来解决该问题。
3. 每个容器的服务实例
在这种模式下每个服务实例都在各自的容器中运行这是操作系统级别的虚拟化机制。Docker 和 Solaris Zones 是一些流行的容器技术。
要使用此模式您需要将服务打包为文件系统映像其中包含执行服务所需的应用程序和库通常称为容器映像。一旦服务被打包为容器镜像您就需要启动一个或多个容器并且可以在物理或虚拟主机上运行多个容器。为了管理多个容器许多开发人员喜欢使用集群管理器例如Kubernetes或 Marathon。
好处
与每个虚拟机的服务实例一样此模式也可以单独工作。它允许您跟踪每个容器正在使用多少资源。相对于虚拟机的最大优势之一是容器是轻量级的并且构建速度非常快。由于没有操作系统启动机制容器可以快速启动。
挑战
尽管基础设施正在迅速成熟但每个容器的服务实例模式仍然落后于虚拟机基础设施并且不如虚拟机安全因为它们共享主机操作系统的内核。
与虚拟机一样您负责管理容器映像的所有繁重工作。如果您没有 Amazon EC2 容器服务 (ECS) 等托管容器解决方案您还必须管理容器基础设施可能还需要管理虚拟机基础设施。
此外由于大多数容器部署在按虚拟机定价的基础设施上因此会导致额外的部署成本和虚拟机的过度配置以满足意外的负载峰值。
4. 无服务器部署
无服务器部署技术是微服务部署的另一种策略它支持 Java、Node.js 和 Python 服务。AWS Lambda 是世界各地开发人员使用的一项流行技术。在此模式中您需要将服务打包为 ZIP 文件并将其上传到 Lambda 函数这是一个无状态服务。