1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/IdeaHome_admin-dubbo-proxy-tools

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 24 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 16.03.2025 17:35 61f8d95

Не знаю сталкивались ли вы с подобной ситуацией в работе:
Отладка Dubbo-интерфейсов является сложной задачей, требующей использования команд telnet или вызова консьюмера для активации. Формат параметров команд telnet сложен, поэтому при каждом использовании следует быть внимательным, чтобы избежать ошибок. Отладка методов с передачей сложных объектов как параметров также представляет собой сложность. Временные затраты на создание Java API для вызова этих интерфейсов могут быть значительными.
Все эти проблемы я встречал в своей работе и заметил, что большинство времени тратится на тестирование Dubbo-сервисов. Поэтому я решил потратить свободное время на создание эффективного инструмента для тестирования Dubbo, который открыт для общественного использования. Этот инструмент уже используется в реальной среде более года, основные функции которого полностью отшлифованы. Дальнейшее обслуживание версий будет продолжено. Код доступен по следующим адресам:
https://gitee.com/IdeaHome_admin/dubbo-proxy-tools Примечание: если вам понравился этот проект, пожалуйста, оцените его звездой.

Версия 2.0.3-release

Ниже приведены инструкции по использованию после обновления до версии 2.0.3-release. Эта версия позволяет автоматически заполнять параметры запросов Dubbo. Подробнее см. конфигурацию application.properties.
### Как установить данный инструмент

Новый код объединяет frontend и backend, что снижает затраты на установку.

Установка frontend

Frontend использует простую технологию Vue. Для изменения адреса сервера достаточно изменить значение переменной server_addr в файле constants.js. По умолчанию адрес сервера:

let server_addr = "http://127.0.0.1:7090/";

Установка backend

Backend реализован с использованием Spring Boot. Основные настройки находятся в файле application.properties. Необходимо изменить параметры подключения к базе данных MySQL.

server.port=7090
application.invoker.name=iubbo-invoker-proxy

spring.datasource.druid.password=password
spring.datasource.druid.username=root
spring.datasource.druid.url=jdbc:mysql://10.11.9.243:3306/iubbox
spring.datasource.druid.driver-class-name=com.mysql.jdbc.Driver

mybatis-plus.configuration.map-underscore-to-camel-case=true

spring.redis.port=6379
spring.redis.host=localhost
spring.redis.password=password

# Корневой узел регистрации Dubbo в Zookeeper
zk.dubbo.root=/dubbo
# Измените эту строку, если путь к методу был изменён
zk.dubbo.method.root=/dubbo/%s/providers
# Адрес для регистрации параметров Dubbo при использовании Zookeeper
zk.meta.data.addr=/dubbo/metadata/%s
zookeeper.base.sleep.times=3000
zookeeper.max.retry.times=4
CREATE TABLE `t_dubbo_invoke_req_record` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) DEFAULT NULL COMMENT 'Идентификатор пользователя',
  `arg_json` varchar(2500) COLLATE utf8_bin DEFAULT NULL COMMENT 'Параметры запроса Dubbo в виде JSON',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP,
  `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8mb4;
```CREATE TABLE `t_user` (
  `id` int(9) NOT NULL AUTO_INCREMENT,
  `username` varchar(60) COLLATE utf8_bin DEFAULT NULL,
  `password` varchar(30) COLLATE utf8_bin DEFAULT NULL,
  `createTime` datetime DEFAULT CURRENT_TIMESTAMP,
  `updateTime` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8mb4;

CREATE TABLE `t_register_config` (
  `id` int(6) NOT NULL AUTO_INCREMENT,
  `host` varchar(255) DEFAULT NULL COMMENT 'Host address',
  `ip` varchar(60) DEFAULT NULL COMMENT 'Real IP of the registration center',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP,
  `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `type` smallint(2) DEFAULT NULL COMMENT 'Type of the registration center: 1 - ZooKeeper, 2 - Nacos',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;


CREATE TABLE `t_login_status` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(9) DEFAULT NULL COMMENT 'User identifier',
  `user_token` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT 'User token',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT 'Creation date of record',
  `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'Date of last update of record',
  PRIMARY KEY (`id`),
  KEY `idx_user_token` (`user_token`) USING HASH
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

t_user используется для хранения информации о пользователях.

t_dubbo_invoke_req_record используется для хранения данных о вызовах методов Dubbo.

t_register_config используется для хранения конфигураций регистрационного центра.

t_login_status используется для хранения информации о состоянии авторизации.Наконец, это входной класс для запуска org.iubbo.proxy.IubboXInvokerApplication.Успешное запуск скриншота Здесь вставьте описание изображения### О руководстве по использованию данного инструмента

Данный инструмент делит пользователей на две категории: авторизованные аккаунты и незарегистрированные аккаунты. Авторизованные пользователи могут сохранять примеры запросов, что позволяет им легко извлекать информацию при последующем использовании. Незарегистрированные пользователи не имеют возможности сохранять примеры запросов, но это не мешает им использовать этот инструмент для тестирования.

Адрес главной страницы: http://localhost:7090/html/test-dubbo-web.html или переходите по адресу: http://localhost:7090/html/index.html

Скриншот главной страницы: Здесь вставьте описание изображения Примечание: В версии 2.0.0 были сделаны небольшие изменения в цветовой схеме. Если вам не нравится зелёный цвет, вы можете его изменить в коде.

Указание адреса регистрации ZK

В версии 2.0.0 конфигурация центра регистрации была вынесена в управление через MySQL: Необходимо добавить запись в таблицу t_register_config, чтобы увидеть соответствующую информацию: Здесь вставьте описание изображенияПеред тем как тестировать интерфейсы Dubbo, обычно мы получаем список сервисов из ZK. Процесс такой: Нажмите на поле ввода, введите буквы или цифры, связанные с конфигурацией JS, и система предложит варианты совпадений: Здесь вставьте описание изображенияПосле выбора адреса ZK нажмите кнопку "Получить адрес ZK" (ранее некоторые коллеги затруднялись с этим шагом).

При получении адреса ZK сервер будет отправлять запрос на основе указанного IP в конфигурации JS, и успешное выполнение запроса будет отражено сообщением: Здесь вставьте описание изображения

Ниже представлено отфильтровывание адресов служб Dubbo. Под командой получения адреса ZooKeeper располагается выпадающий список, в котором должны быть внедрены названия всех служб Dubbo, доступных в ZooKeeper.

Выберите соответствующее имя сервиса, а затем введите название метода, связанное с этим интерфейсом, в текстовое поле слева ("Введите имя"):

Пример тестирования метода:

public interface DubboService {

    /**
     * Тестовый метод интерфейса
     *
     * @param str входной параметр
     * @return результат выполнения
     */
    String doTest(String str);
}
```Затем настройте связанные параметры и названия:
Выберите тип параметра и значение:
![Здесь вставьте описание изображения](https://img-blog.csdnimg.cn/20201127224422326.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0Rhbm55X2lkZWE=,size_16,color_FFFFFF,t_70)
После выбора параметров вам потребуется один раз нажать кнопку "Добавить параметр", чтобы гарантировать, что заданные параметры будут применены.Наконец, отправьте запрос:
![Здесь вставьте описание изображения](https://img-blog.csdnimg.cn/20201127224542717.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0Rhbm55X2lkZWE=,size_16,color_FFFFFF,t_70)


Справа от основных параметров конфигурации находится модуль для настройки дополнительных параметров consumer'а, эти параметры используются в повседневной работе. Здесь также присутствует очень удобная опция прямого соединения.

### Указание адреса регистрации Nacos
В версии 2.0.1 была добавлена совместимость с центром регистрации Nacos:
![Вставка изображения](https://images.gitee.com/uploads/images/2021/0323/173227_c7635bed_1777749.png "screen-shot.png")
Этот раздел поддерживает группировку по namespace и group для поиска dubbo.

### Дополнительные параметры
Личным любимым параметром является опция прямого соединения, так как она часто используется во время разработки для проведения локальных тестов:
![Здесь вставьте описание изображения](https://img-blog.csdnimg.cn/20201127224827940.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0Rhbm55X2lkZWE=,size_16,color_FFFFFF,t_70)

Если вы хотите сохранить свои предыдущие тестовые примеры dubbo, вам нужно будет войти в систему или зарегистрироваться заново:
![Здесь вставьте описание изображения](https://img-blog.csdnimg.cn/20201127224920532.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0Rhbm55X2lkZWE=,size_16,color_FFFFFF,t_70)![Здесь вставьте описание изображения](https://img-blog.csdnimg.cn/20201127224939449.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0Rhbm55X2lkZWE=,size_16,color_FFFFFF,t_70)#### Сохранение тестовых сценариев
![Здесь можно вставить описание изображения](https://img-blog.csdnimg.cn/20201127225116460.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0Rhbm55X2lkZWE=,size_16,color_FFFFFF,t_70)
#### Просмотр информации о сохранённых сценариях
Пользователю необходимо самостоятельно обновить страницу, чтобы отобразить информацию о сохранённых сценариях:
![Здесь можно вставить описание изображения](https://img-blog.csdnimg.cn/20201127225223681.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0Rhbm55X2lkZWE=,size_16,color_FFFFFF,t_70)
Нажатие на выбор параметров приведёт к повторному отображению ранее использованных данных запроса.### Передача тестовых сценариев
Нажатие кнопки "Передать тестовый сценарий" позволяет передать сценарий другому пользователю.
![Здесь можно вставить описание изображения](https://img-blog.csdnimg.cn/20201127225309334.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0Rhbm55X2lkZWE=,size_16,color_FFFFFF,t_70)

#### Пресс-тестирование
Поддержка конфигурации для проведения нагрузочного тестирования на dubbo-интерфейсы.
![Здесь можно вставить описание изображения](https://img-blog.csdnimg.cn/2020112722544342.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0Rhbm55X2lkZWE=,size_16,color_FFFFFF,t_70)

### Анализ деталей запроса
Для каждого запроса к dubbo будут отображаться соответствующие данные запроса и ответа:

Информация о данных ответа:
![Здесь можно вставить описание изображения](https://img-blog.csdnimg.cn/20201127225718430.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0Rhbm55X2lkZWE=,size_16,color_FFFFFF,t_70)
Информация о фактически отправленных параметрах к серверной части dubbo:
![Здесь можно вставить описание изображения](https://img-blog.csdnimg.cn/20201127225731911.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0Rhbm55X2lkZWE=,size_16,color_FFFFFF,t_70)
Информация о времени выполнения запроса:
![Здесь можно вставить описание изображения](https://img-blog.csdnimg.cn/20201127225803363.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0Rhbm55X2lkZWE=,size_16,color_FFFFFF,t_70)### Уникальные параметры запроса

Этот инструмент поддерживает различные типы параметров, используемых при разработке. В настоящее время поддерживаются обычные параметры.
*Примечание:* Формат параметров должен совпадать с порядком и типами параметров метода Dubbo, иначе сервер вернет ошибку "метод не найден".

Java часто используемые базовые типы данных: `boolean`, `short`, `int`, `long`, `double`, `char`, `float`
Java часто используемые объектные типы данных:

```java
java.lang.String,
java.lang.Integer,
java.lang.Object,
java.util.List,
java.lang.Class,
java.lang.Long,
java.lang.Boolean,
java.util.Map,
java.util.Date,
java.lang.Float,
java.lang.Double

Для передачи простых данных

Изображение: https://uploader.shimo.im/f/1MiAoLiD6zADpfVx.png Изображение: https://uploader.shimo.im/f/s8WRZPpOOyIn7LWF.png Изображение: https://uploader.shimo.im/f/aftGOrdiJK0fUkfs.png

Передача нескольких параметров с сочетанием английского и китайского языков

Изображение

Передача параметра типа List

Изображение

Передача параметра типа Class

Изображение

Передача параметра типа Map

Изображение

Передача параметра типа Date

Изображение### Передача параметра в виде пользовательского объекта

Если вы столкнулись со следующей ситуацией при реальной работе и вам требуется вызвать указанный ниже метод, то вам потребуется использовать пользовательский параметр:

Изображение

Изображение

Изображение

Передача сложного пользовательского параметра

Предположим, что перед вами стоит задача передать параметр типа List, где каждый элемент списка представляет собой пользовательский объект, как показано ниже:

List<UserDTO> testUserDtoList(List<UserDTO> userDTOList, Class<?> clazz);

В таком случае пример передачи параметра может выглядеть следующим образом: Изображение

Ошибки и рекомендации

Обратите внимание на соответствие порядка передачи параметров и порядка параметров в методе. Например, если метод определён следующим образом:

<T> List<T> getList(List<Long> var1, Class<T> var2);

То входящие параметры должны сначала содержать параметр типа List, а затем параметр типа Class.

Пример правильного использования: (сначала указан параметр типа List, затем параметр типа Class)

Пример неправильного использования: (сначала указан параметр типа Class, затем параметр типа List)## Реальная работа

На данный момент этот инструмент используется в нашей компании уже около года, работает стабильно, что значительно повысило эффективность работы команды. Надеемся, что этот инструмент также окажется полезным для вас.


Если вам требуется доработка этого инструмента или специальное оформление, вы можете связаться со мной лично, wx: idea_000000.

При использовании инструмента, если возникли какие-либо проблемы или есть предложения по его улучшению, присоединяйтесь к нашему WeChat-группе ниже. введите описание изображения здесь

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/IdeaHome_admin-dubbo-proxy-tools.git
git@api.gitlife.ru:oschina-mirror/IdeaHome_admin-dubbo-proxy-tools.git
oschina-mirror
IdeaHome_admin-dubbo-proxy-tools
IdeaHome_admin-dubbo-proxy-tools
2.0.3-release