微服务为此,微服务,但向一个简单的人解释什么是微服务?我是一个简单的程序员,几乎没有理论背景。但我不需要一个术语微服务来做我做的事情。有人可以用简单的话来解释我微服务是什么吗?亚马逊AWS =微服务?
我读到这个:https://en.wikipedia.org/wiki/Microservices但显然我太愚蠢了解这是什么。
答案 0 :(得分:37)
传统的Web应用程序很大。您编写一个在服务器上运行的软件,并以HTML,XML或JSON的形式回复请求。如果您希望Web应用程序执行新操作,请将该功能添加到现有应用程序中。这样的大型系统被称为“整体式”系统。 (巨石是一块非常大的岩石)。
Monoliths存在问题,因为它们通常会随着时间的推移而变大。在团队中开发某些东西时,这是一个问题。开发人员正在向系统添加新代码,并且无法更改或重用现有代码,因为代码片段之间存在许多依赖关系。他们也害怕删除旧代码,因为它可能会在某处使用。
向客户提供此类代码时,例如通过把它放在互联网上,我们称之为"部署"。部署和部署后的常规测试很困难,因为在一个大系统中,有很多东西可能会破坏。找出问题的原因以及应该解决的问题非常困难,需要人们了解整个问题。
另一个缺点是可扩展性。我们的意思是"我们如何同时为更多用户服务?"单个Web服务器计算机只能处理并行访问它的一定数量的用户。将该计算机升级到更好的硬件使其能够为更多用户提供服务,但您很快就会达到硬件可能性的范围。此升级称为垂直缩放。我们还可以将我们的Web应用程序放在两个或更多服务器上,以便我们可以处理更多用户。这称为水平缩放。单片应用程序传统上只考虑垂直缩放。
为了简化大型应用程序的工作流程,我们可以将其拆分为更小的部分。每个部分都有一个特定的用途。我们称之为"(网络)服务"。这些Web服务使用起来非常灵活。您可以在现有的单片应用程序中使用它们,无论是在服务器部分还是在客户端部分中。您还可以使用其他Web服务的Web服务。
拆分为单个Web服务允许您松散地耦合您的应用程序。这意味着作为服务的用户,您只依赖于正在运行,可用和正常运行的服务。您不再需要处理它的依赖关系,编译,部署或测试。
您可以将此责任交给其他开发人员或团队。您不能破坏其Web服务,因为您不通过源代码访问它。他们甚至可以使用不同的编程语言,你仍然可以使用他们的服务。
通过决定使用通用格式和通用protocols(协议是一种通信方式),可以实现这种独立性。对于网络服务,最常用的格式是JSON和XML。最常用的协议是HTTP,因为它很简单,所有现有软件都很好地支持,而且您的浏览器也在使用它。
" micro"在"微服务"只是强调使这些Web服务尽可能小的想法。如果您需要更复杂的服务,通常最好创建一个取决于一个或多个其他服务的新服务。
在以下情况下使用微服务:
单片应用程序不是老派或过时的!在某些情况下,它们比微服务具有很多优势。在以下情况下使用它们:
假设您有一个用户可以创建虚拟明信片的应用程序。
这是一个图表,显示了以单片风格构建的这种应用程序的基本组件: (用户界面组件正在越过系统的边界,因为在大多数情况下,我们使用浏览器来呈现应用程序中生成的HTML。)
这就是使用微服务架构实现这样的应用程序的方法: 请注意每个组件如何独立存在,并且仅通过UI进行寻址。
详细说明:
他们如何接线:
通过这种方法,您最终得到了三个微服务和一个共享的Web GUI。您可以将每个服务提供给自己的开发人员或团队,独立测试,随时部署,甚至可以交换全新的内容,而无需接触其他服务。同时,您必须确保服务彼此兼容,这可能需要API版本控制,动态服务发现(例如,将您连接到所有其他服务的其他高可用性服务)和其他更高级的技术。
答案 1 :(得分:-2)
微服务的正确用语是正确的服务。范围和大小微服务应基于以下
答案 2 :(得分:-3)
微服务小型自治服务,它们一起工作,称为微服务。
微服务架构风格是一种将单个应用程序开发为适合小型服务的方法,每个小服务都运行自己的流程并以轻量级的机制进行通信。这些服务建立了广泛的业务能力并可以独立部署
功能
1)配置管理
2)动态可扩展
3)可见性
4)卡包
5)有界上下文