предисловие
Полный код смотрите по адресу:GitHub.com/CAI хорош/…
1. Установите среду zookeeper
Я использую облачный сервер Alibaba.
1.1 Сначала загрузите установочный пакет zookeeper
1.2 Декомпрессия
tar -zxvf zookeeper-3.4.11.tar.gz
mv zookeeper-3.4.11 zookeeper
rm -rf zookeeper-3.4.11.tar.gz
1.3 Войдите в каталог zookeeper и создайте папку данных.
mkdir data
1.4 Войдите в каталог /zookeeper/conf, скопируйте zoo_sample.cfg и назовите его zoo.cfg.
cp zoo_sample.cfg zoo.cfg
1.5 Изменить файл конфигурации
vim zoo.cfg
команда для изменения файла конфигурацииИзмените атрибут dataDir в файле конфигурации:
dataDir=/usr/local/zookeeper/data
1.6 Начать тест
Перейдите в каталог /zookeeper/bin и выполните следующую команду, чтобы запустить zookeeper.
./zkServer.sh start
./zkServer.sh status
Или запустите команду netstat -lntup для просмотра состояния сети, вы можете увидеть, что номер порта 2181 zookeeper уже занят
2. Начните создавать проект
Проект разделен на три модуля
- Интерфейс для поставщика услуг dubbo-api
- поставщик услуг dubbo-provider
- потребитель услуг dubbo-consumer
критические зависимости
<dependency>
<groupId>com.alibaba.spring.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
3. dubbo-api
Абстрактный интерфейс поставщика услуг, по которому потребители услуг могут звонить
package com.czh.provider.dubboprovider.serviceImpl.service;
public interface HelloService {
String sayHello(String name);
}
4. dubbo-provider
В основном делится на следующие этапы:
- Создайте проект SpringBoot;
- Добавьте связанный пакет jar зависимостей интерфейса;
- Настройте информацию, связанную с dubbo, в файле конфигурации application.properties;
- Реализовать класс интерфейса;
- Написание класса запуска поставщика услуг
4.1 создание проекта dubbo-провайдера
4.2 Файл pom вводит связанные зависимости
<dependencies>
<dependency>
<groupId>com.czh.api</groupId>
<artifactId>dubbo-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
4.3 Настройте информацию, связанную с dubbo, в файле конфигурации application.properties
# 配置端口
spring.application.name = dubbo-provider
server.port = 9090
#指定当前服务/应用的名字(同样的服务名字相同,不要和别的服务同名)
dubbo.application.name = dubbo-provider
demo.service.version = 1.0.0
dubbo.protocol.name = dubbo
dubbo.protocol.port = 20880
#指定注册中心的位置
dubbo.registry.address = zookeeper://ip:2181
#统一设置服务提供方的规则
dubbo.provider.timeout = 1000
4.4 Реализация интерфейса
Поставщик услуг, содержащий фактический код реализации службы
package com.czh.provider.dubboprovider.serviceImpl;
import com.alibaba.dubbo.config.annotation.Service;
import com.czh.provider.dubboprovider.serviceImpl.service.HelloService;
@Service(version = "${demo.service.version}")
public class HelloServiceImpl implements HelloService {
@Override
public String sayHello(String name) {
return "Hello " + name + ",This is springboot-dubbo test";
}
}
4.5 Написание класса запуска поставщика услуг
package com.czh.provider;
import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@EnableDubbo
public class DubboProviderApplication {
public static void main(String[] args) {
SpringApplication.run(DubboProviderApplication.class, args);
}
}
5. dubbo-consumer
- Создайте проект SpringBoot;
- Добавьте связанный пакет jar зависимостей интерфейса;
- Настройте информацию, связанную с dubbo, в файле конфигурации application.properties;
- Написание интерфейса вызова потребителя услуги
- Написание класса запуска потребителей услуг
5.3 Настройте информацию, связанную с dubbo, в файле конфигурации application.properties
spring.application.name = dubbo-consumer
server.port = 9091
#指定当前服务/应用的名字(同样的服务名字相同,不要和别的服务同名)
dubbo.application.name = dubbo-consumer
demo.service.version = 1.0.0
dubbo.protocol.name = dubbo
dubbo.protocol.port = 20880
#指定注册中心的位置
dubbo.registry.address = zookeeper://ip:2181
#统一设置服务提供方的规则
dubbo.consumer.timeout = 5000
5.4 Напишите простой контроллер для вызова удаленных служб
package com.czh.consumer.controller;
import com.alibaba.dubbo.config.annotation.Reference;
import com.czh.api.service.HelloService;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloConsumerController {
@Reference(version = "${demo.service.version}")
private HelloService helloService;
@RequestMapping("/sayHello/{name}")
public String sayHello(@PathVariable("name") String name) {
return helloService.sayHello(name);
}
}
5.5 Написание класса запуска потребителя службы
package com.czh.consumer;
import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@EnableDubbo
public class DubboConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(DubboConsumerApplication.class, args);
}
}
6. Результаты испытаний
7. Резюме
Следует сказать, что использование springboot+dubbo+zookeeper для создания проекта dubbo относительно просто, и официальный также зависит от интеграции Springboot.
Полный код смотрите по адресу:GitHub.com/CAI хорош/…