关于dubbo的认知

    Dubbo作为一个RPC框架,其最核心的功能就是要实现跨网络的远程调用。一个作为服务的提供方,一个作为服务的消费方。通过Dubbo来实现consumer 调用 provider的方法;
    Dubbo提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发

现。
Zookeeper 是 Apache Hadoop 的子项目,是一个树型的目录服务,支持变更推送,适合作为 Dubbo
服务的注册中心,工业强度较高,可用于生产环境,并推荐使用。

1、服务提供方开发

开发步骤:
(1)创建maven工程(打包方式为war)在pom.xml文件中导入相应的坐标

(2)配置对应的web.xml文件

注意 consumer 和 provider 的端口配置;

Dubbo相关配置说明

1.包扫描 (推荐使用)
<dubbo:annotation package=“com.lxs.service” />

2、协议
<dubbo:protocol name=“dubbo” port=“20880”/>

     一般在服务提供者(provider)一方配置,可以指定使用的协议名称和端口号。

其中Dubbo支持的协议有:dubbo、rmi、hessian、http、webservice、rest、redis等。
推荐使用的是dubbo协议。

    dubbo 协议采用单一长连接和 NIO 异步通讯,适合于小数据量,大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况。不适合传送大数据量的服务,比如传文件,传视频等,除非请求量很低

3.负载均衡

    负载均衡(Load Balance):其实就是将请求分摊到多个操作单元上进行执行,从而共同完成工作任 务。
    在集群负载均衡时,Dubbo 提供了多种均衡策略(包括随机、轮询、最少活跃调用数、一致性 Hash),缺省为random随机调用。
    配置负载均衡策略,既可以在服务提供者一方配置,也可以在服务消费者一方配置。

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

    我们如果在服务提供者类上加入@Transactional事务控制注解后,服务就发布不成功了!

原因:事务控制的底层原理是为服务提供者(provider)类创建代理对象,而默认情况下Spring是基于JDK动态代理方式创建代理对象,而此代理对象的完整类名为com.sun.proxy.$Proxy42(最后两位数字不是固定的),导致 Dubbo在发布服务前进行包匹配时无法完成匹配,进而没有进行服务的发布。

方法:1.修改provider(提供方)的 web.xml配置文件;使用Cglib进行代理

<tx:annotation-driven transaction-manager=“transactionManager” proxy-target-
class=“true”/>

2.修改provider(提供方)的 service的实现类
@Service(interfaceClass = HelloService.class)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值