我是程序员DubboDubbo

Dubbo项目入门

2018-08-27  本文已影响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配置的涉及的东西有点多这里就不列出来了

本文作者:勿妄

阅读原文

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

上一篇 下一篇

猜你喜欢

热点阅读