dubbo

dubbo通过官网学习 http://dubbo.apache.org/en-us/ 
 
一.陌生的名词解释:
SPI:service provider interface 服务提供机制
Hessian: 是一个轻量级的RPC框架, 它基于HTTP协议传输
RPC :Romote Procedure Call    远程过程调用 ,通过网络从远程计算机上请求某种服务, 代表:dubbo
RMI: Remote Method Invocation 远程方法调用 能够让在客户端Java虚拟机上的对象像调用本地对象一样调用服务端java 虚拟机中的对象上的方法。 使用代表:EJB
调用过程:
 
RMI和RPC的区别
1.方法调用方式不同
2.适用语言范围不同
RMI只用于Java,支持传输对象。
RPC是基于C语言的,不支持传输对象,是网络服务协议,与操作系统和语言无关。
3 .调用结果的返回形式不同:
RMI是面向对象的,Java是面向对象的,所以RMI的调用结果可以是对象类型或者基本数据类型。
RPC的结果统一由 外部数据表示(External Data Representation,XDR)语言 表示,这种语言抽象了字节序类和数据类型结构之间的差异。只有由XDR定义的数据类型才能被传递,
可以说RMI是面向对象方式的Java RPC。
 
Memcache:和Redis类似,都是内存数据库,不过memcache还可以缓存其他东西,eg视频,图片
二.dubbo能做什么
1 透明化的远程方法调用,就像调用自己本地的方法一样调用远程方法,只需要简单配置,没有任何API的侵入
2.软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,降低成本,减少单点
3.服务自动注册与发现,不再需要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,并且可以平滑的添加删除服务提供者。
 
优点:
使用 Dubbo 进行远程调用实现服务交互,它支持多种协议,如 Hessian HTTP RMI Memcached Redis 等等。由于 Dubbo 将这些协议的实现进行了封装了,无论是服务端(开发服务)还是客户端(调用服务),都不需要关心协议的细节,只需要在配置中指定使用的协议即可,从而保证了服务提供方与服务消费方之间的透明。
三.dubbo结构流程                                                          
                                                                   初始化           异步              同步
Provider:暴露服务的提供者   Consumer:调用远程服务的消费者
Monitor:统计服务的调用次调和调用时间的监控中心  Register:服务的注册中心 Container:服务运行容器
0.负责启动加载运行服务provider
1.服务提供者在启动时,向注册中心注册自己提供的服务
2.服务消费者在启动时,向注册中心订阅自己所需的服务。
3注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
4.服务消费者,从提供者地址列表中,基于负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
5.服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。