• dubbo-RPC学习(一)自定义配置


    在dubbo的基础上实现异步调用的时候,因为需要支持回调的“重试间隔时间”与“重试次数”等属性。因此,需要扩展dubbo.xsd,需要添加新的属性来支持这种扩展。

    dubbo 的xsd是基于spring的schema扩展实现的,一般来说,基于spring的schema扩展要实现一个自定义的配置需要以下步骤:

    1.设计配置属性和JavaBean

    2.编写XSD文件

    3.编写NamespaceHandler和BeanDefinitionParser完成解析工作

    4.编写spring.handlers和spring.schemas串联所有部件

    5.在spring的配置文件中应用。

    先来看看dubbo的JavaBean的结构:

    2014-03-27_100350

    RPC的核心理念是方法,正如其定义一般:远程方法调用。那么这里面的一个核心思想就是方法。从上图的类结构关系可以看出,方法是在接口之上(多个方法组成接口),接口在服务消费者与服务提供者之上(服务消费者与服务提供者之间通过接口来进行远程方法调用)。

    不扯这么多,回到正题,从上图可以看出来,在dubbo的JavaBean结构中,大体上可以分为7类。

    1.服务相关,包括:方法、服务提供者、服务消费者;

    2.注解相关,其实就是以注解的形式来实现xml的部分功能;

    3.应用相关,在部署的时候,可以指定应用的一些基本属性;

    4.模块相关,这是一个应用层面的模块化,仅仅是逻辑层面的;

    5.监控相关,提供了一个简易的监控web端,可以看到一些基础数据;

    6.协议相关,支持多协议的发布服务,同时提供一系列的优化参数;

    7.注册中心相关,基于SOA的概念,服务提供者将自身注册到一个注册中心,服务消费者去该注册中心查询自己需要的服务。服务的维护交由注册中心维护(最重要的是,dubbo并不过度依靠注册中心,因为在服务消费者本地有一份服务提供者列表缓存,因此,即使注册中心宕机一会,服务消费者还是可以正常和服务提供者通讯),目前基于zk实现。

    我们的目的是想在现有的callback实现中添加新的属性。但是callback是在argument中定义的。因此,

    第一步:找到xsd中对应的argumentType定义,在其中添加上需要的字段;

    第二步:在argument对应的JavaBean文件ArgumentConfig中,添加相应的字段,并且提供get/set方法。到这一步,基本的扩展就结束了,简单的debug以下就可以看到,添加的属性已经加入服务注册时的url中了。

  • 相关阅读:
    laravel进阶知识大纲
    spring boot 配置多个DispatcherServlet
    RepeatReadRequestWrapper
    RestTemplate HttpClient详解及如何设置忽略SSL
    Swagger注解-@ApiModel 和 @ApiModelProperty
    SpringBoot 接收 单个String入参之解决方案
    spring boot添加 LocalDateTime 等 java8 时间类序列化和反序列化的支持
    Mybatisplus实现MetaObjectHandler接口自动更新创建时间更新时间
    关于SpringBoot 2.0,Pageable 无法注入,提示缺少默认构造方法的解决办法
    OP_REQUIRES failed at save_restore_v2_ops.cc:109 : Permission denied: model/variables/variables_t emp; Permission denied
  • 原文地址:https://www.cnblogs.com/asfeixue/p/3629165.html
Copyright © 2020-2023  润新知