Dubbo项目入门

作者: 阿里云云栖号 | 来源:发表于2018-08-27 16:15 被阅读649次

    Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。 

    它的特性如下

    • 面向接口代理的高性能RPC调用

    • 智能负载均衡

    • 服务自动注册与发现

    • 高度可扩展能力

    • 运行期流量调度

    • 可视化的服务治理与运维

    Talk is cheap, Show me the code。现在来着手搭建一个Dubbo项目吧。

    搭建一个xml配置的Dubbo项目

    创建三个项目

    • service-api 服务提供者和服务消费者共用的接口

    • service-consumer 服务消费者

    • service-provider 服务提供者

    共用的接口

    先在service-api定义一个公用接口

    服务提供者

    服务提供者service-provider提供一个DemoService的实现类

    编写xml配置文件

    配置应用名称

    配置注册中心

    可以使用Multicast、Redis、Zookeeper、Simple这四个作为注册中心。

    配置协议

    默认为dubbo

    定义bean

    然后定义bean,以及将bean作为服务暴露出去

    main函数

    编写一个main函数用于启动服务提供者

    服务消费者

    服务消费者需要调用service-provider 服务提供者提供的DemoService实现类

    同样需要编写xml文件,配置文件和服务提供者的类似,不同的是需要将暴露服务的配置修改为引用服务的配置,如下

    引用服务

    main函数

    编写一个main函数用于启动服务消费者,然后一直循环调用服务提供者提供的服务

    测试

    先启动service-provider项目,然后在启动service-consumer,输出结果如下 

    搭建一个注解的Dubbo项目

    服务提供者和服务消费者共用的接口还是使用service-api,新建下面两个项目

    • service-consumer-annotation 基于注解的服务消费者

    • service-provider-annotation 基于注解的服务提供者

    基于注解的服务提供者

    新建一个springboot项目

    同样需要提供一个DemoService的实现类,且在类上增加@Service注解

    注:是com.alibaba.dubbo.config.annotation.Service

    不是org.springframework.stereotype.Service

    别导错了

    接下来需要增加dubbo的配置类

    最后一步在启动类上增加注解@DubboComponentScan(basePackages = "com.learnDubbo.demo.provider.service")basePackages自行修改为提供服务类所在的包路径

    基于注解的服务消费者

    也是需要有一个配置类,和服务提供者类似,这里就不贴代码了 

    接下来创建一个Controller,用于测试结果,代码如下

    @Reference注解表示引用服务类似于xml配置

    在项目启动类上同样需要注解@DubboComponentScan指定dubbo扫描路径

    测试

    同xml配置的一样,需要先启动服务提供者

    配置信息

    配置信息主要包括3大块,注册中心、协议和schema配置

    注册中心

    注册中心总共有4个,如下

    使用Redis注册中心

    当使用Redis注册中心,需先把服务提供方和消费放的注册中心xml配置修改为下方

    对应的redis会产生如下数据 

    可以看到有两个key,分别对应服务提供者和消费者。两个key对应的数据类型为Hash,可以看到服务消费者key的数据如下

    第一个为URL址,第二个为过期时间。 

    官网给的图如下 

    使用Zookeeper注册中心

    当使用Zookeeper注册中心,需先把服务提供方和消费放的注册中心xml配置修改为下方

    对应的Zookeeper会产生如下数据 

    下图是官网给出的数据图 

    有些出入,但大致还是相同的,多了configurators和routers。

    当服务提供者启动时: 会创建对应的目录结构,例如我上面代码中的共用接口名为com.learnDubbo.demo.DemoService,就会创建 /dubbo/com.learnDubbo.demo.DemoService目录,然后在创建providers目录,再在providers目录下写入自己的 URL 地址。 

    当服务消费者启动时:会在/dubbo/com.learnDubbo.demo.DemoService目录创建 consumers目录,并在consumers目录写入自己的 URL 地址。 

    当监控中心启动时: 订阅 /dubbo/com.learnDubbo.demo.DemoService 目录下的所有提供者和消费者 URL 地址。

    协议

    schema配置的涉及的东西有点多这里就不列出来了

    本文作者:勿妄

    阅读原文

    本文为云栖社区原创内容,未经允许不得转载。

    相关文章

      网友评论

        本文标题:Dubbo项目入门

        本文链接:https://www.haomeiwen.com/subject/foctwftx.html