面试 - Dubbo

原创
2020/02/24 16:50
阅读数 127

Dubbo默认使用的是什么通信框架?
Netty

Dubbo的序列化?
dubbo序列化,阿里尚不成熟的java序列化实现。
hessian2序列化:hessian是一种跨语言的高效二进制的序列化方式,但这里实际不是原生的hessian2序列化,而是阿里修改过的hessianlite,它是dubboRPC默认启用的序列化方式。
json序列化:目前有两种实现,一种是采用的阿里的fastjson库,另一种是采用dubbo中自已实现的简单json库,一般情况下,json这种文本序列化性能不如二进制序列化。
java序列化:主要是采用JDK自带的java序列化实现,性能很不理想。

Dubbo的调用关系?
提供者启动时,向注册中心注册自己提供的服务。
消费者启动时,向注册中心订阅自己所需的服务。
注册中心返回提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
消费者,从远程接口列表中,调用远程接口,dubbo会基于负载均衡算法,选一台提供者进行调用,如果调用失败则选择另一台。
消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。

Dubbo中ZooKeeper做注册中心,如果注册中心集群都挂掉,发布者和订阅者之间还能通信么?
注册中心对等集群,任意一台宕掉后,会自动切换到另一台。
注册中心全部宕掉,服务提供者和消费者仍可以通过本地缓存通讯。
服务提供者无状态,任一台宕机后,不影响使用。
服务提供者全部宕机,服务消费者会无法使用,并无限次重连等待服务者恢复。

Dubbo在安全机制方面是如何解决的?
Dubbo通过Token令牌防止用户绕过注册中心直连,然后在注册中心上管理授权。Dubbo还提供服务黑白名单,来控制服务所允许的调用方。

Dubbo超时和重连机制?
Dubbo启动时默认有重试机制和超时机制。
超时机制的规则是如果在一定的时间内,provider没有返回,则认为本次调用失败,重试机制在出现调用失败时,会再次调用。如果在配置的调用次数内都失败,则认为此次请求异常,抛出异常。

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部