简单介绍微服务和容器概念
在本文中,我以一种简单的方式解释了什么是微服务和容器及其业务收益。
假设我们要启动一个烹饪应用程序。 在该应用程序上,人们可以查找带有或不带有视频的不同食谱。 他们可以发表评论并对菜谱进行评分。 一个团队负责编写新食谱,第二个团队负责评论和评分,第三个团队负责时事通讯。 所有这些一起运行的服务就是我们所说的整体架构。
麻烦的问题
您的应用程序取得了巨大成功,您开始思考改善它的新方法。 那是问题开始的时候。 您需要更频繁的发布。 对于每个团队,所有团队都需要共同努力,因此他们都编写了所需的更改,并确保所有内容都适合。 现在更改应用程序是有风险的。 您不想提供已损坏的新版本。
如果代码中有错误,则整个应用程序都会受到影响。 您需要回滚,调试,更正和重新部署应用程序。 应用程序越大,则消耗的时间越多。 同时,您的客户仍在等待。
您决定将机器学习添加到您的应用中,以更好地了解客户的行为和需求,以便为他们提供他们想要的新食谱。 但是,您的应用不是用Python编写的,而机器学习通常是使用Python实现的。
您开始感到头疼,因为您意识到流量很大并且应用程序不断崩溃。 不幸的是,您无法在需要时按比例放大和缩小,因此决定将其放在更大的虚拟机上。 这样会导致在高峰时段使用CPU等资源,而在其余时间浪费资源。
面对上述问题,我们的第一反应应该是将我们的应用拆成几个部分,各自完成自己的使命,那微服务就是我们的解决方案。
微服务解决方案
您的烹饪应用程序可以看作是一组不同的服务。 您有许多不同的服务来显示网站,机器学习,评论,评级以及发送新闻通讯等。
这些服务中的每一个都有其自己的流程,并且可以独立运行而不影响其余部分。 这就是我们所说的微服务。 微服务具有特定的功能/角色,并且与其他服务/角色无关,并且其故障不会影响其他服务。
这样可以解决之前遇到的4个问题:
通过将您的应用划分为服务,每个团队将负责各自的服务。 他们将可以在需要时进行更改,以使客户满意。
由于每个服务都是独立的,因此更改对应用程序的影响很小。 如果新版本中的评分服务出现错误,则用户将无法对配方进行评分,但是该应用的其余部分仍然可以使用。您可以回滚该特定服务,而不是回滚整个应用,因为后者速度更快。
独立的服务方式,您可以使用所需的语言。 现在,您可以轻松地在Python中实现机器学习功能。
独每个服务都与数据库分离,因此它们是无状态的。 数据不是存储在微服务上,而是存储在其他地方。 因此,您可以根据每项服务收到的流量扩大或缩小副本的数量。
那么容纳这些细小的服务的装置是什么?是的,就是容器。
容器
容器是OS级虚拟化。
容器仅具有所需的二进制文件和库,并且与其他容器共享操作系统。 由于容器没有打包的操作系统,因此非常简单,轻巧且可移植。 非常适合微服务,当微服务规模缩小时需要快速启动。
由于它可以快速启动,因此还可以减少停机时间。 通过共享来宾OS,容器可以在具有容器运行时的任何基础结构上运行,该运行时是执行和管理容器的软件。 就像您需要管理程序来运行虚拟机一样。 Docker是著名的容器运行时。
通过将您的应用程序划分为多个微服务,企业可以提高敏捷性,速度并能够更快地满足客户的需求,这对企业有利。 容器使您能够在您的环境中运行这些微服务,并为您提供快速交付,减少的停机时间和向其他平台的可移植性,以及为什么不能使用公共云。
别忘了在管理容器方面存在挑战。 您如何管理大量容器? 您如何管理安全性和网络? 您如何保持可见性? 您如何实现自我修复? 有很多协调解决方案可以解决这些挑战。