SpringBoot整合dubbo

墨蓝 2022-05-08 07:46 354阅读 0赞

SpringBoot整合dubbo

Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和Spring框架无缝集成。

以上介绍来源于百度百科,具体dubbo相关可以自行查找资料,本文只是介绍SpringBoot简单整合dubbo。

1.安装zookeeper

1.1 去官网下载,本文以3.4.12 版本为例子mirrors.hust.edu.cn/apache/zook…

1.2 下载之后解压ZooKeeper

1.3 进入解压文件夹conf目录

1.4 将zoo_sample.cfg修改名称为zoo.cfg

1.5 修改内容为如下,注意,本人是将ZooKeeper解压到了e盘,具体

dataDir和dataDirLog属性可以根据自己情况修改。

  1. # The number of milliseconds of each tick
  2. tickTime=2000
  3. # The number of ticks that the initial
  4. # synchronization phase can take
  5. initLimit=10
  6. # The number of ticks that can pass between
  7. # sending a request and getting an acknowledgement
  8. syncLimit=5
  9. # the directory where the snapshot is stored.
  10. # do not use /tmp for storage, /tmp here is just
  11. # example sakes.
  12. dataDir=E:\\zookeeper\\data
  13. dataDirLog=E:\\zookeeper\\log
  14. # the port at which the clients will connect
  15. clientPort=2181
  16. # the maximum number of client connections.
  17. # increase this if you need to handle more clients
  18. #maxClientCnxns=60
  19. #
  20. # Be sure to read the maintenance section of the
  21. # administrator guide before turning on autopurge.
  22. #
  23. # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
  24. #
  25. # The number of snapshots to retain in dataDir
  26. #autopurge.snapRetainCount=3
  27. # Purge task interval in hours
  28. # Set to "0" to disable auto purge feature
  29. #autopurge.purgeInterval=1
  30. 复制代码

1.6 启动zookeeper,进入bin目录,双击zkServer.cmd

2 新建项目springboot_dubbo_server,项目中加入dubbo依赖,完整pom如下:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <groupId>com.dalaoyang</groupId>
  6. <artifactId>springboot_dubbo_server</artifactId>
  7. <version>0.0.1-SNAPSHOT</version>
  8. <packaging>jar</packaging>
  9. <name>springboot_dubbo_server</name>
  10. <description>springboot_dubbo_server</description>
  11. <parent>
  12. <groupId>org.springframework.boot</groupId>
  13. <artifactId>spring-boot-starter-parent</artifactId>
  14. <version>1.5.9.RELEASE</version>
  15. <relativePath/> <!-- lookup parent from repository -->
  16. </parent>
  17. <properties>
  18. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  19. <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  20. <java.version>1.8</java.version>
  21. </properties>
  22. <dependencies>
  23. <dependency>
  24. <groupId>org.springframework.boot</groupId>
  25. <artifactId>spring-boot-starter</artifactId>
  26. </dependency>
  27. <dependency>
  28. <groupId>org.springframework.boot</groupId>
  29. <artifactId>spring-boot-starter-test</artifactId>
  30. <scope>test</scope>
  31. </dependency>
  32. <dependency>
  33. <groupId>io.dubbo.springboot</groupId>
  34. <artifactId>spring-boot-starter-dubbo</artifactId>
  35. <version>1.0.0</version>
  36. </dependency>
  37. </dependencies>
  38. <build>
  39. <plugins>
  40. <plugin>
  41. <groupId>org.springframework.boot</groupId>
  42. <artifactId>spring-boot-maven-plugin</artifactId>
  43. </plugin>
  44. </plugins>
  45. </build>
  46. </project>
  47. 复制代码

配置文件如下:

  1. ##端口号
  2. server.port=8880
  3. ## Dubbo 服务提供者配置
  4. spring.dubbo.application.name=dubbo_server
  5. spring.dubbo.registry.address=zookeeper://39.108.123.128:2181
  6. spring.dubbo.protocol.name=dubbo
  7. spring.dubbo.protocol.port=20880
  8. spring.dubbo.scan=com.dalaoyang.dubbo
  9. 复制代码

定义一个Service Interface:HelloService.java

  1. package com.dalaoyang.dubbo;
  2. /**
  3. * @author dalaoyang
  4. * @Description
  5. * @project springboot_learn
  6. * @package com.dalaoyang.dubbo
  7. * @email yangyang@dalaoyang.cn
  8. * @date 2018/6/14
  9. */
  10. public interface HelloService {
  11. String SayHello(String name);
  12. }
  13. 复制代码

接口的实现类:HelloServiceImpl.java

  1. package com.dalaoyang.dubbo.imp;
  2. import com.alibaba.dubbo.config.annotation.Service;
  3. import com.dalaoyang.dubbo.HelloService;
  4. /**
  5. * @author dalaoyang
  6. * @Description
  7. * @project springboot_learn
  8. * @package com.dalaoyang.dubbo.imp
  9. * @email yangyang@dalaoyang.cn
  10. * @date 2018/6/14
  11. */
  12. @Service(version = "1.0.0")
  13. public class HelloServiceImpl implements HelloService {
  14. @Override
  15. public String SayHello(String name) {
  16. return "Hello , "+name;
  17. }
  18. }
  19. 复制代码

到这里dubbo服务提供者已经创建完成。

3.新建项目springboot_dubbo_client,pom与提供者一致,代码如下:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <groupId>com.dalaoyang</groupId>
  6. <artifactId>springboot_dubbo_client</artifactId>
  7. <version>0.0.1-SNAPSHOT</version>
  8. <packaging>jar</packaging>
  9. <name>springboot_dubbo_client</name>
  10. <description>springboot_dubbo_client</description>
  11. <parent>
  12. <groupId>org.springframework.boot</groupId>
  13. <artifactId>spring-boot-starter-parent</artifactId>
  14. <version>1.5.9.RELEASE</version>
  15. <relativePath/> <!-- lookup parent from repository -->
  16. </parent>
  17. <properties>
  18. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  19. <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  20. <java.version>1.8</java.version>
  21. </properties>
  22. <dependencies>
  23. <dependency>
  24. <groupId>org.springframework.boot</groupId>
  25. <artifactId>spring-boot-starter</artifactId>
  26. </dependency>
  27. <dependency>
  28. <groupId>org.springframework.boot</groupId>
  29. <artifactId>spring-boot-starter-web</artifactId>
  30. </dependency>
  31. <dependency>
  32. <groupId>org.springframework.boot</groupId>
  33. <artifactId>spring-boot-starter-test</artifactId>
  34. <scope>test</scope>
  35. </dependency>
  36. <dependency>
  37. <groupId>io.dubbo.springboot</groupId>
  38. <artifactId>spring-boot-starter-dubbo</artifactId>
  39. <version>1.0.0</version>
  40. </dependency>
  41. </dependencies>
  42. <build>
  43. <plugins>
  44. <plugin>
  45. <groupId>org.springframework.boot</groupId>
  46. <artifactId>spring-boot-maven-plugin</artifactId>
  47. </plugin>
  48. </plugins>
  49. </build>
  50. </project>
  51. 复制代码

配置文件如下:

  1. ## 端口号
  2. server.port=8881
  3. ##Dubbo 服务消费者配置
  4. spring.dubbo.application.name=dubbo_client
  5. spring.dubbo.registry.address=zookeeper://39.108.123.128:2181
  6. spring.dubbo.scan=com.dalaoyang.controller
  7. 复制代码

HelloService接口如下:

  1. package com.dalaoyang.dubbo;
  2. /**
  3. * @author dalaoyang
  4. * @Description
  5. * @project springboot_learn
  6. * @package com.dalaoyang.dubbo
  7. * @email yangyang@dalaoyang.cn
  8. * @date 2018/6/14
  9. */
  10. public interface HelloService {
  11. String SayHello(String name);
  12. }
  13. 复制代码

创建一个controller进行测试,注意版本号要与提供者的版本号一致,dubbo扫描包要扫描到我们要使用的类上,代码如下:

  1. package com.dalaoyang.controller;
  2. import com.alibaba.dubbo.config.annotation.Reference;
  3. import com.dalaoyang.dubbo.HelloService;
  4. import org.springframework.web.bind.annotation.GetMapping;
  5. import org.springframework.web.bind.annotation.RestController;
  6. /**
  7. * @author dalaoyang
  8. * @Description
  9. * @project springboot_learn
  10. * @package com.dalaoyang.controller
  11. * @email yangyang@dalaoyang.cn
  12. * @date 2018/6/14
  13. */
  14. @RestController
  15. public class HelloController {
  16. @Reference(version = "1.0.0")
  17. HelloService helloService;
  18. @GetMapping("sayHello")
  19. public String sayHello(String name){
  20. return helloService.SayHello(name);
  21. }
  22. }
  23. 复制代码

到这里dubbo服务调用者也创建完成。

分别启动服务提供者项目和服务调用者项目,在浏览器访问http://localhost:8881/sayHello?name=dalaoyang,如图,证明调用成功。

1

更多springboot-dubbo配置可以参考github.com/JeffLi1993/…

发表评论

表情:
评论列表 (有 0 条评论,354人围观)

还没有评论,来说两句吧...

相关阅读

    相关 SpringBoot整合Dubbo

    Dubbo简介 Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分业务的架构,使用这种方式可以使各个业务之间解耦合(或者最大限度地松耦合)。 简单来说

    相关 SpringBoot整合dubbo

    SpringBoot整合dubbo Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和Spring框

    相关 springboot整合dubbo

    本文主要通过代码示例来说明springboot和dubbo的整合方式 以下是核心代码示例,其他的资源整合配置和spring+Dubbo相同 声明下:dubbo网址在下面配

    相关 SpringBoot整合Dubbo

    前言   Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。   简单来说,Dubbo 用于分布式的场景。

    相关 SpringBoot整合dubbo

    1.什么是Dubbo Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服