微服务架构正在改变IT行业的面貌。在接下来的几年中,大多数应用程序都将在微服务上运行。服务和产品行业正在为更复杂的应用程序放弃使用单体架构,并且正在缓慢但肯定地向微服务过渡。微服务的优势,如敏捷开发和架构,使企业能够更快地推出新功能,使其成为显而易见的选择。
容器化技术与微服务架构齐头并进。它不仅支持虚拟化,而且在任何操作系统环境下都能完美运行。这两种技术彼此同步工作是很自然的。容器化微服务还有哪些其他可以被企业利用的好处?以下进行一下了解。
运行时选项
传统上,必须在运行完整版操作系统的物理服务器上安装和运行微服务。鉴于当今计算机的巨大处理能力,这种中世纪的努力现在是对宝贵资源的浪费。为了克服资源管理不善,您可以考虑在一台服务器上运行多个微服务。但是,这样做会使服务器成为冲突的温床——例如,库版本冲突和应用程序组件。下一个明显的决定是将单个物理服务器分成多个虚拟服务器,但这个选项也有严重的影响。
运行微服务应用程序的最佳选择是在容器中运行它们。容器通过为您的应用程序封装轻量级运行时环境,提供一致的软件开发环境。最好的部分是,在开发人员桌面上运行的同一个容器将在所有开发阶段(如测试和部署)一直延续到生产。这可以防止任何依赖项或库崩溃。
更好的安全性
由于容器,每个容器化微服务都受益于改进的隔离。微服务在自己的容器中与其他微服务隔离,并且攻击面较低。这确保了一个容器中的安全漏洞不会危及另一个容器的安全性。但是,与容器相比,直接部署在主机操作系统或虚拟机上的微服务安全性较低。
开发者友好度
使用VM会使每个微服务成本高昂,因为每个VM都需要运行自己的操作系统。与虚拟机相反,容器在操作系统级别与另一个容器隔离。单个OS实例可以在其自己的执行环境中支持多个容器。
像这样运行多个容器可以降低开销成本并更好地管理资源。它还允许开发人员处理他们自己的特定任务,而无需涉及整个应用程序的复杂性。应用程序的容器化还使开发人员可以自由地以更适合该特定服务的语言开发每个服务。
更好的隔离
由于容器能够在单个OS实例下处理多个执行环境,因此同一应用程序的多个组件可以在单个VM环境中共存。Linux具有称为控制组的“cgroup”,用于隔离特定的应用程序代码集,确保每个都有一个私有环境。
通过这种级别的隔离,可以将多个微服务放置在单个服务器上。一方面,cgroup功能确保没有服务可以相互干扰,使用容器可以提高效率并提高服务器利用率。
但是,需要确保微服务在冗余配置中运行,以提高弹性。管理容器放置以避免托管也很重要。使用像Kubernetes这样的容器管理平台是指示更好的容器放置以避免冗余的最佳解决方案。
服务发现
任何基于SOA的设计的一个重要组成部分是服务发现。当微服务托管在容器中时,它们的本地化和相互通信变得更加简单。如果您在虚拟机中安装微服务,则每个主机可能具有不同的网络配置。因此,创建支持可信服务发现的网络架构具有挑战性。
容器化微服务工具
多年来,支持微服务和容器的工具已经成熟。现在市场上存在大量用于容器化微服务的工具。然而,两个最流行的工具是Docker和Kubernetes。
- Docker
Docker于2013年发布,是一种开源容器化解决方案。从一开始,企业就开始利用该平台来构建容器化的运行时环境。Docker已被用于创建各种软件解决方案,如云迁移、数字化转型等。Docker的一些好处如下:
使用Docker容器化应用程序消除了运行远程代码的可能性。这些功能内置应用程序安全性,无需软件审核。
可以在任何地方访问Docker容器。用户可以使用智能手机、笔记本电脑、平板电脑或PC访问他们的容器。
Docker的部署基础设施是受版本控制的,这意味着开发团队中的每个人都在同一页面上。
- Kubernetes
Kubernetes是一个容器编排工具,能够分配计算资源、添加/删除容器、管理容器之间的交互、监控容器运行状况等等。这个开源工具在管理称为“集群”的“容器组”时派上用场。Kubernetes的一些好处如下:
- 自动打包您的微服务或容器并分配可用资源。
- 自动配置IP和端口,管理容器的网络流量。
- 具有自动部署新容器以进行自动缩放的功能,前提是整个系统保持稳定。
快速初始化和执行
毫无疑问,虚拟化有其明显的好处,但虚拟机不可避免地是占用4GB或更大大小的资源密集型解决方案。此外,它们需要更长的时间来启动和运行。初始化操作系统所花费的时间可以很容易地以分钟为单位来衡量。
相比之下,容器更小,只有几兆字节的数据,而且——因为它们不需要操作系统来运行——容器的初始化时间可以以毫秒为单位进行测量。容器的快速安装更适合微服务不稳定的工作负载。
结语
使用微服务的主要好处之一是它们可以独立扩展,允许扩展需要更多处理能力或网络带宽以满足需求的特定功能区域,而无需不必要地扩展应用程序中没有看到的其他部分需求增加。
容器是一个隔离的、受资源控制的、可移植的操作环境。在创建基于微服务的应用程序时,企业越来越多地转向容器,Docker已成为行业标准,被大多数软件平台和云供应商所接受。
结合这两种技术产生了容器化微服务,使微服务成为部署大型可扩展应用程序的一种经济高效的方式。