SpringBoot整合Dubbo

SpringBoot整合Dubbo


文章目录

  • SpringBoot整合Dubbo
    • @[TOC](文章目录)
  • 前言
  • 一、安装Zookeeper
    • 1. 下载zookeeper
    • 2. 安装zookeeper
    • 3. 启动zookeeper
  • 二、安装Dubbo管理控制台
    • 1.下载Dubbo项目文件
    • 2.部署Dubbo项目文件
    • 3.访问Dubbo控制台
  • 三、编写服务提供者(provider)
    • 1.导入相关jar包
    • 2.编写provider配置文件
    • 3.编写暴露的服务TestService,实现服务类TestImpl和启动类
  • 四、编写服务消费者(consumer)
    • 1.引入相关jar包(和provider一致)
    • 2.编写consumer配置文件
    • 3.编写暴露的服务TestService,接口类TestController和启动类

前言

Dubbo官网地址:立即前往
Apache Dubbo是一款高性能的Java RPC框架。其前身是阿里巴巴公司开源的、轻量级的开源Java RPC
框架,可以和Spring框架无缝集成。
Dubbo提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发
现。
下面将编写一个SpringBoot整合Dubbo简易Demo。


一、安装Zookeeper

1. 下载zookeeper

方法一:

前往Zooleeper官网下载,点击前往,找到自己的版本后下载上传到服务器

方法二:

wget http://mirrors.shu.edu.cn/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz

直接使用wget命令下载

2. 安装zookeeper

提示:要安装jdk哦

1. 第一步
找到文件并解压下载的zookeeper压缩文件

tar -zxvf zookeeper-3.4.6.tar.gz

2. 第二步
在解压的zookeeper-3.4.6目录下创建data目录,用于存放数据

mkdir data

进入conf目录,把zoo_sample.cfg文件 改名为zoo.cfg

cd conf mv zoo_sample.cfg zoo.cfg

修改zoo.cfg文件dataDir为刚创建的data文件夹路径

vim zoo.cfg

SpringBoot整合Dubbo_第1张图片

3. 启动zookeeper

进入zookeeper的bin目录
启动服务命令

./zkServer.sh start

SpringBoot整合Dubbo_第2张图片
查看服务状态:

./zkServer.sh status

SpringBoot整合Dubbo_第3张图片
停止服务命令

./zkServer.sh stop

SpringBoot整合Dubbo_第4张图片

二、安装Dubbo管理控制台

1.下载Dubbo项目文件

提示:要提前安装tomcat哦
官方GitHub仓库:https://github.com/apache/dubbo-admin
若无法访问,已分享至:https://pan.baidu.com/s/1JkF0ChMXSsDChR1hUSEPTQ
提取码:jbz2

2.部署Dubbo项目文件

将下载的war包或者项目文件放到tomcat的webapps文件夹下
提示:若是下载的springBoot项目文件无需tomcat直接编译运行即可,我这里只演示tomcat的。
然后重启tomcat
在项目中的/WEB-INF/dubbo.properties里可以修改密码和端口,修改完记得重启哦

例:webapps/dubbo-admin-2.6.0/WEB-INF/dubbo.properties

SpringBoot整合Dubbo_第5张图片

3.访问Dubbo控制台

http://xxx.xxx.xxx.xxx:8080/dubbo-admin-2.6.0/
账号密码默认为root root

SpringBoot整合Dubbo_第6张图片

三、编写服务提供者(provider)

1.导入相关jar包

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.4.10</version>
            <exclusions>
                <exclusion>
                    <artifactId>spring</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.6</version>
        </dependency>
        <dependency>
            <groupId>com.github.sgroschupf</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.1</version>
        </dependency>

2.编写provider配置文件


<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
      http://www.springframework.org/schema/beans/spring-beans.xsd
      http://code.alibabatech.com/schema/dubbo
      http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

    
    <dubbo:application name="dubbo-provider" owner="dubbo-provider"/>

    
    <dubbo:registry protocol="zookeeper" address="zookeeper://192.168.220.129:2181" client="zkclient"/>

    
    <dubbo:protocol name="dubbo" port="-1"/>

    
    <dubbo:service interface="com.kkb.service.TestService" ref="testService" timeout="10000"/>

    
    <bean id="testService" class="com.kkb.service.impl.TestImpl" />
    
    
beans>

3.编写暴露的服务TestService,实现服务类TestImpl和启动类

TestService:

public interface TestService {
    String test(String name);
}

TestImpl:

public class TestImpl implements TestService {
    @Override
    public String test(String name) {
        return "welcome " + name;
    }
}

SpringBoot启动类

@SpringBootApplication
//加载provider配置文件
@ImportResource(value = {"classpath:provider.xml"})
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

启动provide项目,再次访问Dubbo控制台在服务页可以看到注册的服务
请添加图片描述

四、编写服务消费者(consumer)

1.引入相关jar包(和provider一致)

	<dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.4.10</version>
            <exclusions>
                <exclusion>
                    <artifactId>spring</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.6</version>
        </dependency>

        <dependency>
            <groupId>com.github.sgroschupf</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.1</version>
        </dependency>

2.编写consumer配置文件


<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
      http://www.springframework.org/schema/beans/spring-beans.xsd
      http://code.alibabatech.com/schema/dubbo
      http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

    

    
    <dubbo:application  name="dubbo-consumer" owner="dubbo-consumer"/>

    
    <dubbo:registry protocol="zookeeper" address="zookeeper://192.168.220.129:2181" client="zkclient" />

    
    <dubbo:reference id="testService" interface="com.kkb.service.TestService"/>
	
    
beans>

3.编写暴露的服务TestService,接口类TestController和启动类

TestService

public interface TestService {
    String test(String name);
}

TestController

@RestController
public class TestController {

    @Resource
    TestService testService;

    @RequestMapping("/test/{name}")
    public void testJson(@PathVariable("name") String name, HttpServletResponse response) throws IOException {
        PrintWriter writer = response.getWriter();
        String testStr = testService.test(name);
        writer.print(testStr);
    }
}

启动类

@SpringBootApplication
//加载consumer配置文件
@ImportResource(value = {"classpath:consumer.xml"})
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

启动cousumer项目文件,再次访问Dubbo控制台在服务页可以看到注册的provide状态为正常请添加图片描述
并且访问consumer接口可以调用provide
SpringBoot整合Dubbo_第7张图片


至此SpringBoot整合Dubbo的一个简单Demo就完成了

你可能感兴趣的:(SpringBoot,java,tomcat,spring,boot,后端,架构)