说明:大概是3年前在一个Saas平台中接触到dubbo,此博文是复习笔记,分享给需要的读者。学习dubbo要有一定的java和maven基础,因为此演示全程都离不开maven。此演示侧重dubbo原理图中的Provider—>Registy<—>Consumer 实战搭建,并且编写演示代码及dubbo平台管理, 笔者将其称为” Dubbo第二炮”。(很久没玩dubbo了,博文用于复习与交流)
此演示内容如下(这里的演示相当于手把手教妹子):
1.dubbo环境搭建简介
前言:Dubbo框架如何搭建?
有过SSH,SSMJ,PAFA,JALOR等框架经验的道友,估计都有搭建框架的经验,不论你是学习时还是工作时搭建的。它们都有一个共性,基本上离不开jar包导入和配置文件的编写,当然咯,现在傻B(SpringBoot简称SB)和maven进行了大量的简化,但是仍然离不开jar包和配置文件的管理。
搭建框架本质就是如何正确消费别人的提供的技术。这些技术构建成jar,库等供大家使用。
此演示环境说明:
Eclipse : Version: Kepler Service Release 2
Tomcat 5.23
Jdk: java version “1.8.0_31”
Zookeeper服务器 zookeeper3.4.12
Maven服务器apache-maven-3.0.5 (看清楚,这里指服务器不是指jar包版本)
2.dubbo工作原理图
3.在eclipse中新建4个maven工程
这些工程分别是
user(代表父工程,管理和聚合所有的工程)
user-api(编写接口和pojo或domain)
user-provider(服务提供者,对应dubbo原理图中的Provider)
user-consumer(服务消费者,调用user-provider中提供/暴露的服务或接口)
(1) user工程中主要资源pom.xml
===>>>>pom.xml代码如下
<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">
<!-- 作为maven父工程,管理公用的依赖资源和聚合相关联的项目 -->
<modelVersion>4.0.0</modelVersion>
<groupId>org.yl.dubbo</groupId>
<artifactId>user</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<!-- maven中央工厂,如果本地仓库settings配置了镜像mirror则会覆盖url,从中央资源工厂下载资源时通过Nexus私服管理 -->
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<!-- maven聚合 -->
<modules>
<module>../user-api</module>
<module>../user-provider</module>
</modules>
<!-- 公共依赖管理 -->
<dependencyManagement>
<dependencies>
<!-- 配置Spring 相应的jar -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.3.20.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-bean</artifactId>
<version>4.3.20.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.20.RELEASE</version>
</dependency>
<!-- 配置注册中心(zookeeper相关联的依赖)所需要的jar -->
<dependency>
<groupId>zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.8</version>
</dependency>
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.9</version>
</dependency>
<!-- 配置阿里儿子jar -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.5.10</version>
</dependency>
<!-- 测试依赖jar -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
</dependencyManagement>
<!-- 插件管理 -->
<build>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>