tonic

Tonic

Реализация gRPC на Rust — высокопроизводительный, открытый, универсальный фреймворк для RPC, ориентированный на мобильные устройства и HTTP/2.

Примечание: В ветке master tonic в настоящее время готовятся критические изменения (breaking changes). Для работы с последней выпущенной версией кода обратитесь к ветке 0.14.x.

tonic — это реализация gRPC поверх HTTP/2, ориентированная на высокую производительность, совместимость и гибкость. Эта библиотека была создана для поддержки async/await "из коробки" и служит в качестве основного строительного блока для производственных систем, написанных на Rust.

Crates.io Documentation Crates.io

Примеры | Веб-сайт | Документация | Чат

Обзор

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) для tonic1.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 без каких-либо дополнительных условий.


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