dubbo学习心得

1.dubbo简介

Apache Dubbo 是一款高性能的 Java RPC 框架。其前身是阿里巴巴公司开源的、轻量级的开源 Java RPC
框架,可以和 Spring 框架无缝集成, 2018 年阿里巴巴把这个框架捐献给了 apache 基金会
什么是 RPC
RPC 全称为 remote procedure call ,即 远程过程调用 。比如两台服务器 A B A 服务器上部署一个应 用,B 服务器上部署一个应用, A 服务器上的应用想调用 B 服务器上的应用提供的方法,由于两个应用不 在一个内存空间,不能直接调用,所以需要通过网络来表达调用的语义和传达调用的数据。
需要注意的是 RPC 并不是一个具体的技术,而是指整个网络远程调用过程。
RPC 是一个泛化的概念,严格来说一切远程过程调用手段都属于 RPC 范畴。各种开发语言都有自己的 RPC框架。 Java 中的 RPC 框架比较多,广泛使用的有 RMI Hessian Dubbo 等。
Dubbo 官网地址: http://dubbo.apache.org
Dubbo 提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。

2.dubbo架构

 节点角色说明:

 

 

虚线都是异步访问,实线都是同步访问 蓝色虚线 : 在启动时完成的功能 红色虚线 ( 实线 ) 都是程序运行过 程中执行的功能
调用关系说明 :
0. 服务容器负责启动,加载,运行服务提供者。
1. 服务提供者在启动时,向注册中心注册自己提供的服务。
2. 服务消费者在启动时,向注册中心订阅自己所需的服务。
3. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
4. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失
败,再选另一台调用。
5. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。

3.服务注册中心Zookeeper

通过前面的 Dubbo 架构图可以看到, Registry (服务注册中心)在其中起着至关重要的作用。 Dubbo 官方推荐使用Zookeeper 作为服务注册中心。
Zookeeper树形目录服务:

 

流程说明:
服务提供者 (Provider) 启动时 : /dubbo/com.foo.BarService/providers 目录下写入自己的
URL 地址
服务消费者 (Consumer) 启动时 : 订阅 /dubbo/com.foo.BarService/providers 目录下的提供者
URL 地址。并向 /dubbo/com.foo.BarService/consumers 目录下写入自己的 URL 地址
监控中心 (Monitor) 启动时 : 订阅 /dubbo/com.foo.BarService 目录下的所有提供者和消费者
URL 地址

3.1启动、停止Zookeeper

进入 Zookeeper bin 目录,启动服务命令 ./zkServer.sh start
停止服务命令 ./zkServer.sh stop
查看服务状态: ./zkServer.sh status
客户端连接  :./zkCli.sh

4.dubbo快速入门

详见pdf

5.解决Dubbo无法发布被事务代理的Service问题

前面我们已经完成了 Dubbo 的入门案例,通过入门案例我们可以看到通过 Dubbo 提供的标签配置就可以进行包扫描,扫描到@Service 注解的类就可以被发布为服务。
但是我们如果在服务提供者类上加入 @Transactional 事务控制注解后,服务就发布不成功了。原因是事务控制的底层原理是为服务提供者类创建代理对象,而默认情况下Spring 是基于 JDK 动态代理方式创建代理对象,而此代理对象的完整类名为com.sun.proxy.$Proxy42 (最后两位数字不是固定的),导致Dubbo在发布服务前进行包匹配时无法完成匹配,进而没有进行服务的发布。
问题详见pdf
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值