dubbo入门

dubbo是一个常用的RPC中间件,公司内服务间调用推荐使用,这里仅做一个入门介绍,知道dubbo是什么,在日常开发中怎么使用。

1.什么是dubbo

(1)DUBBO是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,是阿里巴巴SOA服务化治理方案的核心框架;

(2)Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。

(3)从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方提供服务,要么是消费方消费服务,所以基于这一点可以抽象出服务提供方(Provider)和服务消费方(Consumer)两个角色。

(4)Dubbo框架使得使用者可以像调用本地方法一样调用远程方法,而这一切只需要简单的配置。Dubbo完全兼容Spring配置方式注入,也与Spring boot无缝整合。

为什么要用dubbo?

Dubbo的架构?

调用关系:

  1. 服务容器负责启动,加载,运行服务提供者。
  2. 服务提供者在启动时,向注册中心注册自己提供的服务。
  3. 服务消费者在启动时,向注册中心订阅自己所需的服务。
  4. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
  5. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
  6. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。

2.RPC

3.dubbo源码/编译

官网:DUBBO

源码下载:GitHub - apache/dubbo: Apache Dubbo is a high-performance, java based, open source RPC framework.

发布包:http://repo1.maven.org/maven2/com/alibaba/dubbo/

为什么要自己编译/打包?

既然可以下载得到源码以及发布包,那么为什么要去构建dubbo呢?我们先来看下dubbo的主要模块:

其中,核心框架、管理控制台、简易监控中心、简易注册中心是我们需要的模块。目前只有核心模块jar包可以下载到,其它的均无法直接下载,所以我们需要构建dubbo

(1)下载GitHub的dubbo源码,导入到IDEA里面;
(2)配置Run/Debug configuration;
(3)运行,生成jar包…

也可以直接在解压的目录下打开cmd/git bash,执行mvn命令 clean compile package...

*4.一个Demo快速入门dubbo

实现功能:假设现在需要开发2个独立的业务系统,B系统和A系统。A系统调用B系统暴露的接口获取数据,比如查询用户列表。

(1)安装zookeeper

要运行dubbo的demo,首先需要搭建一个注册中心(可以看成一个服务器,用来接收来自provider的注册接口的请求,并且把接口列表”暴露出来”);

安装教程:ZooKeeper下载安装(Windows版本)

打开后的CMD界面:

(2)dubbo-admin的安装

通过将dubbo-admin打包放到tomcat上运行,由可视化界面查看暴露的服务接口;

安装教程:
windows上dubbo-admin的安装
​​​​​​dubbo管理控制台dubbo-admin安装

需要的dubbo源码:dubbo-dubbo-2.5.8.zip

(注意改下tomcat的conf下的server.xml的端口号,避免冲突)

这种方式需要用Maven给打成war包放在Tomcat的webapp上部署,访问localhost对应的web应用,(密码root/root)界面如下:

 其他的工具:也可以使用一个客户端工具zkUI:

下载zkUI:zkui-1.1.zip

点进去后一串URL可以粘贴到Notepad++里面,全选 插件-MIME Tools-URL decoding;

(3)在IDEA中编写测试代码

工程源码:dubbo-basic-demo-master.rar

详细参考说明:Dubbo入门demo - 简书

1.dubbo-api:定义暴露出来的服务接口,这个工程要被consumer和provider加入依赖;

2.dubbo-demo:在 dubbo-demo 的 pom.xml中添加公共依赖,主要是添加dubbo和zookeeper客户端依赖;

3.dubbo-provider:引用接口之后,我们需要在服务端添加接口实现类,在 dubbo-provider 项目中创建包 com.aotian.demo.dubbo.provider,并添加 DemoService 接口的实现类;

接口实现类添加后,我们需要将其注册到注册中心,只有这样,其他应用才有可能请求到,接下来我们在 src / main / resources 下创建 dubbo-provider.xml 文件,用于配置dubbo服务端注册

然后,启动zookeeper:打开C:\IDE_Apps\projects\zookeeper-3.4.14\zookeeper-3.4.14\bin下的zkServer.cmd;

接着,注册服务接口:启动服务端。本 Demo 用于测试,所以使用 main 方法加载的形式加载服务端,实际使用过程中可能会在 web 环境中使用。在服务端下添加 Provider.java 并执行 main 方法即可;

(4)dubbo-consumer

处理好服务端之后,我们再进行客户端的处理,首先添加客户端配置文件 dubbo-consumer.xml 放于 src / main / resources 下,内容与服务端相似,只不过不需要暴露接口,而是引用接口;

处理完配置文件后,我们可以在客户端进行测试了,创建文件 consumer.java,加载xml,调用provider的方法;

(5)代码编写dubbo接口的实现

在项目工程模块中,如core模块中编写dubbo接口,并且在公司云平台的服务治理查看/测试;

主要关注:dubbo接口在哪定义、接口实现在哪定义、配置接口信息将服务暴露出来

项目工程结构:

 可见,对外的dubbo接口都放在façade工程里面,每个接口的包都包括一个model和façade;如这里的dubbotest下有model和façade两个子包,分别放dubbo接口和跟这个接口相关的实体类(如返回的POJO类);

(2)在core工程里面写dubbo接口的实现类;

 如这里的serviceImpl包下的ServiceImol_01类;

(3)在配置文件中注册;

还是在core工程下的resources里面,在spring-service-provider.xml中配置;

添加一个<doubbo:service >标签,interface写dubbo接口,ref写对应的接口实现类的bean的id(在下面定义);紧跟着定义接口实现类的bean,注意ref与bean的id对应;

注意:façade工程里面的所有接口都是给外面调用的;如果不是给外面调用的,则不要放在façade工程,而是放在core里面

(4)测试,启动项目,登录pass平台,在服务治理里面找到对应的工程-dubbo接口;

 测试:

同样的,调用其他项目的的facade(dubbo接口),现在core工程下的spring-consumer.xml里面配置;

然后在service工程下新建包,client-myservice里面直接使用即可,如下:

 

参考资料:
DUBBO
​​​​​​GitBook

Dubbo项目GitHub主页:GitHub - apache/dubbo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值