Dubbo — это высокопроизводительная и превосходная сервисная инфраструктура с открытым исходным кодом от Alibaba, которая позволяет приложениям реализовывать функции вывода и ввода служб с помощью высокопроизводительного RPC и может быть легко интегрирована с инфраструктурой Spring.
Приведенное выше введение исходит изЭнциклопедия Байду, Вы можете найти информацию о dubbo самостоятельно.Эта статья знакомит только с простой интеграцией dubbo в SpringBoot.
1. Установите Зоокипер
1.1 Перейдите на официальный сайт для загрузки, в этой статье в качестве примера используется версия 3.4.12.зеркала.hushitai.quota.capable/apache/zoogram…
1.2 Разархивируйте ZooKeeper после загрузки
1.3 Войдите в каталог conf распакованной папки
1.4 Переименуйте zoo_sample.cfg в zoo.cfg
1.5 Измененный контент выглядит следующим образом: обратите внимание, что я распаковал ZooKeeper на диск e.
Атрибуты dataDir и dataDirLog можно изменить в зависимости от вашей ситуации.
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=E:\\zookeeper\\data
dataDirLog=E:\\zookeeper\\log
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
1.6 Запустите zookeeper, войдите в каталог bin и дважды щелкните файл zkServer.cmd.
2 Создайте новый проект springboot_dubbo_server и добавьте в него зависимости от dubbo.Полный pom выглядит следующим образом:
<?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.dalaoyang</groupId>
<artifactId>springboot_dubbo_server</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>springboot_dubbo_server</name>
<description>springboot_dubbo_server</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.dubbo.springboot</groupId>
<artifactId>spring-boot-starter-dubbo</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
Файл конфигурации выглядит следующим образом:
##端口号
server.port=8880
## Dubbo 服务提供者配置
spring.dubbo.application.name=dubbo_server
spring.dubbo.registry.address=zookeeper://39.108.123.128:2181
spring.dubbo.protocol.name=dubbo
spring.dubbo.protocol.port=20880
spring.dubbo.scan=com.dalaoyang.dubbo
Определить интерфейс службы: HelloService.java
package com.dalaoyang.dubbo;
/**
* @author dalaoyang
* @Description
* @project springboot_learn
* @package com.dalaoyang.dubbo
* @email yangyang@dalaoyang.cn
* @date 2018/6/14
*/
public interface HelloService {
String SayHello(String name);
}
Класс реализации интерфейса: HelloServiceImpl.java
package com.dalaoyang.dubbo.imp;
import com.alibaba.dubbo.config.annotation.Service;
import com.dalaoyang.dubbo.HelloService;
/**
* @author dalaoyang
* @Description
* @project springboot_learn
* @package com.dalaoyang.dubbo.imp
* @email yangyang@dalaoyang.cn
* @date 2018/6/14
*/
@Service(version = "1.0.0")
public class HelloServiceImpl implements HelloService {
@Override
public String SayHello(String name) {
return "Hello , "+name;
}
}
На данный момент поставщик услуг dubbo создан.
3. Создайте новый проект springboot_dubbo_client, pom тот же, что и у провайдера, а код такой:
<?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.dalaoyang</groupId>
<artifactId>springboot_dubbo_client</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>springboot_dubbo_client</name>
<description>springboot_dubbo_client</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.dubbo.springboot</groupId>
<artifactId>spring-boot-starter-dubbo</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
Файл конфигурации выглядит следующим образом:
## 端口号
server.port=8881
##Dubbo 服务消费者配置
spring.dubbo.application.name=dubbo_client
spring.dubbo.registry.address=zookeeper://39.108.123.128:2181
spring.dubbo.scan=com.dalaoyang.controller
Интерфейс HelloService выглядит следующим образом:
package com.dalaoyang.dubbo;
/**
* @author dalaoyang
* @Description
* @project springboot_learn
* @package com.dalaoyang.dubbo
* @email yangyang@dalaoyang.cn
* @date 2018/6/14
*/
public interface HelloService {
String SayHello(String name);
}
Создайте контроллер для тестирования. Обратите внимание, что номер версии должен совпадать с номером версии провайдера. Пакет сканирования dubbo должен быть отсканирован до класса, который мы хотим использовать. Код выглядит следующим образом:
package com.dalaoyang.controller;
import com.alibaba.dubbo.config.annotation.Reference;
import com.dalaoyang.dubbo.HelloService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author dalaoyang
* @Description
* @project springboot_learn
* @package com.dalaoyang.controller
* @email yangyang@dalaoyang.cn
* @date 2018/6/14
*/
@RestController
public class HelloController {
@Reference(version = "1.0.0")
HelloService helloService;
@GetMapping("sayHello")
public String sayHello(String name){
return helloService.SayHello(name);
}
}
Здесь также создается вызывающая служба dubbo.
Запустите проект поставщика услуг и проект вызывающей службы соответственно и получите доступ к ним в браузере.http://localhost:8881/sayHello?name=dalaoyang, как показано на рисунке, чтобы доказать успешность вызова.
Дополнительная конфигурация springboot-dubbo может относиться кGitHub.com/Джеффл i1993/…
Загрузка исходного кода:Большой Лао Ян Маюн
Персональный сайт:www.dalaoyang.cn