当前位置: 首页 > 图灵资讯 > java面试题> 金三银四精选面试题-什么是微服务?微服务之间是如何独立通讯的?

金三银四精选面试题-什么是微服务?微服务之间是如何独立通讯的?

来源:图灵教育
时间:2023-11-22 10:12:13
 

什么是微服务?微服务之间是如何独立通讯的?

什么是微服务?

  • 微服务架构是一个分布式系统,按照业务进行划分成为不同的服务单元,解决单体系统性能等不足。
  • 微服务架构(通常简称为微服务)是指开发应用所用的一种架构形式或者称之为一种架构风格。通过微服务,可将大型应用分解成多个独立的组件,其中每个组件都有各自的责任领域,每一个组件都能够单独部署,组件之间是松耦合的。在处理一个用户请求时,基于微服务的应用可能会调用许多内部微服务来共同生成其响应。

微服务的优势

敏捷性

微服务促进若干小型独立团队形成一个组织,这些团队负责自己的服务。各团队在小型且易于理解的环境中行事,并且可以更独立、更快速地工作。这缩短了开发周期时间。您可以从组织的总吞吐量中显著获益。

灵活扩展

通过微服务,您可以独立扩展各项服务以满足其支持的应用程序功能的需求。这使团队能够适当调整基础设施需求,准确衡量功能成本,并在服务需求激增时保持可用性。

轻松部署

微服务支持持续集成和持续交付,可以轻松尝试新想法,并可以在无法正常运行时回滚。由于故障成本较低,因此可以大胆试验,更轻松地更新代码,并缩短新功能的上市时间。

技术自由

微服务架构不遵循“一刀切”的方法。团队可以自由选择最佳工具来解决他们的具体问题。因此,构建微服务的团队可以为每项作业选择最佳工具。

可重复使用的代码

将软件划分为小型且明确定义的模块,让团队可以将功能用于多种目的。专为某项功能编写的服务可以用作另一项功能的构建块。这样应用程序就可以自行引导,因为开发人员可以创建新功能,而无需从头开始编写代码。

弹性

服务独立性增加了应用程序应对故障的弹性。在整体式架构中,如果一个组件出现故障,可能导致整个应用程序无法运行。通过微服务,应用程序可以通过降低功能而不导致整个应用程序崩溃来处理总体服务故障。

微服务之间是如何独立通讯的?

同步

REST HTTP 协议

REST 请求在微服务中是最为常用的一种通讯方式,它依赖于 HTTP\HTTPS 协议。RESTFUL 的特点是:

  1. 每一个 URI 代表 1 种资源
  1. 客户端使用 GET、POST、PUT、DELETE 4 个表示操作方式的动词对服务端资源进行操作:GET 用来获取资源,POST 用来新建资源(也可以用于更新资源),PUT 用来更新资源,DELETE 用来删除资源
  1. 通过操作资源的表现形式来操作资源
  1. 资源的表现形式是 XML 或者 HTML
  1. 客户端与服务端之间的交互在请求之间是无状态的,从客户端到服务端的每个请求都必须包含理解请求所必需的信息

RPC TCP 协议

RPC(Remote Procedure Call)远程过程调用,简单的理解是一个节点请求另一个节点提供的服务。它的工作流程是这样的:

  1. 执行客户端调用语句,传送参数
  1. 调用本地系统发送网络消息
  1. 消息传送到远程主机
  1. 服务器得到消息并取得参数
  1. 根据调用请求以及参数执行远程过程(服务)
  1. 执行过程完毕,将结果返回服务器句柄
  1. 服务器句柄返回结果,调用远程主机的系统网络服务发送结果
  1. 消息传回本地主机
  1. 客户端句柄由本地主机的网络服务接收消息
  1. 客户端接收到调用语句返回的结果数据

异步

消息中间件

常见的消息中间件有 Kafka、ActiveMQ、RabbitMQ、RocketMQ ,常见的协议有 AMQP、MQTTP、STOMP、XMPP。这里不对消息队列进行拓展了,具体如何使用还是请移步官网。