什么是微服务?

为此微服务,微服务,但向一个简单的人解释什么是微服务? 我是一个简单的程序员,几乎没有任何理论背景。 但我不需要术语微服务来做我所做的事情。 有人能用简单的农民的话来解释我的微服务是什么吗? 亚马逊AWS = microservice?

我读过这个:https://en.wikipedia.org/wiki/Microservices,但显然我太愚蠢,不明白这是什么。


微服务在我自己,希望简单的条款

石柱

传统的Web应用程序很大。 您编写一个运行在服务器上的软件,并以HTML,XML或JSON的形式回答请求。 如果你想让你的web应用程序做一些新的事情,你可以将这个功能添加到现有的应用程序中。 这样的大系统被称为“单片”(一块巨石是一块非常大的岩石)。

巨石有问题,因为它们随着时间的推移通常会随着尺寸和复杂性而增长。 在团队中开发某些东西时,这是个问题。 开发人员将新代码添加到系统中,并且无法更改或重新使用现有代码,因为代码段之间存在很多依赖关系。 他们也害怕删除旧代码,因为它可能被用在某个地方。

当向客户提供这样的代码时,例如通过将其放置在互联网上,我们称之为“部署”。 在部署后进行部署和通常的测试很困难,因为在一个大系统中有很多事情可能会破坏。 找出发生了什么问题以及谁应该修复它是非常困难的,并且需要人们知道整个事情。

另一个缺点是可扩展性。 我们的意思是“我们怎样才能同时为更多的用户提供服务?” 一台Web服务器计算机只能处理一定数量的用户并行访问它。 将该计算机升级为更好的硬件可以为更多用户提供服务,但您很快就会遇到硬件可能出现的问题。 这种升级称为垂直缩放。 我们也可以将我们的Web应用程序放在两个或更多的服务器上,以便我们可以处理更多的用户。 这称为水平缩放。 传统上,单片应用只考虑垂直缩放。

微服务

为了简化大应用程序的工作流程,我们可以将它分成更小的部分。 每个部分都有一个特定的用途。 我们称之为“(网络)服务”。 这些Web服务使用起来非常灵活。 您可以在现有的整体应用程序中使用它们,无论是在服务器部分还是在客户端部分。 您也可以使用其他Web服务的Web服务。

拆分为单个Web服务允许您松散地耦合您的应用程序。 这意味着作为服务的用户,您只能依赖服务的启动,可用和工作。 您不再需要照顾其依赖项,编译,部署或测试。

您可以将责任交给不同的开发人员或团队。 您不能通过源代码访问它,因此无法打破他们的Web服务。 他们甚至可以使用不同的编程语言,你仍然可以使用他们的服务。

这种独立性是通过决定使用通用格式和通用协议(协议是一种通信方式)而实现的。 对于Web服务,最流行的格式是JSON和XML。 最常用的协议是HTTP,因为它很简单,所有现有软件都支持并且您的浏览器也在使用它。

“微服务”中的“微”一词强调了让这些Web服务尽可能小的想法。 如果您需要更复杂的服务,通常最好创建一个依赖于一个或多个其他服务的新服务。

假设您有一个应用程序,用户可以在其中创建虚拟明信片。 这是如何使用微服务体系结构实现这样的应用程序。

  • 一个只包含HTML,CSS和JavaScript的精简静态网页
  • 提供卡片模板列表的微型服务“卡片库”,包括其尺寸和意图。
  • 微型服务“缩略图”,给定一个卡片模板名称,为您提供卡片的小预览。
  • 一个微服务“渲染器”,需要一个模板和文本来填充。然后呈现一张卡片图像并返回该图像。
  • 他们如何连线:

  • 网页包含卡片库和渲染器的URL。 用户的浏览器正在调用JavaScript代码发出的这些服务。
  • 该库正在使用缩略图来返回卡片列表,包括其缩略图
  • 当用户选择一个时,浏览器将该模板与用户输入一起发送到渲染器,浏览器显示返回的图像。

  • 微服务的合适词是合适的大小服务。 范围和大小微服务应基于以下内容

  • SRP - 微服务应该有一个单一的变化原因。 它应该做一件事,并做好。
  • 业务能力 - 它应该代表一种业务能力,它本质上应该是相对自治的,并且可以由与其他能力交互最少的团队来执行
  • BC / UL它应该基于BC和UL。 这些是DDD的概念。 详情请参阅链接。
  • 链接地址: http://www.djcxy.com/p/34089.html

    上一篇: What the hell is microservice?

    下一篇: Microservice vs SOA differs