面试题二
面试题二
nacos与serviceconfig的区别
- nacos提供了UI界面,操作方便,config没有UI界面,通常需要配合git使用,动态变更还需要其他的消息件来配合使用
- 两者的者使用等量级不一样,nacos服务在一般的微服务项目中,config适用于大型的微服务项目中。
- nacos使用长连接配置,一旦配置变动,通知生产者过程十分的迅速,比config快很多
- config依赖git可以实现权限管理,nacos不具备
nacos注册中心和eurefig的区别
CAP理论:
- rureka只支持AP
- nacos支持AP和CP两种模式(实现依据是可以设置实例是否是短暂的还是长久的)
服务的剔除方式:
- E每隔30s发送一次心跳,默认情况下90s没有收到心跳,E会把服务从注册表中剔除。60s的清除下线时间间隔
- 极端情况下需要3分钟的时间,从异常到剔除完全不接受请求
- N的心跳默认5s,超过15s后设置为不健康的状态,但可以正常的接受请求
- 超30s服务会被删除
连接方式:
- N是长连接,E是短连接
操作实例的方式
- N对于实例的操作比E多,可以配置权重,监听等,与N比起来E的界面功能比较简单。
自我保护机制:
- 相同点: 保护的阈值都是0-1的范围
- 不同点:
- 保护的方式不同
E的保护方式:短时间内,统计失败的比例,达到一定到阈值,触发自我保护机制,在该机制下,E不会剔除任何服务,正常后,退出保护机制
N的保护机制:当健康的服务占总数的比例小于阈值的时候,无论是否健康,都会将这个实例返回给客户端,虽然损失了流量,但保护了集群的可用性。
- 范围不同
N的阈值是针对某个具体的Sevice的,不是所有的服务的,E的自我保护是针对所有的服务的
dubbo和openfeign的区别,优缺点?
相同点
- Dubbo 与 Feign 都依赖注册中心、负载均衡,作用是提供远程接口调用
不同点
- 协议不同
Dubbo:
支持多传输协议(Dubbo、Rmi、http、redis等等),可以根据业务场景选择最佳的方式。非常灵活。
Openfeign
基于Http传输协议,短连接,不适合高并发的访问
- 负载均衡
Dubbo:
支持4种算法(随机、轮询、活跃度、Hash一致性),而且算法里面引入权重的概念。
配置的形式不仅支持代码配置,还支持Dubbo控制台灵活动态配置。
负载均衡的算法可以精准到某个服务接口的某个方法。
Feign:
只支持N种策略:轮询、随机、ResponseTime加权。
负载均衡算法是Client级别的。
Nacos注册中心很好的兼容了Feign,Feign默认集成了Ribbon,所以在Nacos下使用Fegin默认就实现了负载均衡的效果。
- 容错机制
Dubbo:
支持多种容错策略:failover、failfast、brodecast、forking等,也引入了retry次数、timeout等配置参数。
Feign:
利用熔断机制来实现容错的,处理的方式不一样。