没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
@TOC
1.微服务篇
1.1.SpringCloud常见组件有哪些?
问题说明:这个题目主要考察对SpringCloud的组件基本了解
难易程度:简单
参考话术:
SpringCloud包含的组件很多,有很多功能是重复的。其中最常用组件包括:
•注册中心组件:Eureka、Nacos等
•负载均衡组件:Ribbon
•远程调用组件:OpenFeign
•网关组件:Zuul、Gateway
•服务保护组件:Hystrix、Sentinel
•服务配置管理组件:SpringCloudConfig、Nacos
1.2.Nacos的服务注册表结构是怎样的?
问题说明:考察对Nacos数据分级结构的了解,以及Nacos源码的掌握情况
难易程度:一般
参考话术:
Nacos采用了数据的分级存储模型,最外层是Namespace,用来隔离环境。然后是Group,用来对服务
分组。接下来就是服务(Service)了,一个服务包含多个实例,但是可能处于不同机房,因此Service
下有多个集群(Cluster),Cluster下是不同的实例(Instance)。
对应到Java代码中,Nacos采用了一个多层的Map来表示。结构为Map<String, Map<String,
Service>>,其中最外层Map的key就是namespaceId,值是一个Map。内层Map的key是group拼接
serviceName,值是Service对象。Service对象内部又是一个Map,key是集群名称,值是Cluster对象。
而Cluster对象内部维护了Instance的集合。
如图:
1.3.Nacos如何支撑阿里内部数十万服务注册压力?
问题说明:考察对Nacos源码的掌握情况
难易程度:难
参考话术:
Nacos内部接收到注册的请求时,不会立即写数据,而是将服务注册的任务放入一个阻塞队列就立即响
应给客户端。然后利用线程池读取阻塞队列中的任务,异步来完成实例更新,从而提高并发写能力。
1.4.Nacos如何避免并发读写冲突问题?
问题说明:考察对Nacos源码的掌握情况
难易程度:难
参考话术:
Nacos在更新实例列表时,会采用CopyOnWrite技术,首先将旧的实例列表拷贝一份,然后更新拷贝的
实例列表,再用更新后的实例列表来覆盖旧的实例列表。
这样在更新的过程中,就不会对读实例列表的请求产生影响,也不会出现脏读问题了。
1.5.Nacos与Eureka的区别有哪些?
问题说明:考察对Nacos、Eureka的底层实现的掌握情况
难易程度:难
参考话术:
Nacos与Eureka有相同点,也有不同之处,可以从以下几点来描述:
接口方式:Nacos与Eureka都对外暴露了Rest风格的API接口,用来实现服务注册、发现等功能
实例类型:Nacos的实例有永久和临时实例之分;而Eureka只支持临时实例
健康检测:Nacos对临时实例采用心跳模式检测,对永久实例采用主动请求来检测;Eureka只支持
心跳模式
服务发现:Nacos支持定时拉取和订阅推送两种模式;Eureka只支持定时拉取模式
1.6.Sentinel的限流与Gateway的限流有什么差别?
问题说明:考察对限流算法的掌握情况
难易程度:难
参考话术:
限流算法常见的有三种实现:滑动时间窗口、令牌桶算法、漏桶算法。Gateway则采用了基于Redis实
现的令牌桶算法。
而Sentinel内部却比较复杂:
默认限流模式是基于滑动时间窗口算法
排队等待的限流模式则基于漏桶算法
而热点参数限流则是基于令牌桶算法
Hystix默认是基于线程池实现的线程隔离,每一个被隔离的业务都要创建一个独立的线程池,线程过多
会带来额外的CPU开销,性能一般,但是隔离性更强。
Sentinel是基于信号量(计数器)实现的线程隔离,不用创建线程池,性能较好,但是隔离性一般。
2.MQ篇
2.1.你们为什么选择了RabbitMQ而不是其它的MQ?
如图:
话术:
kafka是以吞吐量高而闻名,不过其数据稳定性一般,而且无法保证消息有序性。我们公司的日志收集也
有使用,业务模块中则使用的RabbitMQ。
阿里巴巴的RocketMQ基于Kafka的原理,弥补了Kafka的缺点,继承了其高吞吐的优势,其客户端目前
以Java为主。但是我们担心阿里巴巴开源产品的稳定性,所以就没有使用。
RabbitMQ基于面向并发的语言Erlang开发,吞吐量不如Kafka,但是对我们公司来讲够用了。而且消息
可靠性较好,并且消息延迟极低,集群搭建比较方便。支持多种协议,并且有各种语言的客户端,比较
灵活。Spring对RabbitMQ的支持也比较好,使用起来比较方便,比较符合我们公司的需求。
综合考虑我们公司的并发需求以及稳定性需求,我们选择了RabbitMQ。
剩余26页未读,继续阅读
资源评论
BridgeCloud
- 粉丝: 3497
- 资源: 39
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Object-C(通常简写为ObjC或OC)是一种扩充C的面向对象编程语言,它在许多方面都有着显著的特点和优势 以下是对Obje
- Fortran是一种历史悠久的编程语言,自1954年诞生以来,在科学和工程计算领域发挥了巨大的作用 以下是对Fortran的50
- MATLAB是一款功能强大的数学计算软件,广泛应用于科学计算、数据分析、图像处理、控制系统等领域 以下是对MATLAB的500字
- 基于OpenCV和tinker的指纹识别系统使用的硬件为AS608源码.zip
- 20个城市公交站点及线路数据shp矢量格式北京成都大连福州广州杭州合肥济南、南京青岛
- Android Media-使用MediaPlayer播放SD卡中的音频
- Swift,作为苹果公司于2014年WWDC(苹果开发者大会)上发布的一种全新的编程语言,自诞生以来就受到了广泛的关注和喜爱 以
- 全国30省份各省数字乡村发展水平得分排名(2011-2019年)
- 当您提到“oython”时,我猜测您可能是指“Python”这个流行的编程语言 以下是对Python的500字资源介绍: Py
- 面板熵值法Stata程序、熵权法Stata程序【代码+案例】 便宜啦
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功