2017-10-04 102 views
-2

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

我看过这个:https://en.wikipedia.org/wiki/Microservices但显然我太愚蠢了解这是什么。

+2

[微服务](https://martinfowler.com/articles/microservices.html)阅读本文 – RSon1234

+0

@ RSon1234好的,我放弃了编程。 – lll

+0

好的,稍后再见 – RSon1234

回答

7

微服务于我自己,希望简单来说

巨石

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

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

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

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

微服务

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

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

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

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

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

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

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

他们是如何有线:

  1. 网页有网址到卡库和渲染。用户的浏览器正在调用JavaScript代码发出的这些服务。
  2. 库正在使用缩略图来返回包含缩略图的卡片列表
  3. 当用户选择了一个时,浏览器将该模板与用户输入的内容一起发送到呈现器,浏览器显示返回的图像。
+0

Hubert,不错的努力。关于接线,您可能想要添加的端点服务可能会更粗糙,并实际上是协调基础微服务的接口。当需要保持一定程度的状态或一致性时(这并不总是可以在微服务中保持事务边界),这是有效的。 –

0

微服务的正确词语是正确的大小服务。范围和大小微服务应该基于以下内容

  1. SRP - 微服务应该有一个单一的变化原因。它应该做一件事,并做好。
  2. 业务能力 - 它应该代表一种业务能力,应该是相对自治的业务能力,并且可以由与其他能力交互最少的团队执行
  3. BC/UL它应该基于BC and UL。这些是DDD的概念。详情请参阅链接。