“dubbo概念*dubbo框架结构(角色介绍、执行流程、支持协议、支持的注册中心、组件选型和成熟度)*Dubbo入门案例”
昨天面试某银行,问到dubbo,这块一直没了解的太深,结果被夺命四连(dubbo如何实现异步操作?dubbo实现老旧接口共存的问题?dubbo降级?项目里dubbo使用的什么协议?),应该是被淘汰出局了,痛定思痛,想想的确是用了这么久的dubbo,却一直流于表面,应该系统的来学习下。
01
—
dubbo概念
首先还是给出dubbo的官网:
http://dubbo.apache.org/zh-cn/
*dubbo介绍
官方网站 : http://dubbo.apache.org/
Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的RPC实现服务的输出和输入功能,可以和Spring框架无缝集成。Dubbo框架,是基于容器运行的.。容器是Spring。阿里巴巴已经将dubbo框架捐献给了Apache软件基金会。
Apache Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务的自动注册和发现。
- RMI——Remote Method Invoke:调用远程的方法。“方法”一般是附属于某个对象上的,所以通常RMI指对在远程的计算机上的某个对象,进行其方法函数的调用。
本地存根(Stub)
服务端的骨架对象(Skeleton)
-RPC——Remote Procedure Call:远程过程调用。指的是对网络上另外一个计算机上的,某段特定的函数代码的调用。
**传输协议**
-RPC,可以基于TCP协议,也可以基于HTTP协议
-HTTP,基于HTTP协议
**传输效率**
-RPC,使用自定义的TCP协议,可以让请求报文体积更小,或者使用HTTP2协议,也可以很好的减少报文的体积,提高传输效率
-HTTP,如果是基于HTTP1.1的协议,请求中会包含很多无用的内容,如果是基于HTTP2.0,那么简单的封装以下是可以作为一个RPC来使用的,这时标准RPC框架更多的是服务治理
**性能消耗**
-RPC,可以基于thrift实现高效的二进制传输
-HTTP,大部分是通过json来实现的,字节大小和序列化耗时都比thrift要更消耗性能
**负载均衡**
-RPC,基本都自带了负载均衡策略
-HTTP,需要配置Nginx,HAProxy来实现
**服务治理**
-RPC,能做到自动通知,不影响上游
-HTTP,需要事先通知,修改Nginx/HAProxy配置
RPC主要用于公司内部的服务调用,性能消耗低,传输效率高,服务治理方便。HTTP主要用于对外的异构环境,浏览器接口调用,APP接口调用,第三方接口调用等。
*dubbo产生的背景
随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进。
dubbo处于分布式服务架构那一层。
02
—
dubbo框架结构
*registry
注册中心. 是用于发布和订阅服务的一个平台.用于替代SOA结构体系框架中的ESB服务总线的。
1.发布