02_Dubbo的使用
一、Doubbo的使用
Dubbo 基于容器 容器就是spring dubbo可以和spring 进行无缝整合
创建spring环境 引入dubbo即可使用
dubbo的使用步骤:
- 定义服务的提供者
①定义服务接口
②定义服务的实现 - 定义服务的消费者
调用服务的提供者提供的服务 - 注册中心
推荐使用== Zookeeper 注册中心==
将服务的提供者和服务的消费者注册到注册中心
利用spring容器
二、搭建dubbo的环境:
使用zookeeper作为注册中心
zookeeper : 动物园管理员
hadoop(大象) hive(蜜蜂) pig(猪)
zookeeper 是一个分布式的 开源的程序协调服务 是hadoop项目的一个子项目 提供服务配置管理 命名服务 分布式锁 集群管理
服务配置管理
A B C 三个系统 分别使用不同的配置 但是配置中内容大同小异 如果需要修改配置项 工作任务大 修改完配置 还需要重启系统
从所有配置中抽取出一个公共的 此时可以将公共的配置 放在zookeeper中 进行统一管理
当需要修改的时候 你可以随意修改 修改完之后 不需要重启
命名服务
可以根据服务名称 检索到对应的服务
分布式锁
集群管理
在linux上安装zookeeper
- 上传zookeeper 到centos
- 解压
[root@localhost soft]# tar -zxvf apache-zookeeper-3.6.0-bin.tar.gz -C /opt/programfiles/
- 进入zookeepr 目录 在conf中 将zoo_simple.cfg复制一份 复制为zoo.cfg
[root@localhost conf]# cp zoo_sample.cfg zoo.cfg
- 修改配置
- 启动zookeeper
- 关闭命令
- 查看zookeeper的状态
三、创建项目
maven的聚合项目
maven的聚合和继承
控制层模块
业务层模块
数据层模块
公共模块
①创建一个maven工程
dubbo-demo
接下创建他的子模块
工程结构:
子模块的pom文件中:
在父工程的pom文件中:
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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.rpc.dubbo</groupId>
<artifactId>dubbo-demo</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>dubbo_interface</module>
<module>dubbo-provider</module>
<module>dubbo-consumer</module>
</modules>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<spring.version>5.0.16.RELEASE</spring.version>
<dubbo.version>2.6.0</dubbo.version>
<zookeeper.version>3.6.0</zookeeper.version>
<zkclient.version>0.1</zkclient.version>
</properties>
<!-- 依赖管理 父工程中主要管理模块的聚合 以及对整个工程中所用到的依赖的管理-->
<dependencyManagement>
<dependencies>
<!-- Spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${
spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${
spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${
spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${
spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>${
spring.version}</version>
</dependency>