1,客户调用客户端辅助对象stub上的方法
2,客户端辅助对象stub打包调用信息(变量,方法名 ,因此这里就要求对象类继承Serializable接口,进行序列化),通过网络发送给服务端辅助对象skeleton(通过httpclient或者httpconnection传输)
3,服务端辅助对象skeleton将客户端辅助对象发送来的信息解包,找出真正被调用的方法以及该方法所在对象
4,调用真正服务对象上的真正方法,并将结果返回给服务端辅助对象skeleton
5,服务端辅助对象将结果打包,发送给客户端辅助对象stub
6,客户端辅助对象将返回值解包(反序列化),通过response流返回给调用者
优点:效率高 缺点:配置较多,方法不够透明
1. 服务容器负责启动,加载,运行服务提供者。
2. 服务提供者(provider)在启动时,向注册中心(zookepper)注册自己提供的服务。
3. 服务消费者在启动时,向注册中心订阅自己所需的服务。
4. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
5. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
6. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。
7. 注册中心,服务提供者,服务消费者三者之间均为长连接,监控中心除外
8. 注册中心通过长连接感知服务提供者的存在,服务提供者宕(dang)机,注册中心将立即推送事件通知消费者
9. 注册中心和监控中心全部宕机,不影响已运行的提供者和消费者,消费者在本地缓存了提供者列表
(2)、dubbo原理
consumer和provider是框架中必然存在的,Registry(zookepper)做为全局配置信息管理模块,推荐生产环境使用Registry,可实时推送现存活的服务提供者,Monitor(dubbo-admin apache dubbo开源项目2.6.1版本前)一般用于监控和统计RPC调用情况、成功率、失败率等情况,让开发及运维了解线上运行情况。
优势
1、透明化的远程方法调用
2、像调用本地方法一样调用远程方法;只需简单配置,没3有任何API侵入。
3、软负载均衡及容错机制
4、可在内网替代nginx lvs等硬件负载均衡器。
5、服务注册中心自动注册 & 配置管理
6、不需要写死服务提供者地址,注册中心基于接口名自动查询提供者ip。
7、使用类似zookeeper等分布式协调服务作为服务注册中心,可以将绝大部分项目配置移入zookeeper集群。
8、服务接口监控与治理
9、Dubbo-admin与Dubbo-monitor提供了完善的服务接口管理与监控功能,针对不同应用的不同接口,可以进行 多版本,多协议,多注册中心管理。
劣势
(3)、DubboDemo下载地址:https://github.com/zhaoyuan1209/DubboDemo.git
1、新建父级Maven项目为子项目继承和管理jar包
,接口等,同时在父级项目中引入的有spring, dubbo, zookeeper等jar包。
1、项目运行的时候需要启动spring容器,zookepper,并配置好dubbo-admin
1、dubbo master和2.6.x分支上是没有dubbo-admin项目的
2、dubbo配置在tomcat中,tomcat版本使用tomcat7