(面试题)谈谈你对微服务的理解

568 阅读1分钟

什么是微服务

在聊微服务之前,我们先说单体应用,对比着看

  • 单体应用,所有的模块都包含在一个项目中,发布时打成一个包,部署在单个服务器上
    • 缺点:系统耦合度过高,灵活性差
  • 微服务,将每个模块拆分成独立的项目,发布时每个项目打一个包,部署在多个服务器上
    • 优点:耦合度低,灵活性好。开发时每个模块可以用不同编程语言。部署的时候在多态服务器上容灾性好。维护的时候只需要维护出问题的模块。

微服务需要解决的问题

  • A服务如何调用B服务的方法,就是服务之间的通信
  • 我该怎么知道有哪些服务,就是服务的注册与发现
  • 有个服务挂掉怎么办,总不能服务雪崩吧,就是服务熔断和服务降级
  • 客户端怎么知道我使用的这个功能,该去访问哪个服务,就是服务网关

微服务框架

谁能解决以上的问题,谁就是微服务的具体实现,常见的框架有

  • Dubbo + Zookeeper:只解决了服务通信和服务注册与发现,不是一站式解决方案
  • SpringCloud NetFilx:一站式解决方案,但是已经停止更新
  • SpringCloud alibaba:一站式解决方案,因为是大厂研发,并且仍然更新,所以当下最流行