SpringCloud最常见的面试题的答案已经全部更新完了,有些SpringCloud面试题答案是自己总结的,也有些SpringCloud面试题答案是在网上搜集整理的。这些答案难免会存在一些错误,仅供大家参考。
、 Edgware.SR6:我理解为最低版本号
2、 Greenwich.SR2 :我理解为最高版本号
3、 Greenwich.BUILD-SNAPSHOT(快照):是一种特殊的版本,指定了某个当前的开发进度的副本。不同于常规的版本,几乎每天都要提交更新的版本,如果每次提交都申明一个版本号那不是版本号都不够用?
Component | Edgware.SR6 | Greenwich.SR2 | Greenwich.BUILD-SNAPSHOT |
2、什么是客户证书?
客户端系统用于向远程服务器发出经过身份验证的请求的一种数字证书称为客户端证书。客户端证书在许多相互认证设计中起着非常重要的作用,为请求者的身份提供了强有力的保证。
3、Spring Cloud OpenFeign
基于Ribbon和Hystrix的声明式服务调用组件,可以动态创建基于Spring MVC注解的接口实现用于服务调用,在Spring Cloud 2.0中已经取代Feign成为了一等公民。
Spring Cloud的版本关系
Spring Cloud是一个由许多子项目组成的综合项目,各子项目有不同的发布节奏。为了管理Spring Cloud与各子项目的版本依赖关系,发布了一个清单,其中包括了某个Spring Cloud版本对应的子项目版本。
为了避免Spring Cloud版本号与子项目版本号混淆,Spring Cloud版本采用了名称而非版本号的命名,这些版本的名字采用了伦敦地铁站的名字,根据字母表的顺序来对应版本时间顺序,例如Angel是第一个版本,Brixton是第二个版本。
当Spring Cloud的发布内容积累到临界点或者一个重大BUG被解决后,会发布一个"service releases"版本,简称SRX版本,比如Greenwich.SR2就是Spring Cloud发布的Greenwich版本的第2个SRX版本。目前Spring Cloud的最新版本是Hoxton。
4、在使用微服务架构时,您面临哪些挑战?
开发一些较小的微服务听起来很容易,但开发它们时经常遇到的挑战如下。
自动化组件:难以自动化,因为有许多较小的组件。因此,对于每个组件,我们必须遵循Build,Deploy和Monitor的各个阶段。
易感性:将大量组件维护在一起变得难以部署,维护,监控和识别问题。它需要在所有组件周围具有很好的感知能力。
配置管理:有时在各种环境中维护组件的配置变得困难。
调试:很难找到错误的每一项服务。维护集中式日志记录和仪表板以调试问题至关重要。
5、springcloud核⼼组件及其作⽤,以及springcloud⼯作原理:
springcloud由以下⼏个核⼼组件构成:
1、 Eureka:各个服务启动时,Eureka Client都会将服务注册到Eureka Server,并且Eureka Client还可以反过来从Eureka Server拉取注册表,从⽽知道其他服务在哪⾥
2、 Ribbon:服务间发起请求的时候,基于Ribbon做负载均衡,从⼀个服务的多台机器中选择⼀台
3、 Feign:基于Feign的动态代理机制,根据注解和选择的机器,拼接请求URL地址,发起请求
4、 Hystrix:发起请求是通过Hystrix的线程池来⾛的,不同的服务⾛不同的线程池,实现了不同服务调⽤的隔离,避免了服务雪崩的问题
5、 Zuul:如果前端、移动端要调⽤后端系统,统⼀从Zuul⽹关进⼊,由Zuul⽹关转发请求给对应的服务
6、接⼝限流⽅法?
限制 总并发数(⽐如 数据库连接池、线程池)
1、 限制 瞬时并发数(如 nginx 的 limit_conn 模块,⽤来限制 瞬时并发连接数)
2、 限制 时间窗⼝内的平均速率(如 Guava 的 RateLimiter、nginx 的 limit_req模块,限制每秒的平均速率)
3、 限制 远程接⼝ 调⽤速率
4、 限制 MQ 的消费速率
5、 可以根据⽹络连接数、⽹络流量、CPU或内存负载等来限流
7、Spring Cloud Task
Spring Cloud Task的目标是为SpringBoot应用程序提供创建短运行期微服务的功能。在Spring Cloud Task中,我们可以灵活地动态运行任何任务,按需分配资源并在任务完成后检索结果。Tasks是Spring Cloud Data Flow中的一个基础项目,允许用户将几乎任何SpringBoot应用程序作为一个短期任务执行。
8、什么是Oauth?
开放授权协议,这允许通过在HTTP服务上启用客户端应用程序(例如第三方提供商Facebook,GitHub等)来访问资源所有者的资源。因此,您可以在不使用其凭据的情况下与另一个站点共享存储在一个站点上的资源。
OAuth允许像Facebook这样的第三方使用最终用户的帐户信息,同时保证其安全(不使用或暴露用户的密码)。它更像是代表用户的中介,同时为服务器提供访问所需信息的令牌。
9、为什么在微服务中需要Reports报告和Dashboards仪表板?
报告和仪表板主要用于监视和维护微服务。有多种工具可以帮助实现此目的。报告 和仪表板可用于: 找出哪些微服务公开了哪些资源。 找出组件发生变化时受影响的服务。 提供一个简单的点,只要需要文档,就可以访问它。 部署的组件的版本。
10、什么是微服务架构中的DRY?
DRY代表不要重复自己。它基本上促进了重用代码的概念。这导致开发和共享库,这反过来导致紧密耦合。
11、Spring Cloud解决了哪些问题?
在使用SpringBoot开发分布式微服务时,我们面临的问题很少由Spring Cloud解决。
与分布式系统相关的复杂性 – 包括网络问题,延迟开销,带宽问题,安全问题。
处理服务发现的能力 – 服务发现允许集群中的进程和服务找到彼此并进行通信。
解决冗余问题 – 冗余问题经常发生在分布式系统中。
负载平衡 – 改进跨多个计算资源(例如计算机集群,网络链接,中央处理单元)的工作负载分布。
减少性能问题 – 减少因各种操作开销导致的性能问题。
12、Zuul网关如何搭建集群
使用Nginx的upstream设置Zuul服务集群,通过location拦截请求并转发到upstream,默认使用轮询机制对Zuul集群发送请求。
13、我们可以用微服务创建状态机吗?
我们知道拥有自己的数据库的每个微服务都是一个可独立部署的程序单元,这反过来又让我们可以创建一个状态机。因此,我们可以为特定的微服务指定不同的状态和事件。
例如,我们可以定义Order微服务。订单可以具有不同的状态。Order状态的转换可以是Order微服务中的独立事件。
14、什么是Feign?
1、 Feign 是一个声明web服务客户端,这使得编写web服务客户端更容易
2、 他将我们需要调用的服务方法定义成抽象方法保存在本地就可以了,不需要自己构建Http请求了,直接调用接口就行了,不过要注意,调用方法要和本地抽象方法的签名完全一致。
15、如何设置服务发现?
有多种方法可以设置服务发现。我将选择我认为效率最高的那个,Netflix的Eureka。这是一个简单的程序,不会对应用程序造成太大影响。此外,它支持多种类型的Web应用程序。 Eureka配置包括两个步骤 - 客户端配置和服务器配置。
使用属性文件可以轻松完成客户端配置。在clas spath中,Eureka搜索一个eureka-client.properties文件。它还搜索由特定于环境的属性文件中的环境引起的覆盖。
对于服务器配置,您必须首先配置客户端。完成后,服务器启动一个客户端,该客户端用于查找其他服务器。。默认情况下,Eureka服务器使用客户端配置来查找对等服务器。
16、您对微服务有何了解?
微服务,又称微服务架构,是一种架构风格,它将应用程序构建为以业务领域为模型的小型自治服务集合 。
通俗地说,你必须看到蜜蜂如何通过对齐六角形蜡细胞来构建它们的蜂窝状物。他们最初从使用各种材料的小部分开始,并继续从中构建一个大型蜂箱。这些细胞形成图案,产生坚固的结构,将蜂窝的特定部分固定在一起。这里,每个细胞独立于另一个细胞,但它也与其他细胞相关。这意味着对一个细胞的损害不会损害其他细胞,因此,蜜蜂可以在不影响完整蜂箱的情况下重建这些细胞。
图1:微服务的蜂窝表示 – 微服务访谈问题
请参考上图。这里,每个六边形形状代表单独的服务组件。与蜜蜂的工作类似,每个敏捷团队都使用可用的框架和所选的技术堆栈构建单独的服务组件。就像在蜂箱中一样,每个服务组件形成一个强大的微服务架构,以提供更好的可扩展性。此外,敏捷团队可以单独处理每个服务组件的问题,而对整个应用程序没有影响或影响最小。
17、什么是耦合和凝聚力?
组件之间依赖关系强度的度量被认为是耦合。一个好的设计总是被认为具有高内聚力和低耦合性。 面试官经常会问起凝聚力。它也是另一个测量单位。更像是一个模块内部的元素保持结合的程度。 必须记住,设计微服务的一个重要关键是低耦合和高内聚的组合。当低耦合时,服务对其他服务的依赖很少。这样可以保持服务的完整性。在高内聚性中,将所有相关逻辑保存在服务中成为可能。否则,服务将尝试彼此通信,从而影响整体性能。
18、什么是Spring Cloud?
spring cloud 是一系列框架的有序集合。它利用 spring boot 的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用 spring boot 的开发风格做到一键启动和部署。
19、dubbo服务注册与发现原理
调⽤关系说明:
1、 服务容器负责启动,加载,运⾏服务提供者。
2、 服务提供者在启动时,向注册中⼼注册⾃⼰提供的服务。
3、 服务消费者在启动时,向注册中⼼订阅⾃⼰所需的服务。
4、 注册中⼼返回服务提供者地址列表给消费者,如果有变更,注册中⼼将基于⻓连接推送变更数据给消费者。
5、 服务消费者,从提供者地址列表中,基于软负载均衡算法,选⼀台提供者进⾏调⽤,如果调⽤失败,再选另⼀台调⽤。
6、 服务消费者和提供者,在内存中累计调⽤次数和调⽤时间,定时每分钟发送⼀次统计数据到监控中⼼。
20、微服务有什么特点?
您可以列出微服务的特征,如下所示:
图7:微服务的特征 – 微服务访谈问题