导航菜单
首页 » 无极荣耀 » 正文

里美尤利娅-四种正确的微服务布置方法

本文将介绍四种受欢迎的微服务布置战略,以协助企业取得更高的敏捷性、灵敏性、以及可扩展性。

作者:陈峻编译来历:51CTO

在曩昔的几年中,因为微服务架构(Microservices architecture)可以供给高档其他软件可扩展性,因而十分盛行。虽然大多数安排都可以承受这种架构方法,可是他们也或多或少地遇到了,比如怎么将运用程序分化成为依据微服务的方法等多方面的应战。

曩昔,咱们从前协助美国最大的电信公司等客户,成功地完结了依据REST的微服务运用布置。咱们在下降运营本钱的一起,提高了全体服务的可用性。下面,咱们将同享四种受欢迎的微服务布置战略,并在此根底上和您评论:企业应该怎么运用微服务来取得更高的敏捷性、灵敏性、以及可扩展性。

微服务布置的应战里美尤利娅-四种正确的微服务布置方法

一般,布置单体(monolithic)运用意味着您需求装备多台物理服务器或虚拟机,并在每台服务器上运转某个大型运用程序的多个实例。这样的布置办法虽然简略直接,可是关于微服务运用却并不必定合适。

首要,在布置微服务运用之前,您有必要了解编写此类服务所涉及到的各种结构和言语。因为每一项服务都或许涉及到其特定的布置,不同的资源要求,以及扩展和监控方面的需求,因而这往往是最大的应战之一。其次,就企业的视点而言,他们期望布置服务的进程尽量完结快速、牢靠、且具有必定的本钱效益。可见,咱们需求经过灵敏、可扩展的多种微服务布置方法,来应对广泛的组件集成恳求。

微服务的布置战略

1.依据主机(物理机或虚机)的多服务实例

“依据主机的多服务实例”方法是最为传统的运用程序布置办法。在该方法下,软件开发人员可以供给单个或多个物理机或虚机,一起在每个主机上运转多个服务实例。此方法有几种不同的完结方法,其间包括:将每一个服务实例都作为一个独自的进程,或是在同一进程中运转多个服务实例。



长处

因为多个服务实例运用的是同一服务器、及其操作体系,因而它们的资源运用功率相对较高。

因为您只需求将服务仿制到主机上,即可运转之,因而服务实例的布置也相对较快。例如:假如某个服务是由Java编写的,那么您只需求仿制JAR或WAR文件;而假如它是用Node.js或Ruby编写的,则仿制源代码便可。

假如某个服务自身带有进程,您可以直接发动之;当然也可以将其动态地布置到某个容器中。而假如该服务归于某个容器进程(或进程组),而且正运转在多个实例里,那么您可以直接对它进行重启。

应战

除非每个实例都是一个独自的进程,不然您对服务实例的实践控制权并不大。而且,您无法约束每个实例可以运用到的资源份额。这将带来主机内存被很多耗费的风险。

假如多个服务实例在同一进程中运转,它们之间会缺少阻隔联系。这一般会导致在相同进程中,某个行为反常的服务可以直接影响、甚至中止其他的服务。

因为运营团队需求了解服务的详细信息,因而在布置期间,他们或许发生人为过错的风险较高。明显,开发和运营团队之间需求经过必要的信息交流,来尽或许地消除复杂性。

2.依据主机(物理机或虚机)的服务实例

此类微服务的布置办法可以让您在对应的主机上独自地运转每一个实例。此处的实例包括:依据单个虚拟机的服务实例,和依据单个容器的服务实例。

依据单个虚拟机的服务实例方法,可以让您将每个服务打包成为比如Amazon EC2 AMI的虚拟机(VM)镜像。此处的实例就是指那些经过既有镜像运转起来的VM。现在,运用该方法的一个典型运用就是Netflix的视频流服务。为了构建自己的VM,您可以装备比如Jenkins之类的接连集成服务器,当然也可以直接运用packer.io。



长处

依据虚拟机的服务实例有着一项明显的长处:因为是独立运转,它的内存运用数量是受限的,而且无法从其他服务中盗取额定的资源。

您可以运用比如AWS之类老练的云根底架构,来完结负载平衡和主动扩展。

因为一旦服务被打包成为了VM,那么在某种程度上说,该服务就会变成黑匣子,也就是完结了关于服务的封装,因而布置的整个进程会变得愈加简略和牢靠。

应战

因为在典型的公共IaaS中,VM的巨细一般是固定的,因而用户运用起来并不太便利。而跟着资源运用率的低下,布置的本钱则会反而升高。究竟IasessionaS供给商收取VM费用时,是不会顾及VM的真实运用率的。

因为VM镜像的巨细各不相同,它们在创建和实例化的速度上会有所差异,因而这或许会直接导致新版本布置进程的缓慢。不过,用户一般可以经过运用轻量级的VM,来战胜此类缺点。

在办理上,依据单个虚拟机的服务实例方法,往往需求运营团队经过运用东西来构建和办理虚拟机,以节约运维的时刻。当然,您也可以经过运用比如Box fuse之类里美尤利娅-四种正确的微服务布置方法的解决方案。

3.依据容器的服务实例

众所周知,常见的容器技能包括:Docker和Solaris Zones。在这种布置方法下,每个服务实例都运转在其各自的容器中,因而也被称为操里美尤利娅-四种正确的微服务布置方法作体系级其他虚拟化机制。

为了运用该方法,您需求将服务打包成为一个文件体系类型的镜像(一般被称为容器镜像),其间包括履行该服务所需的运用程序、及其库文件。在完结打包之后,您需求发动一到多个容器,并在物理机或虚拟机上运转它们。为了办理多个容器,许多开发人员都会挑选运用比如Kubernetes或Marathon之类的集群办理器。



长处

相似前面依据虚拟机的服务实例方法,该方法也可以独立运作。您可以盯梢每个容器当时运用到的资源数量。不过与前者比较,该方法的最大优势在于容器往往是轻量级的,而且其构建的速度十分快。此外,因为不涉及到任何操作体系的发动机制,因而容器的发动也十分敏捷。

应战

虽然此类根底架构日趋老练,可是依据容器的服务实例依然落后于虚拟机架构。而且因为它们同享主机操作体系的内核,因而在安全性上也不及虚拟机。

相同与虚拟机所面对的应战相同,您需求花时刻从事较为深重的容器镜像办理工作。也就是说,假如没有运用比如Amazon EC2 Container Service(ECS)之类的保管容器解决方案的话,您有必要手动办理容器,甚至虚拟机的根底架构。

此外,因为大多数针对容器的布置都是遵从依据虚拟机的定价方法,这就会导致用户有必要添加额定的布置本钱,以及进行超量的虚拟机装备里美尤利娅-四种正确的微服务布置方法,然后应对突发的负载顶峰。

4.无服务器布置

作为微服务布置的第四种战略,无服务器布置技能可以支撑Java、Node.js和Python服务。AWS Lambda是全球开发人员运用最多的无服务技能。在该布置方法下,您需求将服务打包成为一个ZIP文件,然后将其上传到Lambda函数(即一种无状况服务)中。

一起,您需求供给各种元数据,这里美尤利娅-四种正确的微服务布置方法些元数据带有在处理恳求时所调用到的不同函数称号。Lambda函数需求主动运转足够多的微服务实例,以处理不同的恳求。而作为用户,您只需依据所花费的时刻、以及耗费的内存,为每个恳求付出费用便可。



长处

因为您只需依据服务器的工作量付费,因而无服务器布置的最大优势就是价格。

因为可以从虚拟机、容器等IT架构方面解放出来,因而您可以有更多时刻去专心于运用程序的开发。

应战

无服务器布置的最大应战是:它不能被用于那些长时间运转的服务中。一切恳求都有必要在300秒内完结。

因为Lambda函数或许会为每个恳求运转不同的实例,因而您的服务也有必要是无状况的。

您的服务有必要运用其支撑的言语进行编写,而且有必要可以快速发动,不然将会面对超时或被停止的风险。

总结

众所周知,假如没有正确的战略,微服务运用的布置或许会步履维艰。而在挑选合适本企业的布置战略之前,咱们需求全面考虑当时服务是由何种言语编写而成,其对应的结构,相应的布置、扩展与办理要求等方面。鉴于上述四种微服务布置办法,咱们常用到的是经过渠道即服务(Platform as a Service)的办法,将原有的单体运用程序迁移到无服务器的架构之中。

原文标题:Right Strategies for Microservices Deployment,作者:Rahul Singh

二维码