Spring Boot 2.x (15): Dubbo + Zookeeper + новый администратор Dubbo

Spring Boot

Знакомство с Даббо

Dubbo — это платформа с открытым исходным кодом для Alibaba.высокая производительностьОтличная сервисная структура позволяет приложениямRPCРеализовать функции вывода и ввода сервиса, которые можно комбинировать сФреймворк Spring легко интегрируется.

Он предоставляет три основные возможности:

  • ориентированный на интерфейсудаленный вызов метода
  • Интеллектуальная отказоустойчивостьа такжебалансировки нагрузки
  • Служитьавтоматическая регистрацияи открытие.

官网图

Видно, что на рисунке пять ролей:

  • Провайдер: поставщик услуг
  • Потребитель: потребитель услуг
  • Реестр: Сервисный реестр
  • Монитор: Центр мониторинга услуг
  • Контейнер: Контейнер, в котором работает служба.

Процесс на схеме можно пояснить следующим образом:

  1. Провайдер, запускающий службу в контейнере (Container)
  2. Поставщик услуг (Provider) регистрирует услугу в виде интерфейса с реестром (Registry)
  3. Потребитель услуги (Consumer) подписывается на услугу в реестре
  4. Реестр возвращает интерфейс службы, предоставленный поставщиком службы, потребителю службы (асинхронно).
  5. Потребитель услуги звонит поставщику услуги (синхронно)
  6. Центр мониторинга отвечает за службу журнала, которая подсчитывает время вызова и время вызова службы.

Здесь мы используемzookeeperВ качестве сервисного реестра я проверяю официальную документацию и нахожуRedisТакже его можно использовать как центр регистрации Dubbo, но в приложениях он встречается относительно редко, и в официальной документации также указано:

Если мы хотим использовать его, нам просто нужно поставитьdubbo.registry.addrssЗначение изменяется наredis://127.0.0.1:6379готовые к использованию.

Теория здесь, давайте вступим в настоящую битву~

Установка зоопарка

Здесь я устанавливаю в среде Mac OS, вы можете установить виртуальную машину локально, чтобы завершить эту операцию.

Сначала нам нужно пойти вОфициальный сайтЗагрузите установочный пакет.

# 0. 解压
tar -zxvf zookeeper-3.4.13.tar.gz
# 1. 切换到解压后的目录下
cd zookeeper-3.4.13/
# 2. 建立data和logs目录
mkdir data
mkdir logs
# 3. 复制zoo_sample.cfg 为 zoo.cfg
cd conf/
cp zoo_sample.cfg zoo.cfg
# 4. 修改配置
vi zoo.cfg
dataDir=刚刚新建的data目录的绝对路径
logDir=刚刚新建的data目录的绝对路径
# 5. 启动
cd ../bin
./zkServer.sh start
# 6. 检测是否启动成功
./zkServer.sh status

Пример

Написать провайдера

Введите зависимости Maven, необходимые для нашего проекта:

<! --这里的包不要写错了,我试了一下阿里的starter,发现有很多问题,并没有这个好用 -->
<dependency>
    <groupId>io.dubbo.springboot</groupId>
    <artifactId>spring-boot-starter-dubbo</artifactId>
    <version>1.0.0</version>
</dependency>

Затем настройте экспозицию пакетов реестра и сервисного интерфейса.

spring.dubbo.application.name=provider
spring.dubbo.registry.address=zookeeper://127.0.0.1:2181
spring.dubbo.protocol.name=dubbo
spring.dubbo.protocol.port=27899
spring.dubbo.scan=indi.viyoung.dubbo.provider.service

написатьServiceИнтерфейс и класс реализации:

public interface TestService {
    String test();
}
@Service
public class TestServiceImpl implements TestService {

    @Override
    public String test() {
        return "Hello Wolrd";
    }
}

Обратите внимание, что здесьServiceАннотация должна находиться под пакетом dubbo, но не ошибитесь!

Написать потребителю

Также импортируйте зависимости:

<dependency>
    <groupId>io.dubbo.springboot</groupId>
    <artifactId>spring-boot-starter-dubbo</artifactId>
    <version>1.0.0</version>
</dependency>

Конфигурация Consumer относительно невелика:

spring.dubbo.application.name=consumer
spring.dubbo.registry.address=zookeeper://127.0.0.1:2181

Ссылка непосредственно в контроллере

public class TestController {


    @Reference
    private TestService testService;

    @RequestMapping()
    public String hello() {
        return testService.test();
    }
}

Обратите внимание здесь@ReferenceНе ошибитесь в аннотации, она должна быть под пакетом Dubbo!

Затем, после запуска проекта, давайте посетим:

Здорово, визит удался!

Далее давайте изучим использование Dubbo-Admin

Dubbo-Admin

Dubbo-Admin дал мне ощущение, что пользовательского интерфейса нет:

Выглядит это так, некрасиво, но я не знаю, когда его потихоньку обновили, и по контролю номинала стало очень удовлетворительно, и поддерживает запуск jar-пакетов, так что Tomcat отдельно ставить не надо~

git clone https://github.com/apache/incubator-dubbo-ops.git

Сначала вытащите проект из Git и откройте его с помощью IDEA:

Просто добавьте конфигурацию номера порта, а затем используйте инструмент упаковки maven слева для упаковки:

Затем перейдите в целевой каталог dubbo-admin-server и используйте следующую команду:

 java -jar dubbo-admin-server-0.1.jar >run.log &

Затем откройте браузер и введите localhost:7070.

По сравнению с предыдущим UI он в несчётное количество раз сильнее, и это очень удобно!

Конкретные функции можно обсудить после операции, и здесь они обсуждаться не будут.

Нет публики