面试题之微服务互联网
- 1.什么是微服务?微服务设计的特点?
- 2.微服务的关键组件?
- 3.如何理解服务注册中心?常用的注册中心?
- 4.Nacos如何检查服务状态?
- 5.注册中心用了什么设计模式
- 6.服务之间进行服务调用时,使用了什么API?
- 7.RestTemplate对象使用到了什么设计模式?
- 8.LoadBalancerClient对象的作用是什么?
- 9.基于RestTemplate实现服务调用过程是怎样的?
- 10.LoadBalanceClient对象的作用?它的具体实现是谁?
- 11.Ribbon是什么?可以解决什么问题?
- 12.@LoadBalanced 注解的作用?
- 13.负载均衡的算法?
- 14.如何理解Feign的?如何使用?
- 15.什么是配置中心?为什么要使用配置中心?一般配置什么内容?
- 16.项目中为什么要定义bootstrap.yml文件?
- 17.Ribbon内置的负载均衡策略有哪些?![请添加图片描述](https://i-blog.csdnimg.cn/blog_migrate/9cc38165ae8b50aae211a611d4c03d99.png)
- 18.Feign调用过程分析
- 19.请求传到Tomcat后,这个Web服务器是如何处理请求的?
- 20.Sentinel是什么?类似的产品还有什么?
- 21.Sentinel是如何对请求进行限流的?
- 22.Sentinel中的限流算法?
- 23.Sentinel默认的限流算法是什么?
- 24.Sentinel中的阈值应用类型?
- 25.什么是降流熔断?为什么要进行熔断?
- 26.Sentinel中限流,降流的异常父类是谁?
- 27.Sentinel出现降流熔断时,系统抛出的异常是谁?
- 28.Sentinel中异常处理接口是谁?
- 29.Sentinel中异常处理接口下默认的实现类为?
- 30.如何自定义Sentinel中异常处理?
- 31.Sentinel熔断降流策略有哪些?
- 32.如何理解热点数据?
- 33.热点数据的限流规则是怎样的?
- 34.对于热点数据访问出现限流以后底层异常是什么?
- 35.如何理解Sentinel中的系统规则?
- 36.Sentinel的常用系统规则有哪些?
- 37.Sentinel系统保护规则触发以后会抛出什么异常?
- 38.Sentinel如何识别黑白名单?
- 39.授权规则中RequestOriginParser类的作用是什么?
- 40. 什么是网关?为什么要使用api网关?
- 41.了解哪些API网关过滤器?
- 42.网关进行请求转发的流程是怎样,有哪些关键对象?
- 43.Redis是什么?
- 44.Redis数据库的基本架构?
- 45.Redis有哪些基础指令?
- 46.Redis中字符串类型有什么特点?
- 47.操作字符串类型的常用指令?
- 48.哈希类型(hash)数据有什么特征?
- 49.哈希类型的常用指令?
- 50.列表类型(list)数据有什么特征?
- 51.列表类型(list)数据有什么特性?
- 52.操作列表类型(list)类型的常用指令?
- 53.Set类型数据的特性?
- 54.操作set类型的常用指令?
- 55.Jedis常用API有哪些?
- 56.Jedis如何存储POJO对象到redis?
- 57.JedisPool是什么?
1.什么是微服务?微服务设计的特点?
对系统分而治,解决因并发访问过大带来的系统复杂性(例如:开发、测试、升级、可靠性等等),单一职责,独立进程,开发测试效率高,可靠性高,升级难度小,但会带来一定的维护成本
2.微服务的关键组件?
服务的注册,发现,配置中心(Nacos)、限流降流(Senttinel)、访问入口管理(Gateway)、分布式事务管理
3.如何理解服务注册中心?常用的注册中心?
存储服务信息的一个服务,也可以理解为一个中介(Zookeeper、Nacos、Consul、Euker)
4.Nacos如何检查服务状态?
通过心跳包实现,服务启动时会定时想nacos发送心跳包-Beatinfo
5.注册中心用了什么设计模式
中介者模式
6.服务之间进行服务调用时,使用了什么API?
RestTemplate,用此对象之前要先创建这个对象并交给spring管理
7.RestTemplate对象使用到了什么设计模式?
模板方法模式
8.LoadBalancerClient对象的作用是什么?
服务实例的获取
9.基于RestTemplate实现服务调用过程是怎样的?
10.LoadBalanceClient对象的作用?它的具体实现是谁?
从nacos获取服务实例,然后在本地负载均衡,描述RestTemplate对象,用于告诉Spring框架,在使用RestTempalte进行服务调用时,这个调用过程会被一个拦截器进行拦截,然后再拦截器内部,启动负载均衡策略
具体实现:RibbonLoadBalancerClient
11.Ribbon是什么?可以解决什么问题?
一个负载均衡组件,此组件中定义了一些负载均衡的算法
基于负载均衡策略进行服务调用,所有策略都会实现IRule接口
12.@LoadBalanced 注解的作用?
(描述RestTemplate对象,让底层为此对象赋能)
13.负载均衡的算法?
随机、轮询、hash、重试
14.如何理解Feign的?如何使用?
feign是远程服务调用对象,基于声明式服务调用的定义即可
通过依赖,配置,接口,熔断处理,底层代理
15.什么是配置中心?为什么要使用配置中心?一般配置什么内容?
存储项目配置新的一个服务,这个服务可以实现配置的动态发布和更新
集中管理配置信息,动态发布配置信息,服务自动感知配置,提高服务可用性
可能会经常变化的配置信息,例如连接池,日志,线程池,限流熔断规则
16.项目中为什么要定义bootstrap.yml文件?
此文件被读取的优先级比较高。可以在服务启动时读取配置中心的数据
17.Ribbon内置的负载均衡策略有哪些?
18.Feign调用过程分析
1.通过@EnableFeignCleints注解告诉Springcloud,启动后Feign Starter组件
2.Feign Starter会在项目启动过程中注册全局配置,扫描包下所有@FeignClientzhujie注解描述的接口,然后由系统底层创建接口实现类(JDK代理类),并构建类的对象,然后交给spring管理(注册IOC容器)
3.Feign接口被调用时,底层代理对象会将接口中的请求信息通过编码器创建Resquest对象,基于此对象进行远程调用
4.Feign客户端请求对象会经Ribbon进行负载均衡,筛选出一个健康的Server实例(instance)
5.Feign客户端会携带Request调用元旦服务并返回一个响应
6.Feign客户端对象对Response信息进行解析然后返回客户端
19.请求传到Tomcat后,这个Web服务器是如何处理请求的?
20.Sentinel是什么?类似的产品还有什么?
是一个流量控制凭条,防卫兵,hystrix
21.Sentinel是如何对请求进行限流的?
基于sentinel依赖提供的拦截器
22.Sentinel中的限流算法?
计数器、令牌桶、漏斗算法、滑动窗口算法
23.Sentinel默认的限流算法是什么?
滑动窗口算法
24.Sentinel中的阈值应用类型?
QPS(每秒限流),线程数
25.什么是降流熔断?为什么要进行熔断?
让外部应用停止对服务的访问,生活中的跳闸,路障设置,此路不通
平均每响应速度越来越满或经常出现异常,这样可能会导致调用链堆积,最终系统崩溃
26.Sentinel中限流,降流的异常父类是谁?
BlockException
27.Sentinel出现降流熔断时,系统抛出的异常是谁?
DegradeException
28.Sentinel中异常处理接口是谁?
(BlockExceptionHandler)
29.Sentinel中异常处理接口下默认的实现类为?
(DefaultBlockExceptionHandler)
30.如何自定义Sentinel中异常处理?
直接或间接实现BlockExceptionHandler
31.Sentinel熔断降流策略有哪些?
慢调用比例,异常比例,异常数
32.如何理解热点数据?
访问频度比较高的数据,某些商品,谋篇文章,某个视频
33.热点数据的限流规则是怎样的?
主要是针对参数进行限流设计
34.对于热点数据访问出现限流以后底层异常是什么?
ParamFlowException
35.如何理解Sentinel中的系统规则?
是对所有链路的控制规则,是一种系统保护策略
36.Sentinel的常用系统规则有哪些?
RT QPS CPU 线程 Load-linux unix
37.Sentinel系统保护规则触发以后会抛出什么异常?
SystemBlockException
38.Sentinel如何识别黑白名单?
在拦截器中通过调用RequestOriginParser对象的方法检测具体的规则
39.授权规则中RequestOriginParser类的作用是什么?
对流控应用值进行解析,检查服务访问时传入的值是否与RequestOriginParser的parseOrigin方法返回值是否相同
40. 什么是网关?为什么要使用api网关?
流量的一个入口,类似生活中的“海关”
统一url访问,服务保护,统一身份认证,统一跨域设计
41.了解哪些API网关过滤器?
GatewayFilter-局部过滤器,GlobalFilter-全局过滤器
42.网关进行请求转发的流程是怎样,有哪些关键对象?
客户端向Spring Cloud Gateway发出请求。 如果Gateway Handler Mapping 通过谓词predicates(predicates)的集合确定请求与路由(Routers)匹配,则将其发送到Gateway Web Handler。 Gateway Web Handler 基于路由配置调用过滤链中的过滤器(也就是所谓的责任链模式)进一步的处理请求。 Filter由虚线分隔的原因是, Filter可以在发送请求之前和之后执行拓展逻辑。基于官方的处理流程,进行源码分析如下
43.Redis是什么?
分布式Key/Value结构的内存数据库,非关系型数据,NoSql数据库
44.Redis数据库的基本架构?
C/S,redis-cli,redis-server
45.Redis有哪些基础指令?
redis-cli,redis-server,exit,clear,type,expire,shutdown,help,keys,flushall,flushdb
46.Redis中字符串类型有什么特点?
所有值都是字符串,空间动态分配,可以实现整数值的递增,递减,实现日志记录
47.操作字符串类型的常用指令?
set
get
strlen
append
mset
mget
incr
incrby
decr
decrby
del
setnx
48.哈希类型(hash)数据有什么特征?
就是值还可以使用key/value结构存储,key无序,key相同值覆盖,存储对象方便
49.哈希类型的常用指令?
hset,hget,hgetall,hexits,hdel,hkeys,hvals,hincrby,hmget
50.列表类型(list)数据有什么特征?
链表,会记录添加的元素的顺序,元素允许重复,可以实现FIFO,FILO这些特征
51.列表类型(list)数据有什么特性?
(链表,会记录添加的元素的顺序,元素允许重复,可以实现FIFO,FILO这些特性)
52.操作列表类型(list)类型的常用指令?
(lpush,rpop,rpush,lpop,lrem,lindex,ltrim,lset,linsert,lrange,rpoplpush,lpos)
53.Set类型数据的特性?
(散列,不记录元素添加顺序,不允许元素重复)
54.操作set类型的常用指令?
(sadd,smembers,spop,smove,scard,sunion)
55.Jedis常用API有哪些?
Jedis,JedisPool,JedisPoolConfig
56.Jedis如何存储POJO对象到redis?
将对象转换成json对象,将对象以Hash形式进行存储
57.JedisPool是什么?
一个Jedis连接池镀锡,所有池对象都有一种享元设计