springcloud面试题

  一、springcloud的五大组件

  包括Netflix Eurek,Netflix Ribbon,Netflix Hystrix,Netflix Zuul和Spring Cloud Config。分别对应(1)服务发现(2)客服端负载均衡(3)断路器(4)服务网关和(5)分布式配置。

  1.Netflix Eurek是一个RESTful服务,它由Eureka服务器和Eureka客户端组成,前者用作服务注册服务器,后者是java客户端,简化与服务器的交互,同时负载均衡。

  2.Netflix Ribbon主要为客户一侧提供软件负载均衡算法,客户端组件包括连接超时、重试、重试算法。

  3.断路器Netflix Hystrix用来防止某个应用程序多次试图执行一个操作,这样不会浪费 CPU周期、或不等待故障修复而重复执行,它为系统增加了灵活和稳定,可以保护系统部件的健康状态;断路器也能检测到是否已解决了故障,控制故障范围,当故障解除后再允许应用程序重新尝试调用操作。

  4.Netflix Zuul与nginx比较相似,属于api网关功能,可以概括为反向代理,但Netflix还为其新增了一些特性用于配合其他组件协调运行。

  5.Spring Cloud Config主要负责配置管理,包括服务器端和客户端,由于Config是静态的,它需要配合Spring Cloud Bus才能实现动态配置的更新。 二、基础概念

  1. 什么是微服务架构?

  微服务架构就是将单体的应用程序分成多个应用程序,这多个应用程序就成为微服务,每个微服务运行在自己的进程中,并使用轻量级的机制通信。这些服务围绕业务能力来划分,并通过自动化部署机制来独立部署。这些服务可以使用不同的编程语言,不同数据库,以保证最低限度的集中式管理。

  2.为什么需要学习Spring Cloud? 首先springcloud基于spingboot的优雅简洁,不像 springmvc,mybatis错综复杂的配置,有了spingboot,这些东西都不需要了,springcloud就基于SpringBoot把市场上优秀的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理什么叫做开箱即用?即使是当年的黄金搭档dubbo+zookeeper下载配置起来也是颇费心神的!而springcloud完成这些只需要一个jar的依赖就可以了!springcloud大多数子模块都是直击痛点,像zuul解决的跨域,fegin解决的负载均衡,hystrix的熔断机制等等等等

  3.Spring Cloud 是什么 Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、智能路由、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

  4.SpringBoot和SpringCloud的区别? SpringBoot专注于快速方便的开发单个个体微服务。SpringCloud是关注全局的微服务协调整理治理框架,它将SpringBoot开发的一个个单体微服务整合并管理起来,SpringBoot可以离开SpringCloud独立使用开发项目, 但是SpringCloud离不开SpringBoot ,属于依赖的关系SpringBoot专注于快速、方便的开发单个微服务个体,SpringCloud关注全局的服务治理框架。

  5.Spring Cloud 和dubbo区别? (1)服务调用方式:dubbo是RPC ,springcloud是基于 Rest Api(2)注册中心:dubbo 是zookeeper, springcloud是eureka。(3)服务网关,dubbo本身没有实现,只能通过其他第三方技术整合,springcloud有Zuul路由网关,作为路由服务器,进行消费者的请求分发,springcloud支持断路器,与git完美集成配置文件支持版本控制,事物总线实现配置文件的更新与服务自动装配等等一系列的微服务架构要素。 三、Eureka

  1.什么是Eureka?

  Eureka作为SpringCloud的服务注册功能服务器,他是服务注册中心,系统中的其他服务使用Eureka的客户端将其连接到Eureka Service中,并且保持心跳,这样工作人员可以通过EurekaService来监控各个微服务是否运行正常。

  2.Eureka怎么实现高可用?

  集群吧,注册多台Eureka,然后把SpringCloud服务互相注册,客户端从Eureka获取信息时,按照Eureka的顺序来访问。

  3.什么是Eureka的自我保护模式?

  默认情况下,如果Eureka Service在一定时间内没有接收到某个微服务的心跳,Eureka Service会进入自我保护模式,在该模式下Eureka Service会保护服务注册表中的信息,不在删除注册表中的数据,当网络故障恢复后,Eureka Servic 节点会自动退出自我保护模式

  4.DiscoveryClient的作用?

  可以从注册中心中根据服务别名获取注册的服务器信息。

  5.Eureka和ZooKeeper都可以提供服务注册与发现的功能,请说说两个的区别:

  ZooKeeper中的节点服务挂了就要选举 在选举期间注册服务瘫痪,虽然服务最终会恢复,但是选举期间不可用的。

  Eureka各个节点是平等关系,服务器挂了没关系,只要有一台Eureka就可以保证服务可用,数据都是最新的。 如果查询到的数据并不是最新的,就是因为Eureka的自我保护模式导致的。

  四、