1.Dubbo是什么?
Dubbo 是一个分布式、高性能、透明化的 RPC 服务框架,提供服务自动注册、自动发现等高效服务治理方案, 可以和 Spring 框架无缝集成。
RPC 指的是远程调用协议,也就是说两个服务器交互数据。
2.Dubbo的由来?
互联网的快速发展,Web应用程序的规模不断扩大,一般会经历如下四个发展阶段。
单一应用架构
当网站流量很小时,只需一个应用, 将所有功能都部署在一起即可。
垂直应用架构
当访问量逐渐增大,单一应用按照有业务线 拆成多个应用 ,以提升效率。
此时,用于加速前端页面开发的 Web框架(MVC) 是关键。
分布式服务架构
当垂直应用越来越多,应用之间交互不可避免, 将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心 ,使前端应用能更快速的响应多变的市场需求。
此时,用于提高业务复用及整合的 分布式服务框架(RPC) 是关键。
流动计算架构
当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现, 此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率 。
此时,用于提高机器利用率的 资源调度和治理中心(SOA) 是关键。
3.Dubbo的主要应用场景?
透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入。
软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,降低成本,减少单点。
服务自动注册与发现,不再需要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加或删除服务提供者。
4.Dubbo的核心功能?
主要就是如下3个核心功能:
5.Dubbo的核心组件?
6.Dubbo服务注册与发现的流程?
流程说明:
设计的原因:
image
7.Dubbo的架构设计?
Dubbo框架设计一共划分了10个层:
服务接口层(Service) :该层是与实际业务逻辑相关的,根据服务提供方和服务消费方的业务设计对应的接口和实现。
配置层(Config) :对外配置接口,以ServiceConfig和ReferenceConfig为中心。
服务代理层(Proxy ):服务接口透明代理,生成服务的客户端Stub和服务器端Skeleton。
服务注册层(Registry) :封装服务地址的注册与发现,以服务URL为中心。
集群层(Cluster) :封装多个提供者的路由及负载均衡,并桥接注册中心,以Invoker为中心。
监控层(Monitor) :RPC调用次数和调用时间监控。
远程调用层(Protocol) :封将RPC调用,以Invocation和Result为中心,扩展接口为Protocol、Invoker和Exporter。
信息交换层(Exchange) :封装请求响应模式,同步转异步,以Request和Response为中心。
网络传输层(Transport) :抽象mina和netty为统一接口,以Message为中心。
8.Dubbo的服务调用流程?
9.Dubbo支持哪些协议,每种协议的应用场景,优缺点?
10.dubbo推荐用什么协议?
默认使用dubbo协议
11.Dubbo有些哪些注册中心?
Java架构/分布式:705127209(大牛交流群)没有开发经验勿加!
12.Dubbo的服务治理?
过多的服务URL配置困难
负载均衡分配节点压力过大的情况下也需要部署集群
服务依赖混乱,启动顺序不清晰
过多服务导致性能指标分析难度较大,需要监控
13.Dubbo的注册中心集群挂掉,发布者和订阅者之间还能通信么?
可以的,启动dubbo时,消费者会从zookeeper拉取注册的生产者的地址接口等数据,缓存在本地。
每次调用时,按照本地存储的地址进行调用。
Java架构/分布式:705 127 209釦 㪊(大牛架构圈子)
Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可,Dubbo基于Spring的Schema扩展进行加载。
15.Dubbo使用的是什么通信框架?
默认使用NIO Netty框架
16.Dubbo集群提供了哪些负载均衡策略?
缺省时为Random随机调用
17.Dubbo的集群容错方案有哪些?
18.Dubbo的默认集群容错方案?
Failover Cluster
19.Dubbo支持哪些序列化方式?
默认使用Hessian序列化,还有Duddo、FastJson、Java自带序列化。
20.Dubbo超时时间怎样设置?
Dubbo超时时间设置有两种方式:
21.服务调用超时问题怎么解决?
dubbo在调用服务不成功时,默认是会重试两次的。
22.Dubbo在安全机制方面是如何解决?
Dubbo通过Token令牌防止用户绕过注册中心直连,然后在注册中心上管理授权。Dubbo还提供服务黑白名单,来控制服务所允许的调用方。
23.dubbo 和 dubbox 之间的区别?
dubbox 基于 dubbo 上做了一些扩展,如加了服务可 restful 调用,更新了开源组件等。
24.除了Dubbo还有哪些分布式框架?
大家熟知的就是Spring cloud,当然国外也有类似的多个框架。
25.Dubbo和Spring Cloud的关系?
Dubbo
是 SOA 时代的产物,它的关注点主要在于服务的调用,流量分发、流量监控和熔断。而 Spring Cloud
诞生于微服务架构时代,考虑的是微服务治理的方方面面,另外由于依托了 Spirng、Spirng Boot
的优势之上,两个框架在开始目标就不一致,Dubbo 定位服务治理、Spirng Cloud 是一个生态。
26.dubbo和spring cloud的区别?
最大的区别:Dubbo底层是使用Netty这样的NIO框架,是基于TCP协议传输的,配合以Hession序列化完成RPC通信。
而SpringCloud是基于Http协议+Rest接口调用远程过程的通信,相对来说,Http请求会有更大的报文,占的带宽也会更多。但是REST相比RPC更为灵活,服务提供方和调用方的依赖只依靠一纸契约,不存在代码级别的强依赖,这在强调快速演化的微服务环境下,显得更为合适,至于注重通信速度还是方便灵活性,具体情况具体考虑。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69912582/viewspace-2648872/ ,如需转载,请注明出处,否则将追究法律责任。