2020年SpringCloud面试题(1)

一.微服务的优点缺点?说下开发项目中遇到的坑?

优点:

1.每个服务直接足够内聚,代码容易理解
2.开发效率高,一个服务只做一件事,适合小团队开发
3.松耦合,有功能意义的服务。
4.可以用不同语言开发,面向接口编程。
5.易于第三方集成
6.微服务只是业务逻辑的代码,不会和HTML,CSS或其他界面结合.
7.可以灵活搭配,连接公共库/连接独立库

缺点:
1.分布式系统的责任性
2.多服务运维难度加大。
3.系统部署依赖,服务间通信成本,数据一致性,系统集成测试,性能监控。

二.什么是springcloud?

Spring cloud流应用程序启动器是基于Spring Boot的Spring集成应用程序,提供与外部系统的集成。Spring cloud Task,一个生命周期短暂的微服务框架,用于快速构建执行有限数据处理的应用程序

三.spring cloud 和dubbo区别?

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

四.REST 和RPC对比

1.RPC主要的缺陷是服务提供方和调用方式之间的依赖太强,需要对每一个微服务进行接口的定义,并通过持续继承发布,严格版本控制才不会出现冲突。
2.REST是轻量级的接口,服务的提供和调用不存在代码之间的耦合,只需要一个约定进行规范。

五.你所知道的微服务技术栈?

维度(springcloud)
服务开发:springboot spring springmvc
服务配置与管理:Netfix公司的Archaiusm ,阿里的Diamond
服务注册与发现:Eureka,Zookeeper
服务调用:Rest RPC gRpc
服务熔断器:Hystrix
服务负载均衡:Ribbon Nginx
服务接口调用:Fegin
消息队列:Kafka Rabbitmq activemq
服务配置中心管理:SpringCloudConfig
服务路由(API网关)Zuul
事件消息总线:SpringCloud Bus

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

1.远程调用,比如feign调用,直接通过远程过程调用来访问别的service。
2.消息中间件

八.springcloud如何实现服务的注册?

1.服务发布时,指定对应的服务名,将服务注册到 注册中心(eureka zookeeper)
2.注册中心加@EnableEurekaServer,服务用@EnableDiscoveryClient,然后用ribbon或feign进行服务直接的调用发现。

九.Eureka和Zookeeper区别

1.Eureka取CAP的AP,注重可用性,Zookeeper取CAP的CP注重
一致性。
2.Zookeeper在选举期间注册服务瘫痪,虽然服务最终会恢复,但选举期间不可用。
3.eureka的自我保护机制,会导致一个结果就是不会再从注册列表移除因长时间没收到心跳而过期的服务。依然能接受新服务的注册和查询请求,但不会被同步到其他节点。不会服务瘫痪。
4.Zookeeper有Leader和Follower角色,Eureka各个节点平等。
5.Zookeeper采用过半数存活原则,Eureka采用自我保护机制解决分区问题。
6.eureka本质是一个工程,Zookeeper只是一个进程。

十.eureka自我保护机制是什么?

1.当Eureka Server 节点在短时间内丢失了过多实例的连接时(比如网络故障或频繁启动关闭客户端)节点会进入自我保护模式,保护注册信息,不再删除注册数据,故障恢复时,自动退出自我保护模式。

十二.什么是Ribbon?

ribbon是一个负载均衡客户端,可以很好的控制htt和tcp的一些行为。feign默认集成了ribbon。

十三.什么是feigin?它的优点是什么?

1.feign采用的是基于接口的注解
2.feign整合了ribbon,具有负载均衡的能力
3.整合了Hystrix,具有熔断的能力

使用:
1.添加pom依赖。
2.启动类添加@EnableFeignClients
3.定义一个接口@FeignClient(name=“xxx”)指定调用哪个服务

十四.Ribbon和Feign的区别?

1.Ribbon都是调用其他服务的,但方式不同。
2.启动类注解不同,Ribbon是@RibbonClient feign的是@EnableFeignClients
3.服务指定的位置不同,Ribbon是在@RibbonClient注解上声明,Feign则是在定义抽象方法的接口中使用@FeignClient声明。
4.调用方式不同,Ribbon需要自己构建http请求,模拟http请求然后使用RestTemplate发送给其他服务,步骤相当繁琐。Feign需要将调用的方法定义成抽象方法即可。

十五.什么是Spring Cloud Bus?

spring cloud bus 将分布式的节点用轻量的消息代理连接起来,它可以用于广播配置文件的更改或者服务直接的通讯,也可用于监控。
如果修改了配置文件,发送一次请求,所有的客户端便会重新读取配置文件。
使用:
1.添加依赖
2.配置rabbimq

十六.springcloud断路器作用?

当一个服务调用另一个服务由于网络原因或自身原因出现问题,调用者就会等待被调用者的响应 当更多的服务请求到这些资源导致更多的请求等待,发生连锁效应(雪崩效应)
断路器有完全打开状态:一段时间内 达到一定的次数无法调用 并且多次监测没有恢复的迹象 断路器完全打开 那么下次请求就不会请求到该服务
半开:短时间内 有恢复迹象 断路器会将部分请求发给该服务,正常调用时 断路器关闭
关闭:当服务一直处于正常状态 能正常调用

十七.什么是SpringCloudConfig?

在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件。在Spring Cloud中,有分布式配置中心组件spring cloud config ,它支持配置服务放在配置服务的内存中(即本地),也支持放在远程Git仓库中。在spring cloud config 组件中,分两个角色,一是config server,二是config client。

使用:
1、添加pom依赖
2、配置文件添加相关配置
3、启动类添加注解@EnableConfigServer

十八.Spring Cloud Gateway?

Spring Cloud Gateway是Spring Cloud官方推出的第二代网关框架,取代Zuul网关。网关作为流量的,在微服务系统中有着非常作用,网关常见的功能有路由转发、权限校验、限流控制等作用。

使用了一个RouteLocatorBuilder的bean去创建路由,除了创建路由RouteLocatorBuilder可以让你添加各种predicates和filters,predicates断言的意思,顾名思义就是根据具体的请求的规则,由具体的route去处理,filters是各种过滤器,用来对请求做各种判断和修改。

十九.架构?

在微服务架构中,需要几个基础的服务治理组件,包括服务注册与发现、服务消费、负载均衡、断路器、智能路由、配置管理等,由这几个基础组件相互协作,共同组建了一个简单的微服务系统

在Spring Cloud微服务系统中,一种常见的负载均衡方式是,客户端的请求首先经过负载均衡(zuul、Ngnix),再到达服务网关(zuul集群),然后再到具体的服。,服务统一注册到高可用的服务注册中心集群,服务的所有的配置文件由配置服务管理,配置服务的配置文件放在git仓库,方便开发人员随时改配置。

二十.什么是Hystrix?

防雪崩利器,具备服务降级,服务熔断,依赖隔离,监控(Hystrix Dashboard)
服务降级:
双十一 提示 哎哟喂,被挤爆了。 app秒杀 网络开小差了,请稍后再试。
优先核心服务,非核心服务不可用或弱可用。通过HystrixCommand注解指定。
fallbackMethod(回退函数)中具体实现降级逻辑。

原文地址:https://www.cnblogs.com/weigy/p/12617074.html

时间: 2024-11-01 20:23:11

2020年SpringCloud面试题(1)的相关文章

2020年SpringCloud面试题(2)

一.为什么要使用微服务? 1.随着互联网的快速发展,各行各业都在用互联网.互联网已经离不开人们的形形色色.随着越来越多的用户,业务场景也愈来愈复杂.2.传统的单体架构已经很难满足互联网技术发展的要求,代码可维护性扩展性和可读性降低,维护成本的提高都是驱动微服务的发展趋势. 二.作为服务注册中心,Eureka比Zookeeper好在哪里? 1.Eureka保证的是可用性和分区容错性,Zookeeper 保证的是一致性和分区容错性 .2.Eureka还有一种自我保护机制,如果在15分钟内超过85%的

华南理工大学2020年数学分析考研试题参考解答

250803华南理工大学2020年数学分析考研试题参考解答 1. (11 分) 计算 . 跟锦数学跟锦考研小锦教学微信公众号有参考解答哦欢迎关注 2. (11 分) 若 0" data-formula-type="inline-equation"> , 求 . 跟锦数学跟锦考研小锦教学微信公众号有参考解答哦欢迎关注 3. (11 分) 求级数 的和函数. 跟锦数学跟锦考研小锦教学微信公众号有参考解答哦欢迎关注 4. (11 分) 计算 . 跟锦数学跟锦考研小锦教学微信公

SpringCloud面试题

1.SpringCloud和DubboSpringCloud和Dubbo都是现在主流的微服务架构SpringCloud是Apache旗下的Spring体系下的微服务解决方案Dubbo是阿里系的分布式服务治理框架从技术维度上,其实SpringCloud远远的超过Dubbo,Dubbo本身只是实现了服务治理,而SpringCloud现在以及有21个子项目以后还会更多所以其实很多人都会说Dubbo和SpringCloud是不公平的但是由于RPC以及注册中心元数据等原因,在技术选型的时候我们只能二者选其

2020最新PHP面试题(附带答案)

1. 什么事面向对象?主要特征是什么? 面向对象是程序的一种设计方式,它利于提高程序的重用性,使程序结构更加清晰.主要特征:封装.继承.多态. 更多学习内容请访问: 怎么从一名码农成为架构师的必看知识点:目录大全(不定期更新) 2. SESSION 与 COOKIE的区别是什么,请从协议,产生的原因与作用说明? 1.http无状态协议,不能区分用户是否是从同一个网站上来的,同一个用户请求不同的页面不能看做是同一个用户. 2.SESSION存储在服务器端,COOKIE保存在客户端.Session比

头条2020届实习生笔试题

一卷 编程题: 输入某年某月某日,判断这一天是这一年的第几天? // 判断是否为闰年 function isRun(a) { return a % 4 == 0 && a % 100 != 0 || a % 400 == 0 } // 判断是这一年的第几天 function daysNum(year,month,day) { var months = [31,28,31,30,31,30,31,31,30,31,30,31]; if(month ==1) { return day; } f

2020年Go语言那些不得不看的最新面试题

点击这里,查看剩余5道2020年最新面试题及其解析 1.编译执行下面代码会出现什么? package main var( size :=1024 max_size = size*2 ) func main() { println(size,max_size) } 解析 考点:变量简短模式 变量简短模式限制: - 定义变量同时显式初始化 - 不能提供数据类型 - 只能在函数内部使用 结果: syntax error: unexpected := 2.下面函数有什么问题? package main

2020年数学分析高等代数考研试题参考解答汇总(不断更新)

华东师范大学2020年高等代数考研试题部分参考解答 南开大学2020年高等代数考研试题部分参考解答 南开大学2020年数学分析考研试题部分参考解答 首都师范大学2020年高等代数考研试题部分参考解答 同济大学2020年高等代数考研试题部分参考解答 同济大学2020年数学分析考研试题部分参考解答 中国科学技术大学2020年数学分析考研试题部分参考解答 原文地址:https://www.cnblogs.com/zhangzujin/p/12596393.html

大学数学专业试题499套及部分解答

这是目录. 链接见"跟锦考研" 微信公众号. 2020年02月16日发表的. 资料 考研竞赛教案2020.01-2022.07 华东师范大学数学分析第五版习题讲解 第1章; 第2章; 第3章; 第4章. 北京大学2009级解析几何期末试题 北京大学2010级解析几何期末试题 北京大学2020年数学分析3期末试题 北京大学2018-2019-1年数学分析期中试题 (第1套) 北京大学2018-2019-1年数学分析期中试题 (第2套) 北京大学2016-2017-1年高等代数期末试题 北

程序员找工作必备 PHP 基础面试题 (四)

程序员找工作必备 PHP 基础面试题? 程序员找工作必备 PHP 基础面试题(二)? 程序员找工作必备 PHP 基础面试题 (三) 一.在 HTTP1.0 中,状态吗 500 的含义的是什么?如果返回 “找不到文件” 的提示,则可用 header(函数),其语句为? 500 Internal Server Error 服务器遇到了意料不到的情况,不能完成客户的请求 Header(“ HTTP/1.0 404 NOT FOUND”); 二.数组函数 arsort()的作用是什么?语句 err_re