微服务常见面试题及答案详解 --- 面试题

练武不练功,到头一场空。


1.什么是微服务?

     单个轻量级服务一般为一个单独微服务,微服务讲究的是快速使用,开箱即用,可以独立运行。微服务架构系统是一个分布式的系统,按照业务进行划分服务单元模块,解决单个系统的不足,满足越来越复杂的业务需求

    马丁福勒(Martin Fowler):就目前而言,对于微服务业界并没有一个统一的、标准的定义。

    更多了解见:https://blog.csdn.net/sunming709424/article/details/80578559

    业界大牛 马丁福勒(Martin Fowler)讲解 :https://martinfowler.com/bliki/

     看不懂英文,这里有中文博客翻译的:https://blog.csdn.net/u013970991/article/details/53333921

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

    同步通信:RPC、REST 等。

    异步:消息队列,如:RabbitMq、ActiveM、Kafka 等。

3.SpringCloud 和 Dubbo 有哪些区别?

    首先,他们都是分布式管理框架

    dubbo 是二进制传输,占用带宽会少一点。SpringCloud是http 传输,带宽会多一点,同时使用http协议一般会使用JSON报文,消耗会更大。

    dubbo 开发难度较大,所依赖的 jar 包有很多问题大型工程无法解决。SpringCloud 对第三方的继承可以一键式生成,天然集成

    SpringCloud 接口协议约定比较松散,需要强有力的行政措施来限制接口无序升级

最大的区别:
    Spring Cloud抛弃了Dubbo 的RPC通信,采用的是基于HTTP的REST方式。


    严格来说,这两种方式各有优劣。虽然在一定程度上来说,后者牺牲了服务调用的性能,但也避免了上面提到的原生RPC带来的问题。而且REST相比RPC更为灵活,服务提供方和调用方的依赖只依靠一纸契约,不存在代码级别的强依赖,这在强调快速演化的微服务环境下,显得更为合适。

    参考:https://www.cnblogs.com/cbxBlog/p/9198401.html

4.SpringBoot 和 SpringCloud 之间关系?

SpringBoot:专注于快速方便的开发单个个体微服务(关注微观);
SpringCloud:关注全局的微服务协调治理框架,将SpringBoot开发的一个个单体微服务组合并管理起来(关注宏观);

SpringBoot可以离开SpringCloud独立使用,但是SpringCloud不可以离开SpringBoot,属于依赖关系。

    参考:https://blog.csdn.net/qq_41497111/article/details/91042405

5.什么是熔断?什么是服务降级?

服务熔断的作用类似于我们家用的保险丝,当某服务出现不可用或响应超时的情况时,为了防止整个系统出现雪崩,暂时停止对该服务的调用。

服务降级是从整个系统的负荷情况出发和考虑的,对某些负荷会比较高的情况,为了预防某些功能(业务场景)出现负荷过载或者响应慢的情况,在其内部暂时舍弃对一些非核心的接口和数据的请求,而直接返回一个提前准备好的fallback(退路)错误处理信息。这样,虽然提供的是一个有损的服务,但却保证了整个系统的稳定性和可用性。

参考:https://blog.csdn.net/pengjunlee/article/details/86688858

6.微服务的优缺点是什么?说下你在项目中碰到的坑。

      优点:松耦合,聚焦单一业务功能,无关开发语言,团队规模降低
      缺点:随着服务数量增加,管理复杂,分布式部署追踪问题困难

7.eureka和zookeeper都可以提供服务注册与发现的功能,请说说两个的区别?

     zookeeper 是CP原则,强一致性和分区容错性。
      eureka 是AP 原则 可用性和分区容错性
      zookeeper当主节点故障时,zk会在剩余节点重新选择主节点,耗时过长,虽然最终能够恢复,但是选取主节点期间会导致服务不可用,这是不能容忍的。
     eureka各个节点是平等的,一个节点挂掉,其他节点仍会正常保证服务

8.你所知道微服务的技术栈有哪些?列举一二。

微服务条目 落地技术
服务开发 SpringBoot、Spring、SpringMVC
服务配置与管理 Netfix公司的Archaius、阿里的Dlamond等
服务注册与发现 Eurka、Consul、Zookeeper等
服务调用 Rest(服务通信)、RPC(Dubbo)、GRpc
服务熔断器 Hystrix、Envoy等
负载均衡 Nginx、Ribbon等
服务接口调用(客户端简化工具) Fegin等
消息队列 Kafka、RabbitMQ、ActiveMQ等
服务配置中心管理 SpringCloudConfig、Chef等
服务路由(API网关) Zuul等
服务监控 Zabbix,Nagios,Metrics,Spectator等
全链路追踪 Zipkin,Brave,Dapper等
服务部署 Docker,OpenStack,Kubernetes等
数据流操作开发包 SpringCloud Stream(封装与Redis,Rabbit,kafka等发送接收消息)
事件消息总线 Spring Cloud Bus

天上飞的理念,必然有落地的实现。

猜你喜欢

转载自blog.csdn.net/qq_41497111/article/details/92067565