Apache ServiceComb Toolkit — это набор инструментов для разработки микросервисов на основе контрактов.
Вкладчики: Этот проект нуждается в поддержке. Если вы готовы помочь в поддержке проекта, пожалуйста, свяжитесь с нами, и мы добавим вас в группу коммитеров для продолжения поддержки проекта.
Пользователи: Этот проект нуждается в поддержке. В то время как мы ищем постоянного поддерживателя, мы рекомендуем вам избегать использования этого проекта, чтобы избежать проблем, которые могут не получить техническую поддержку.
Извлечение контрактов из устаревших приложений
В приложениях, разработанных на основе моделей SpringMVC/POJO/JAX-RS, можно автоматически извлечь файлы контрактов, соответствующие стандарту OpenAPI.
Создание микросервисных проектов на основе контрактов
Ввод контрактов, соответствующих стандарту OpenAPI, позволяет автоматически создать микросервисные проекты на основе ServiceComb/SpringCloud/Swagger, а также на основе моделей SpringMVC/POJO/JAX-RS или SpringBoot.
Проверка соответствия контрактов и кода
Проверка соответствия реального кода приложения (например, данных и API-интерфейсов) с описанными в контракте.
Проверка стиля и совместимости контрактов
Проверка стиля проверяет, соответствует ли контракт стандарту OAS 3.0.2 и собственным правилам; проверка совместимости проверяет совместимость двух версий OAS.
Создание документации на основе контрактов и кода
Введите контракт сервиса, соответствующий стандартам OpenAPI, для автоматического создания документации в формате HTML.
Для компаний, интегрирующих приложения нескольких поставщиков
Проблема: Различия в данных поставщиков, стандартах услуг, языках программирования, привычках и фреймворках усложняют интеграцию и управление. Решение: Используя единые стандарты описания интерфейсов (контракты), можно автоматически создать проекты микросервисов на основе выбранных фреймворков с помощью инструментов. Это позволяет координировать работу нескольких команд разработчиков, снижая затраты на коммуникацию и избегая путаницы в будущем.
Быстрое преобразование устаревших систем в микросервисы
Проблема: Пользователи должны изучить микросервисы и связанные фреймворки перед тем, как начать разработку проектов микросервисов, что увеличивает издержки обучения.
Решение: Используя инструменты, можно анализировать устаревшие приложения, извлекать контракты и автоматически создавать проекты микросервисов на основе выбранных фреймворков. Это позволяет сосредоточиться на разработке бизнес-логики и уменьшает издержки обучения микросервисным фреймворкам.
Требования к среде:
# Получение последнего исходного кода toolkit из github
$ git clone https://github.com/apache/servicecomb-toolkit.git
$ cd toolkit
```# Сборка и упаковка
```shell
$ mvn clean install
Конфигурация плагина toolkit-maven-plugin в файле pom Maven проекта
<plugin>
<groupId>org.apache.servicecomb.toolkit</groupId>
<artifactId>toolkit-maven-plugin</artifactId>
<version>0.3.0-SNAPSHOT</version>
<configuration>
<!-- Источник входных данных. Установите значение code для анализа текущего кода; установите значение contract для анализа файлов контрактов в указанной директории. Если не указано, значение по умолчанию — code -->
<sourceType>code</sourceType>
<!-- Тип сгенерированных файлов контрактов. Если не указано, значение по умолчанию — yaml -->
<contractFileType>yaml</contractFileType>
<!-- Тип сгенерированных документов. Если не указано, значение по умолчанию — html -->
<documentType>html</documentType>
<!-- Корневая директория для сгенерированных файлов контрактов и документов. Если не указано, значение по умолчанию — директория target в текущей директории команды, сгенерированные микросервисные проекты находятся в директории project, файлы контрактов — в contract, а документы — в document -->
<outputDirectory>/target</outputDirectory>
<!-- Путь к файлам контрактов для анализа. Эффективно при sourceType = contract, и обязательно для указания -->
<contractLocation>/contract</contractLocation>
<!-- Директория для проверки файлов контрактов. Эффективно при sourceType = contract, и обязательно для указания -->
<sourceContractPath>/target/contract</sourceContractPath>
</configuration>
</plugin>
```-- Директория для образцов файлов контрактов, обязательно для указания -->
<destinationContractPath>/contract</destinationContractPath>
<!-- Конфигурация сгенерированных микросервисных проектов -->
<service>
<!-- Тип микросервиса, можно сгенерировать provider/consumer/all, значение по умолчанию — all -->
<serviceType>all</serviceType>
<!-- GroupId микросервиса, пользовательский выбор, значение по умолчанию — domain.orgnization.project -->
<groupId>domain.orgnization.project</groupId>
<!-- ArtifactId микросервиса, пользовательский выбор, значение по умолчанию — sample -->
<artifactId>sample</artifactId>
<!-- ArtifactVersion микросервиса, пользовательский выбор, значение по умолчанию — 0.1.0-SNAPSHOT -->
<artifactVersion>0.1.0-SNAPSHOT</artifactVersion>
<!-- PackageName микросервиса, пользовательский выбор, значение по умолчанию — domain.orgnization.project.sample -->
<packageName>domain.orgnization.project.sample</packageName>
<!-- Фреймворк микросервиса, пользовательский выбор. Установите значение SpringCloud, чтобы создать проект стиля микросервисов SpringCloud. Значение по умолчанию — ServiceComb -->
<microServiceFramework>ServiceComb</microServiceFramework>
<!-- Идентификатор предоставляемого сервиса. В сценарии, где присутствуют только потребители услуг (serviceType=consumer), необходимо задать это значение -->
<providerServiceId>servicecomb-provider</providerServiceId>
<!---- Идентификатор сервиса, значение по умолчанию — значение artifactId -->
<serviceId>servicecomb-consumer</serviceId>
</service>
<!-- Указание дополнительных значений свойств, которые могут быть использованы шаблоном mustache. Используется только при генерации кода, когда goal — generate -->
<additionalProperties>
<prop1>value</prop1>
<prop2>value</prop2>
. . .
<propN>value</propN>
</additionalProperties>
</configuration>
</plugin>
```#### 3.2.2 Команды
```shell
# Создание контрактов, документации и микросервисного проекта
mvn toolkit:generate ```# Проверка согласованности кода и контрактов
mvn toolkit:verify
Конфигурационные параметры (если не указан <configuration>
, используются значения по умолчанию)
Пример:
<plugin>
<groupId>org.apache.servicecomb.toolkit</groupId>
<artifactId>toolkit-maven-plugin</artifactId>
<version>0.3.0-SNAPSHOT</version>
<configuration>
<!-- Источник ввода. Значение "code" указывает на разбор текущего кода; значение "contract" указывает на разбор файлов контрактов в указанной директории. Если не указано, используется значение "code" по умолчанию -->
<sourceType>code</sourceType>
<!-- Корневая директория для создания контрактов, документации, если не указана, используется директория target в текущей директории -->
<outputDirectory>./target</outputDirectory>
<!-- Конфигурация для создания микросервисного проекта -->
<service>
<!-- Тип микросервиса, может быть "provider", "consumer", "all", значение по умолчанию "all" -->
<serviceType>all</serviceType>
</service>
</configuration>
</plugin>
Запуск команды
mvn toolkit:generate
Создание контрактов из кода поддерживает следующие аннотации (уровень класса) для написания RESTful-интерфейсов
RestController, RestSchema, RpcSchema, RequestMappingПри создании контрактов из кода, методы RESTful-интерфейсов должны быть открытыми (public). Конфигурационные параметры (если не указаны явно
<configuration>
, используются значения по умолчанию).
Пример:
<plugin>
<groupId>org.apache.servicecomb.toolkit</groupId>
<artifactId>toolkit-maven-plugin</artifactId>
<version>0.3.0-SNAPSHOT</version>
<configuration>
<!-- Тип входных данных. Значение `code` указывает на анализ текущего кода; значение `contract` указывает на анализ файлов контрактов в указанной директории. Если не указано, значение по умолчанию — `code` -->
<sourceType>contract</sourceType>
<!-- Путь к файлам контрактов, действует при значении `sourceType` равном `contract`, и должно быть обязательно указано -->
<contractLocation>./contract</contractLocation>
<!-- Корневая директория для генерации файлов контрактов и документов, если не указана, значение по умолчанию — директория `target` в текущей директории, где выполняется команда. Микросервисные проекты создаются в директории `project`, файлы контрактов — в `contract`, а документы — в `document` -->
<outputDirectory>./target</outputDirectory>
<!-- Конфигурация для генерации микросервисного кода -->
<service>
<!-- Тип микросервиса, может быть `provider`, `consumer`, или `all`. Значение по умолчанию — `all` -->
<serviceType>provider</serviceType>
</service>
</configuration>
</plugin>
Запуск команды
mvn toolkit:generate
```#### 3.2.2.3 Проверка согласованности кода и контрактов
Конфигурационные параметры
Пример:
```xml
<plugin>
<groupId>org.apache.servicecomb.toolkit</groupId>
<artifactId>toolkit-maven-plugin</artifactId>
<version>0.3.0-SNAPSHOT</version>
<configuration>
<!-- Источник ввода. Значение "code" указывает на анализ текущего кода; значение "contract" указывает на анализ файлов контрактов в указанной директории. Если не указано, по умолчанию используется "code" -->
<sourceType>code</sourceType>
<!-- Директория с образцами файлов контрактов, обязательный параметр -->
<destinationContractPath>./contract</destinationContractPath>
</configuration>
</plugin>
Запуск команды
mvn toolkit:verify
cli/scripts/cli.*
и cli/target/bin/toolkit-cli-{version}.jar
в одну директорию, а затем выбрать соответствующий скрипт в зависимости от вашей среды. Все приведенные ниже примеры демонстрируются с использованием скрипта cli.sh в окружении Linux.$ ./cli.sh help
$ ./cli.sh codegenerate -m ServiceComb -i swagger.yaml -o ./project -p SpringMVC
codegenerate параметры команды:
$ . /cli. sh docgenerate -i swagger. yaml -o . /document
docgenerate Параметры команды:
$ ./cli.sh checkstyle -r style-check-rules.yaml -f oas.yaml
или
$ ./cli.sh cs -r style-check-rules.yaml -f oas.yaml
checkstyle Параметры команды
$ ./cli.sh checkcompatibility left-oas.yaml right-oas.yaml
или
$ ./cli.sh cc left-oas.yaml right-oas.yaml
checkcompatibility Параметры команды
См. правила проверки совместимости
Примеры использования плагина можно найти здесь
Подробности см. в руководстве по отправке pull request
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )