Rest API和微服务之间的真正区别是什么?

Rest API和微服务之间的真正区别是什么?,rest,api,architecture,microservices,Rest,Api,Architecture,Microservices,我正在学习微服务,但我不明白真正的区别是什么 在创建restapi和创建microservices之间? 我在Go工作,但我的问题适用于所有语言。微服务方法是将您的系统(“代码堆”)分成许多小服务,每个服务通常都有自己的: 明确与业务相关的责任 运行过程 数据库 代码版本控制(如git)存储库 API(其他服务/客户端如何联系微服务的协议) 用户界面 服务本身保持较小的规模,因此随着系统的发展,会有更多的服务,而不是更大的服务 微服务可以使用REST、RPC或任何其他方法彼此通信,因此RES

我正在学习微服务,但我不明白真正的区别是什么 在创建
restapi
和创建
microservices
之间?

我在Go工作,但我的问题适用于所有语言。

微服务方法是将您的系统(“代码堆”)分成许多小服务,每个服务通常都有自己的:

  • 明确与业务相关的责任
  • 运行过程
  • 数据库
  • 代码版本控制(如git)存储库
  • API(其他服务/客户端如何联系微服务的协议)
  • 用户界面
服务本身保持较小的规模,因此随着系统的发展,会有更多的服务,而不是更大的服务

微服务可以使用REST、RPC或任何其他方法彼此通信,因此REST或API与微服务主题是正交的

参考:API=

微服务=

总之

  • Microservice应该公开定义良好的API
  • 微服务是您可能希望构建解决方案的方式
  • API是您的消费者所看到的
  • 您可以在后端不使用微服务的情况下公开API(事实上,大多数非培训场景不需要微服务)

在决定使用微服务之前,您可能需要阅读相关内容(除非这是出于培训目的)。

当您在实体/域级别遵循SOC-关注点分离时,微服务的定义非常明确,其中每个实体/域独立于任何其他服务

例如用户服务将只负责存储、更新和删除与用户相关的信息

微服务后端和前端微服务可进一步分为两部分

  • 前端微服务,与Web API一样公开rest端点
  • 实际执行所有操作的后端微服务
  • Rest API是更多暴露于外部世界的端点,也可以与微服务一起使用,如上所述。

    微服务 A是关于将应用程序逻辑分割成小块或“组件”,它们可以在它们之间起作用和/或通过API公开

    美国石油学会 (web)应用程序需要设计具有所有对象实体(模型)集的业务逻辑以及对它们可能的操作。 (应用程序编程接口][)是通过公开负责调用适当应用程序操作的特定入口点向应用程序发出请求的一种方式

    (“ReST”在代表性状态转移中)是至少符合以下要求的API:

    • 用户界面不同于数据存储和操作(客户机-服务器体系结构)
    • 服务器上未存储任何客户端上下文(“无状态”)
    • 服务器响应必须隐式或显式地将自身定义为可缓存或不可缓存
    • 客户机不必知道他和服务器之间的层
    • 响应/请求消息必须是:自描述性;允许标识资源;使用表示方式允许操纵资源;宣布可用的操作和资源(“统一接口”)
    “真正的区别” 因此,虽然这些概念显然是相关的,但它们显然是不同的概念:

    • 无论是ReSTful还是非ReSTful,API公开服务器提供的操作,这些操作可能(但不一定)被分解成更小的组件(微服务

    • 此外,虽然典型的web(ReST)API在客户端和服务器之间使用HTTP协议,但微服务体系结构中的组件可能会使用其他协议(例如,,,…)进行通信


    大多数答案都是基于对API作为编程接口的老派理解。如今,这一含义被融化,并开始让人困惑,因为一些开发人员开始(因为简单或错误)将应用程序的API解释为应用程序本身。在这种情况下,不可能区分现代API和微服务。尽管如此,我们可以说一个API应用程序可以包含许多微服务,其中大多数通过微服务的API在应用程序内交互,而其他应用程序可能将其API公开为应用程序此外,微服务(即服务)可能不包括其他微服务(服务),但可以通过API基调用协调微服务的组合。应用程序可能包含微服务,但在最佳实践中可能不包含其他应用程序。

    用外行的话说,如果您有一个web API服务器,并将其拆分为多个独立的小型服务器,请使用代理服务器和负载平衡器对它们进行集群化,并且(可选地,为每个对象提供一个单独的数据库实体),这是一个微服务架构

    ,但在我创建三个API之前,我不知道如何修改它们以使其成为these@fm433403你应该问自己的第一个问题是-你用微服务体系结构解决了什么问题?它是一个解决非常特定的挑战的工具。一个没有解决问题的工具免费。因此,请确保您在使用之前了解该工具。例如,检查web应用程序的理想方式是为我的内部问题创建微服务,以及我想公开的API?如果我没有弄错,答案是肯定的。您公开的API可能是使用微服务体系结构创建的。再次,请确保croservices对您来说是一个很好的体系结构,并且您拥有合适大小的微服务器(例如,针对特定的业务领域)。您可能希望查看Netflix如何提供微服务器的一些演示