一直以来,对于Dubbo的了解限于原理和大概的功能层面,之前在实习过程中也遇到公司在使用Dubbo,但是自己并没有实现一个自己的完整实例,所以对Dubbo的理解存在很深的偏差。直到今天,发现只有真的理解了dubbo的原理以及使用方法,才能使用起来得心应手。
下面我将结合原理展示一个dubbo+zookeeper的实例。
一、Dubbo原理
Dubbo是阿里巴巴的分布式开源框架,主要思想是将服务提供方和消费方分开来,并提供一个注册中心来管理服务。
来自百度:
原理图:
(1)Provider:服务提供方:将自己所提供的服务(接口等)暴露给注册中心
(2)Consumer服务消费方:从注册中心订阅所需要的服务
(3)Registry注册中心:统一调配管理服务
(4)Monitor监控中心:监控服务调用次数等信息
二、实例演示
1、项目框架:
(1)在IDEA新建一个maven项目:dubbodemo
(2)在dubbodemo下新建一个模块:systemB,作为服务提供方,提供接口方法。
在dubbodemo项目上右键---->new —>moudle–>接下来一路next(新建maven项目一样)
(3)在dubbodemo下新建一个模块:systemA,作为服务消费方,从dubbo调用systemB的接口方法。
(同上)
项目结构为:
2、dubbodemo的pom文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.wj.dubbo</groupId>
<artifactId>dubbodemo</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<!--根项目模块-->
<modules>
<module>systemB</module>
<module>systemA</module>
</modules>
</project>
3、实现服务提供方systemB功能:
(1)pom.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<!--父pom为dubbodemo的pom-->
<parent>
<artifactId>dubbodemo</artifactId>
<groupId>com.wj.dubbo</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>systemB</artifactId>
<groupId>systemb-api</groupId>