tonic
Tonic
Реализация gRPC на Rust — высокопроизводительный, открытый, универсальный фреймворк для RPC, ориентированный на мобильные устройства и HTTP/2.
Примечание: В ветке master tonic в настоящее время готовятся критические изменения (breaking changes). Для работы с последней выпущенной версией кода обратитесь к ветке 0.14.x.
tonic — это реализация gRPC поверх HTTP/2, ориентированная на высокую производительность, совместимость и гибкость. Эта библиотека была создана для поддержки async/await "из коробки" и служит в качестве основного строительного блока для производственных систем, написанных на Rust.
Примеры | Веб-сайт | Документация | Чат
Обзор
tonic состоит из трёх основных компонентов: общая реализация gRPC, высокопроизводительная реализация HTTP/2 и генерация кода на основе prost. Общая реализация может работать с любой реализацией HTTP/2 и любой кодировкой через набор обобщённых трейтов. Реализация HTTP/2 основана на hyper — быстром клиенте и сервере для HTTP/1.1 и HTTP/2, построенном на основе надёжного стека tokio. Генерация кода включает инструменты для создания клиентов и серверов из определений protobuf.
Возможности
- Двунаправленные потоки (Bi-directional streaming)
- Высокопроизводительное асинхронное I/O
- Совместимость
- Поддержка TLS на основе
rustls - Балансировка нагрузки (Load balancing)
- Пользовательские метаданные
- Аутентификация
- Проверка работоспособности (Health Checking)
Начало работы
- Руководство
helloworldсодержит базовый пример использованияtonic, идеально подходящий для начинающих! - Руководство
routeguideпредоставляет полный пример использованияtonicи всех его функций.
Примеры кода можно найти в директории examples, а для более сложных сценариев interop может быть хорошим ресурсом, так как там показаны примеры многих функций gRPC.
Версия Rust
Минимальная поддерживаемая версия Rust (MSRV) для tonic — 1.75.
Зависимости
tonic-build использует компилятор protoc Protocol Buffers compiler в некоторых API, которые компилируют файлы ресурсов Protocol Buffers, такие как tonic_build::compile_protos().
Получение помощи
Сначала проверьте, есть ли ответ на ваш вопрос в документации по API. Если ответа там нет, есть активное сообщество в канале Tonic в Discord. Мы будем рады попытаться ответить на ваш вопрос. Если это не помогло, попробуйте создать issue с вашим вопросом.
Структура проекта
tonic: Общая реализация клиента и сервера для gRPC и HTTP/2.tonic-build: Генерация кода для служб на основеprost.tonic-types: Типы утилит gRPC на основеprost, включая поддержку Well Known Types gRPC.tonic-health: Реализация стандартной службы проверки работоспособности gRPC. Также служит примером как унарных вызовов, так и потоковой передачи ответов.tonic-reflection: Реализация механизма рефлексии gRPC на основе tonic.examples: Примеры реализаций gRPC, демонстрирующие TLS, балансировку нагрузки и двунаправленные потоки.interop: Реализация тестов на совместимость (interop).
Участие в разработке
:balloon: Спасибо за вашу помощь в улучшении проекта! Мы очень рады вашим участию! У нас есть руководство по участию, которое поможет вам внести вклад в проект Tonic.
Лицензия
Этот проект лицензирован по лицензии MIT.
Вклад
Если вы явно не указали иное, любой ваш вклад, намеренно представленный для включения в Tonic, будет лицензирован как MIT без каких-либо дополнительных условий.
Примечание переводчика: Ссылки и названия пакетов оставлены без изменения, так как они являются частью технической терминологии. Переведены пояснительные тексты, описания функций и разделов.