dubbo(5):使用dubbo进行业务分离与dubbo-admin的使用

前言

dubbo是分布式远程调用框架,如何利用dubbo将前后端进行分离。

本章代码已分享至:https://gitee.com/lengcz/dubbo02.git

第一节 环境准备

我们的项目已经进行了前后端模块分离的开发,但是实际上,我们打包运行时,依然是一个单体应用,并不属于分布式应用。
代码见:https://gitee.com/lengcz/dubbo01.git
在这里插入图片描述

demo中的zookeeper作为注册中心,也可以使用其它注册中心。
zookeeper安装教程:linux安装zookeeper

第二节 如何利用dubbo将其拆分成分布式调用

我们需要对项目进行微调。

1. 新建dubbo-interface子模块(maven)

dubbo-interface只存放公共的东西。

  1. 新建dubbo-interface子模块(maven)

  2. 将UserService移动到dubbo-interface,原本在dubbo-service定义的UserService可以移除。
    在这里插入图片描述

  3. 执行install操作,将dubbo-interface安装到本地仓库

在这里插入图片描述

2. dubbo-service

  1. 引入依赖,将抽离定义的公共接口模块引入
        <!--引入公共模块-->
        <dependency>
            <groupId>com.it2</groupId>
            <artifactId>dubbo-interface</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
  1. 引入tomcat插件,我们需要单独启动dubbo-service
<build>
        <plugins>
            <!--tomcat插件-->
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.1</version>
                <configuration>
                    <port>9000</port>
                    <path>/</path>
                </configuration>
            </plugin>
        </plugins>
    </build>
  1. 在main下面创建webapp\WEB-INF,并在下面创建web.xml
    在这里插入图片描述
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath*:spring/applicationContext*.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
</web-app>
  1. 在applicationContext.xml中配置dubbo进行包扫描
    在这里插入图片描述
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:dubbo="http://dubbo.apache.org/schema/dubbo" xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">

    <!--包扫描-->
    <context:component-scan base-package="com.it2.service"/>

    <!--dubbo的配置-->
    <!--项目名称-->
    <dubbo:application name="dubbo-service"/>
    <!--配置注册中心-->
    <dubbo:registry address="zookeeper://xxx.xxx.xxx.xxx:2181"  />
    <!--配置dubbo包扫描-->
    <dubbo:annotation package="com.it2.service.impl" />
    <!--修改服务端口-->
    <dubbo:protocol name="dubbo" port="20891"/>

</beans>
  1. 修改实现类的注入方式,将其注入到dubbo,而不是注册到容器中
@org.apache.dubbo.config.annotation.Service

在这里插入图片描述

dubbo-service文件结构(参考)
在这里插入图片描述

3. dubbo-web

  1. 引入依赖,获取公共接口
        <dependency>
            <groupId>com.it2</groupId>
            <artifactId>dubbo-interface</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
  1. 修改web.xml文件,去掉spring相关内容
    在这里插入图片描述
  2. 在springmvc.xml中配置dubbo相关的内容,配置包扫描,让dubbo知道注解的扫描范围
    在这里插入图片描述
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
		http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
		http://www.springframework.org/schema/mvc
		http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
		http://dubbo.apache.org/schema/dubbo
		http://dubbo.apache.org/schema/dubbo/dubbo.xsd
		http://www.springframework.org/schema/context
		http://www.springframework.org/schema/context/spring-context-4.0.xsd
		http://www.springframework.org/schema/aop
		http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
		http://www.springframework.org/schema/tx
		http://www.springframework.org/schema/tx/spring-tx-4.0.xsd ">
    <mvc:annotation-driven/>
    <context:component-scan base-package="com.it2.controller"/>

    <!--dubbo的配置-->
    <!--项目名称-->
    <dubbo:application name="dubbo-web">
        <!--qos监控-->
        <dubbo:parameter key="qos.port" value="12345"/>
    </dubbo:application>
    <!--配置注册中心-->
    <dubbo:registry address="zookeeper://xxx.xxx.xxx.xxx:2181"  />
    <!--配置dubbo包扫描-->
    <dubbo:annotation package="com.it2.controller" />


</beans>
  1. 修改service的注入方式,使用dubbo注入
@org.apache.dubbo.config.annotation.Reference

在这里插入图片描述

dubbo-web文件结构,供参考
在这里插入图片描述

4. 启动项目

  1. 先启动dubbo-service
    在这里插入图片描述

  2. 启动dubbo-web

在这里插入图片描述

  1. 打开浏览器,访问controller
    在这里插入图片描述

5. 首次运行慢的问题

由于首次进行dubbo调用时,本地服务需要从注册中心获取远程服务的地址等信息,之后内存中缓存了这些信息,速度就很快了。

第三节 dubbo-admin的使用

1. 安装dubbo-admin

见教程
dubbo(2):zookeeper和dubbo-admin的安装

2. 配置监控和元数据

在这里插入图片描述

<!--修改服务端口-->
    <dubbo:protocol name="dubbo" port="20891"/>
    <!--元数据-->
    <dubbo:metadata-report address="zookeeper://106.13.2.249:2181" />
<!--修改服务端口-->
    <dubbo:protocol name="dubbo" port="30891"/>
    <!--元数据-->
    <dubbo:metadata-report address="zookeeper://106.13.2.249:2181" />

3. 管理dubbo-admin

3.1 服务查询

可以看到dubbo-admin显示了dubbo-service提供的服务
在这里插入图片描述
在这里插入图片描述

3.2 服务测试

输入接口名称,搜索
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3.3 服务关系

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值