最后
光给面试题不给答案不是我的风格。这里面的面试题也只是凤毛麟角,还有答案的话会极大的增加文章的篇幅,减少文章的可读性
Java面试宝典2021版
最常见Java面试题解析(2021最新版)
2021企业Java面试题精选
Dubbo通过Token令牌防止用户绕过注册中心直连,然后在注册中心上管理授权。Dubbo 还提供服务黑白名单,来控制服务所允许的调用方。
在开发及测试环境下,经常需要绕过注册中心,只测试指定服务提供者,这时候可能需要点对点直连,点对点直联方式,将以服务接口为单位,忽略注册中心的提供者列表,
| Failsafe Cluster
失败安全,出现异常时,直接忽略。通常用于写入审计日志等操作。[AppleScript]纯文本查看复制代码?
服务注册中心,动态的注册和发现服务,使服务的位置透明,并通过在消费方获取服务提供方地址列表,实现软负载均衡和Failover,注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。注册中心负责服务地址的注册与查找,相当于目录服务,服务提供者和消费者只在启动时与注册中心交互,注册中心不转发请求,服务消费者向注册中心获取服务提供者地址列表,并根据负载算法直接调用提供者,注册中心,服务提供者,服务消费者三者之间均为长连接,监控中心除外,注册中心通过长连接感知服务提供者的存在,服务提供者宕机,注册中心将立即推送事件通知消费者注册中心和监控中心全部宕机,不影响已运行的提供者和消费者,消费者在本地缓存了提供者列表注册中心和监控中心都是可选的,服务消费者可以直连服务提供者。
- dubbo服务集群配置(集群容错模式)
在集群调用失败时,Dubbo 提供了多种容错方案,缺省为failover重试。可以自行扩展集群容错策略I Failover Cluster默认)
失败自动切换,当出现失败,重试其它服务器。(缺省)通常用于读操作,但重试会带来更长延迟。可通过retries="2"来设置重试次数(不含第一次)。
<dubbo:service retries=“2” cluster=“failover”/>
或:
<dubbo: reference retries=“2” cluster-“failover”/>
cluster="failove r"可以不用写,因为默认就是failover
| Failfast Cluster
快速失败,只发起一次调用,失败立即报错。通常用于非幂等性的写操作,
比如新增记录。
dubbo :service cluster=“failfast” />
或:
<dubbo: reference cluster=“failfast” />
cluster=“failfast"和把cluster=” failover"、retries=“0”
是一样的效果,retries="0"就是不重试
I Failsafe Cluster
失败安全,出现异常时,直接忽略。通常用于写入审计日志等操作。
<dubbo:service cluster=“failsafe” />
或:
<dubbo: reference cluster=“failsafe” />
| Failback Cluster
失败自动恢复,后台记录失败请求,定时重发。通常用于消息通知操作。
<dubbo: service cluster=" failback" />
或:
<dubbo: reference clus ter=" failback" />
I Forking Cluster
并行调用多个服务器,只要一个成功即返回。通常用于实时性要求较高的读操作,但需要浪费更多服务资源。可通过forks= “2"来设置最大并行数。
<dubbo: service cluster=" forking" forks=“2” />
或:
<dubbo: reference cluster=" forking" forks=“2”/>
|配置
服务端服务级别
<dubbo: service interface=“…” loadbalance=" roundrobin" />
客户端服务级别
<dubbo: reference interface=“. .。” Loadba lance=" round rob in"
服务端方法级别
<dubbo:service interface=“… .”> <dubbo meth
od name=“… .” Loadbalance
客户端方法级别
<dubbo: reference interface=“… .”> <dubbo : method name=“. .。”Loadba lance=”
-
dubbo 通信协议dubbo协议为什么要消费者比提供者个数多:因dubbo协议采用单- -长连接,假设网络为千兆网卡(1024Mbit= 128MByte),根据测试经验数据每条连接最多只能压满7MByte(不同的环境可能不一样,供参考),理论上1个服务提供者需要20个服务消费者才能压满网卡。
-
dubbo 通信协议dubbo协议为什么不能传大包:因dubbo协议采用单-长连接,如果每次请求的数据包大小为500KByte,假设网络为千兆网卡(1024Mbit= 128MByte),每条连接最大7MByte(不同的环境可能不一样,供参考),单个服务提供者的TPS(每秒处理事务数)最大为:128MByte / 500KByte= 262。单个消费者调用单个服务提供者的TPS(每秒处理事务数)最大为:7MByte/ 500KByte= 14。如果能接受,可以考虑使用,否则网络将成为瓶颈。
-
dubbo 通信协议dubbo协议为什么采用异步单一长连接:因为服务的现状大都是服务提供者少,通常只有几台机器,而服务的消费者多,可能整个网站都在访问该服务,比如Morgan的提供者只有6台提供者,却有上百台消费者,每天有1.5亿次调用,如果采用常规的hessian服务,服务提供者很容易就被压跨,通过单- -连接,保证单-消费者不会压死提供者,长连接, 减少连接握手验证等,并使用异步 I0,复用线程池,防止C10K问题。
-
dubbo 通信协议dubbo协议适用范围和适用场景适用范围:传入传出参数数据包较小(建议小于100K),消费者比提供者个数多,单一消费者无法压满提供者,尽量不要用dubbo协议传输大文件或超大字符串。适用场景:常规远程服务方法调用dubbo协议补充:连接个数:单连接连接方式:长连接传输协议:TCP传输方式:NIO异步传输序列化:Hessian二进制序列化
-
RMI协议RMI协议采用JDK标准的java.mi.实现,采用阻塞式短连接和JDK标准序列化方式,Java 标准的远程调用协议。连接个数:多连接连接方式:短连接传输协议:TCP传输方式:同步传输序列化:Java标准二进制序列化适用范围:传入传出参数数据包大小混合,消费者与提供者个数差不多,可传文件。适用场景:常规远程服务方法调用,与原生RMI服务互操作
最后
即使是面试跳槽,那也是一个学习的过程。只有全面的复习,才能让我们更好的充实自己,武装自己,为自己的面试之路不再坎坷!今天就给大家分享一个Github上全面的Java面试题大全,就是这份面试大全助我拿下大厂Offer,月薪提至30K!
我也是第一时间分享出来给大家,希望可以帮助大家都能去往自己心仪的大厂!为金三银四做准备!
一共有20个知识点专题,分别是:
Dubbo面试专题
JVM面试专题
Java并发面试专题
Kafka面试专题
MongDB面试专题
MyBatis面试专题
MySQL面试专题
Netty面试专题
RabbitMQ面试专题
Redis面试专题
Spring Cloud面试专题
SpringBoot面试专题
zookeeper面试专题
常见面试算法题汇总专题
计算机网络基础专题
设计模式专题
[外链图片转存中…(img-ueawSaUR-1714903462447)]
设计模式专题
[外链图片转存中…(img-KhF60y2p-1714903462447)]