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