Статьи

Разработка реактивных микросервисов с использованием Spring-данных и распределенного SQL

В 2016 году в основной презентации платформы Spring One Юрген Хоеллер объявил Spring WebFlux , один из самых ожидаемых проектов, над которым работает Spring Team, благодаря повышению производительности, которое обещают реактивные потоки для веб-контроллеров. Впоследствии, с Spring Framework 5.0, Spring Reactive MVC пошла в гору вместе с выпуском WebFlux API, сделав основной поток основанным на реактивном потоке веб-контроллером.

В преддверии 2020 года Spring WebFlux MVC получил широкое распространение в облачных приложениях, где разработчики стремятся использовать микросервисы с высокой пропускной способностью и малой задержкой. Ясно, что произошел сдвиг в сторону модели реактивного программирования, теперь, когда многие поставщики баз данных поддерживают реактивные драйверы, в которых традиционные блокирующие вызовы базы данных заменяются асинхронным и неблокирующим доступом к данным с обратным давлением.

В этой статье мы познакомим вас с основами начала работы с полностью реактивным технологическим стеком, от веб-контроллеров до вызовов баз данных. Мы создадим микросервис Spring с использованием Spring WebFlux, Spring Data Reactive Repositories и YugabyteDB , которые поддерживают реактивные драйверы для операций CRUD.

Что такое YugabyteDB? Это высокопроизводительная распределенная база данных SQL с открытым исходным кодом, построенная на масштабируемой и отказоустойчивой конструкции, созданной по мотивам Google Spanner.

Технологический стек для создания приложения Spring Microservices

Следуя этому руководству, мы создадим приложение для микросервисов Spring, предоставляющее реактивный REST API для выполнения операций CRUD с YugabyteDB. В этом примере приложения используется следующий технический стек:

  • Spring WebFlux — поддержка реактивных контроллеров MVC и контроллеров REST.
  • Spring Data реагирует на Apache Cassandra — поддержка реактивных репозиториев для YugabyteDB.
  • Yugabyte Cloud Query Language (YCQL) — основанный на SQL API-интерфейс с гибкой схемой, который поддерживает распределенные транзакции, строго согласованные вторичные индексы и собственный тип столбца JSON. YCQL совместим с диалектом запросов Apache Cassandra и изначально работает с реактивными драйверами Apache Cassandra.

Репозиторий Git для примера приложения находится здесь .

Начиная YugabyteDB

Запустите кластер YugabyteDB с помощью следующей команды из установочного каталога YugabyteDB:


Оболочка