什么是微服务和Web服务的区别?

26

我接近了解到实际差异是在这篇文章中。

但我不理解为什么要选择其中一个,而且微服务是否也可以使用REST API并通过http通信。

我主要不理解什么是微服务以及它是否可以替代Web服务,除了将大型软件应用程序拆分成松耦合模块的目的之外。


2
该服务只是一个没有用户界面的应用程序,托管在服务器上。但是,微服务是一种架构设计,将大型服务拆分为微服务,每个服务可以托管在单独的服务器上。微服务的目的是使应用程序易于维护。 - Fady Saad
7个回答

33

一个微服务是一种软件架构,可以使用Web服务实现。

Web服务只是提供"Web"或HTTP服务的技术之一(其中之一)。


2
看起来Martin Fowler写了一篇关于微服务的不错文章。 - Kayaman
@ArnabBiswas 这是答案中的第一个链接。 - Kayaman
我并不信服。它基本上是一个Web服务。Fowler的文章很长,但不够简明扼要。此外,Web服务不是一种技术,而是一种架构。 - Aazim
@Aazim网络服务曾经是一种架构,但在现代使用中,它指的是一组技术。SOA取代了这个架构术语。 - Kayaman
微服务是Web服务的一个子集,而不是一种架构。 - JRichardsz

12
主要观点是:一个Web服务(如其名称所示)是你期望在HTTP环境下处理某些内容的东西-换句话说,它在全球范围内的Web上执行某些操作。
而微服务并不受WWW上下文的限制。从其核心来看,微服务应该提供一项具体的服务 - 但是例如没有http协议的限制。
通常情况下,微服务实现了RESTful "Web服务",但不必非得这样!
此外,微服务通常被认为是对服务众多的单片式应用程序的反模型。

11

我在这里得到了一个简单的答案(来源),它说: 微服务是一种新的软件架构。它基于Web服务,但可以是任何实现为独立特性的服务,并具有自己的数据库并能够独立部署。

微服务是一种架构,其中系统的所有组件都放置在独立的组件中,可以单独构建、部署和扩展。


2

微服务:-

微服务是一种可以与Web服务一起使用的软件架构。该方法涉及将大型软件应用程序拆分为解耦模块,其中微服务运行独特的进程并通过API进行通信。它的开发可以通过使用消息传递、事件驱动的API或使用非HTTP支持的RPC机制来实现。

当大型应用程序失败或停机时,微服务架构可以挽救局面。如果特定的服务在通信中失败,则单个模块的失败不会影响整个应用程序。Java、C#、Python和移动软件开发语言的微服务组合是可能的。它可以独立部署在业务领域的服务模型中。 enter image description here

Web服务:-

Web服务只是可以通过“Web”或HTTP提供服务的多种技术之一。作为特定类型的面向服务的体系结构(SOA),Web服务代表了Web应用程序的功能。

它通过使用标准的HTTP协议和通用的数据表示格式(如XML、JSON等)来定义API和主代码之间的交互机制。这使得由不同技术开发的软件应用程序可以相互通信。
Web服务与前端开发无关,它们没有连接到任何开发语言或用户设备软件平台。如果编写在不同的语言和分别针对不同操作系统中,将不同的Web服务组合成一个单独的服务也是可能的,就像微服务一样。

1
Microservices是Web服务的扩展。
Web服务通常具有垂直性质(提供者-消费者通信),而Microservices则具有水平性质。Microservices被视为架构,因为它们属于特定应用程序,解决特定问题,因此称之为轻量级。变化是隔离的,因为一个Microservice中的变化不会影响其他Microservices(例如,在登录Microservice中进行的更改不会影响支付Microservice)。单独缩放每个Microservice很容易。Microservice通常有自己的数据库。

0

微服务是Web服务的一个子集。也用于命名像“基于微服务的架构”这样的架构。

微服务是一种工件,而不是一种架构。许多世界一流的公司都知道这一点。

https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/environments-cfg-alb-shared.html

enter image description here

在微服务构件之前,我们有经典的Web服务或REST API。甚至在此之前,我们有带有XML的SOAP Web服务。

因此,总结一下,当有人谈论微服务时,他指的是具有某些特征,使其与经典Web服务或REST API有所区别的Web服务子集。

一个主要特征是唯一数据库每个服务一个数据库

这里还有来自像AWS这样的产品的其他特征。其中一些适用于REST API或SOAP服务。我将用粗体标记一些非常特定于微服务的特征。

https://aws.amazon.com/microservices/

  • 敏捷性
  • 灵活的扩展性
  • 简易部署
  • 技术自由
  • 可重用的代码
  • 弹性

https://microservices.io/

  • 易于维护和测试
  • 松散耦合
  • 可独立部署
  • 围绕业务能力组织
  • 由小团队拥有

https://www.baeldung.com/cs/microservices-db-design

  • 每个服务一个数据库
  • CQRS

https://learn.microsoft.com/en-us/azure/architecture/microservices/design/data-considerations

enter image description here


0

微服务是一个独立的应用程序,为更大的应用架构提供服务。

Web服务是一种通过Web界面使应用程序可用于其他应用程序的方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接