Рубрики
Без рубрики

Интеграция Azure и Confluent: Поиск в реальном времени с помощью кэша Azure для Redis, Spring Cloud

Самостоятельное управление распределенной системой, такой как Apache Kafka ® , наряду с созданием и эксплуатацией Kafka conne… С тегами kafka, redis, java, mysql.

Самостоятельное управление распределенной системой, такой как Apache Kafka ® , наряду с созданием и эксплуатацией соединителей Kafka, является сложным и ресурсоемким. Это требует значительных навыков и опыта Кафки в группах разработки и эксплуатации вашей организации. Кроме того, чем больше объем данных в реальном времени, с которыми вы работаете, тем сложнее становится обеспечить эффективное масштабирование и надежную работу всей инфраструктуры.

Confluent и Microsoft работают вместе, чтобы сделать процесс внедрения потоковой передачи событий проще, чем когда-либо, за счет устранения типичных потребностей в управлении инфраструктурой, которые часто отвлекают разработчиков от создания критически важных приложений. Благодаря плавной интеграции Azure и Confluent вы можете собирать, хранить, обрабатывать потоки событий в режиме реального времени и передавать их нескольким службам данных Azure. Интеграция помогает снизить нагрузку на управление ресурсами в Azure и Confluent.

Единая интеграция с Confluent позволяет вам:

  • Предоставление нового объединенного облачного ресурса из клиентских интерфейсов Azure, таких как портал Azure/интерфейс командной строки/пакеты SDK, с полностью управляемой инфраструктурой
  • Оптимизируйте единый вход (SSO) из Azure в облако, объединяющееся с существующим Azure Active Directory (AAD) идентичности
  • Получите единое выставление счетов за использование облачных служб Confluent с помощью выставления счетов по подписке Azure с возможностью списания средств с фиксаций Azure; Плата за использование облачных служб Confluent просто отображается в виде строки в ежемесячных счетах Azure
  • Управляйте объединенными облачными ресурсами с портала Azure и отслеживайте их на странице “Все ресурсы” вместе с вашими ресурсами Azure

Компания Confluent разработала обширную библиотеку готовых соединителей, которые легко интегрируют данные из множества различных сред. С помощью Confluent клиенты Azure получают доступ к полностью управляемым соединителям, которые передают данные для анализа в реальном времени с низкой задержкой в службы Azure и Microsoft, такие как Функции Azure , Хранилище больших двоичных объектов Azure , Концентраторы событий Azure , Хранилище озера данных Azure (ADLS) Gen2 и Microsoft SQL Server . Больше данных в реальном времени теперь можно легко передавать в приложения для более эффективной аналитики и более широкого использования в контексте.

Вариант использования поиска в реальном времени

В современной быстро развивающейся бизнес-экосистеме организации должны создавать новые бизнес-модели, предоставлять клиентам отличный опыт и повышать операционную эффективность, чтобы оставаться актуальными и конкурентоспособными. Технологии играют решающую роль в этом путешествии, и новым императивом является создание масштабируемых, надежных и устойчивых систем реального времени. Инфраструктура реального времени для обработки больших объемов данных с меньшими затратами и сниженным риском играет ключевую роль в этой эволюции.

Apache Kafka часто играет ключевую роль в современной архитектуре данных с другими системами, производящими/потребляющими данные в/из нее. Это могут быть заказы клиентов, финансовые транзакции, события потока кликов, журналы, данные датчиков и события изменения базы данных. Как вы можете себе представить, в Kafka (темы) содержится много данных, но они полезны только при обработке (например, с помощью Azure Spring Cloud или ksqlDB) или при попадании в другие системы.

Давайте исследуем архитектурный шаблон, который преобразует существующую традиционную систему транзакций в систему обработки данных в реальном времени. Мы опишем конвейер данных, который синхронизирует данные между MySQL и Research, на базе Confluent Cloud в Azure. Этот сценарий применим ко многим вариантам использования, но мы специально рассмотрим сценарий, в котором пакетные данные должны быть доступны нижестоящим системам почти в режиме реального времени для выполнения требований поиска. Данные могут быть дополнительно переданы в хранилище ADLS для сопоставления данных в реальном времени и исторических данных, аналитики и визуализации. Это обеспечивает основу для других сервисов через API для управления важными частями бизнеса, такими как веб-сайт, ориентированный на клиентов, который может предоставлять свежую, актуальную информацию о продуктах, доступности и многом другом.

Ниже приведены ключевые элементы и возможности вышеупомянутой архитектуры:

Вышеупомянутые службы используют библиотеку поиска Jedi для взаимодействия с исследованиями для создания индексов, добавления документов и запросов. Благодаря соединителю источника JDBC данные в MySQL (таблица продуктов) отправляются в раздел Кафки. Вот как выглядит полезная нагрузка JSON:

Цели

Данные могут быть загружены в реляционную базу данных в базе данных Azure для MySQL, в данном случае с помощью приложения или пакетного процесса. Эти данные будут синхронизированы из облака Confluent в Azure в исследовательский модуль, доступный в кэше Azure для корпоративной службы Redis. Это позволит вам гибко выполнять поиск по вашим данным в режиме реального времени. Данные в реальном времени также передаются в хранилище ADLS. Все компоненты службы могут быть развернуты в одном регионе Azure для обеспечения низкой задержки и производительности. Кроме того, эти компоненты службы развернуты в одной подписке Azure, чтобы обеспечить возможность единого выставления счетов за использование вашего облака в слиянии с помощью выставления счетов по подписке Azure.

Предпосылки

  1. Учетная запись Azure
  2. Установите интерфейс командной строки Azure для развертывания компонентов инфраструктуры и управления ими
  3. JDK 11 или выше, например, для OpenJDK
  4. Недавний Мавен освобождать
  5. Установить Git

Настройка облачной среды Azure

  1. Создайте базу данных Azure для сервера MySQL
  2. Создайте экземпляр Apache Kafka в облаке Confluent
  3. Создайте экземпляр кэша Redis Enterprise/| с помощью исследовательского модуля включен Предоставление экземпляра облака Azure Spring Cloud

Создавайте и развертывайте приложения в облаке Azure Spring Cloud

  1. Настройте приложение-потребитель для обработки событий из тем Кафки в Redis
  2. Настройте приложение поиска для запроса записей из исследования
  3. Создайте и разверните файл JAR приложения

Используйте приложение поиска для запроса данных

  1. Используйте curl или HTTP-клиент для вызова API поиска

Экспорт данных в озеро данных Azure

  1. Настройка соединителя ADLS поколения 2 для экспорта данных из разделов Кафки

Убирать

  1. Удалите ресурсы (MySQL, организация Confluent Cloud, Redis и ваш экземпляр Azure Spring Cloud) по отдельности или удалите группу ресурсов

Настройка MySQL и облака слияния в Azure

Экземпляр MySQL в Azure

Создайте Базу данных Azure для сервера MySQL с помощью интерфейса командной строки Azure ( или портал Azure если это то, что вы предпочитаете):

Кластер Кафки в Сливающемся облаке

  • Предоставьте сведения о конфигурации для создания объединенной облачной организации в Azure
  • Подготовка в Azure: Беспрепятственная подготовка объединенных организаций через портал Azure
  • Единый вход в Confluent Cloud: Войдите непосредственно в Confluent Cloud
  • Создание полностью управляемых ресурсов слияния в облаке таких как кластеры, разделы и соединители
  • Создайте тему (необязательно): Соединитель автоматически создает тему (на основе соглашения по умолчанию); создайте тему вручную, если вы хотите переопределить ее настройки по умолчанию, хотя убедитесь, что при настройке соединителя используется то же имя темы
  • Настройте и запустите исходный соединитель MySQL с помощью портала

Создавайте и развертывайте приложения в облаке Azure Spring Cloud

Начните с клонирования репозитория GitHub и зайдите в каталог mysql-kafka-redis-интеграция:

git clone [https://github.com/Azure-Samples/mysql-kafka-redis-integration](https://github.com/Azure-Samples/mysql-kafka-redis-integration)

cd mysql-kafka-redis-integration

Для обеих служб обновите приложение.файл yaml в папке src/main/ресурсы с подробными сведениями о подключении для кэша Azure для Redis и кластера Confluent Cloud.

Вот урезанная версия для службы обработки событий изменений:

redis:
  host: 
  port: 
  password:  
topic:
  name: 
  partitions-num: 6
  replication-factor: 3
spring:
  kafka:
    bootstrap-servers:
      - 
    properties:
      ssl.endpoint.identification.algorithm: https
      sasl.mechanism: PLAIN
      request.timeout.ms: 20000
      retry.backoff.ms: 500
      sasl.jaas.config: org.apache.kafka.common.security.plain.PlainLoginModule required username="" password="";
      security.protocol: SASL_SSL
...

Конфигурация для службы API поиска довольно компактна:

redis:
  host: 
  port: 
  password: 

Создавайте файлы JAR для приложений Spring:

export JAVA_HOME=

# Change Events Processor service
mvn clean package -f change-events-processor/pom.xml

# Search API service
mvn clean package -f search-api/pom.xml

Установите расширение Azure Spring Cloud для интерфейса командной строки Azure :

az extension add --name spring-cloud

Создайте облачные приложения Azure Spring/|, соответствующие обеим службам:

# Change Events Processor service
az spring-cloud app create -n change-events-processor -s  -g  --runtime-version Java_11

# Search API service
az spring-cloud app create -n search-api -s  -g  --runtime-version Java_11 --is-public true

Разверните файлы JAR для соответствующих приложений, которые вы только что создали:

# for the Change Events Processor service
az spring-cloud app deploy -n change-events-processor -s  -g  --jar-path change-events-processor/target/change-events-processor-0.0.1-SNAPSHOT.jar

# for the Search API service
az spring-cloud app deploy -n search-api -s  -g  --jar-path search-api/target/search-api-0.0.1-SNAPSHOT.jar

Пришло время увидеть поиск в реальном времени в действии!

Теперь, когда у нас есть все компоненты на месте, мы можем протестировать сквозную функциональность. Мы начнем с добавления новых данных о продукте в базу данных MySQL и используем приложение поиска, чтобы убедиться, что оно распространилось до самого Redis.

Вставьте следующие примеры данных:

INSERT INTO `products` VALUES (42, 'Outdoor chairs', NOW(), '{"brand": "Mainstays", "description": "Mainstays Solid Turquoise 72 x 21 in. Outdoor Chaise Lounge Cushion", "tags": ["Self ties cushion", "outdoor chairs"], "categories": ["Garden"]}');

INSERT INTO `products` VALUES (43, 'aPhone', NOW(), '{"brand": "Orange", "description": "An inexpensive phone", "tags": ["electronics", "mobile phone"], "categories": ["Electronics"]}');

Получите URL-адрес службы API поиска с помощью портала или CLI :

az spring-cloud app show -n search-api -s  -g 

Используйте curl или другой HTTP-клиент для вызова API поиска. Каждый из этих запросов будет возвращать результаты в виде полезной нагрузки JSON, например:

[
    {
        "created": "1614235666000",
        "name": "Outdoor chairs",
        "description": "Mainstays Solid Turquoise 72 x 21 in. Outdoor Chaise Lounge Cushion",
        "id": "42",
        "categories": "Garden",
        "brand": "Mainstays",
        "tags": "Self ties cushion, outdoor chairs"
    },
    {
        "created": "1614234718000",
        "name": "aPhone",
        "description": "An inexpensive phone",
        "id": "43",
        "categories": "Electronics",
        "brand": "Orange",
        "tags": "electronics, mobile phone"
    }
]

Вот несколько примеров, которые помогут вам начать. Обратите внимание, что параметр запроса q используется для указания Исследовательского запроса .

# search for all records
curl /search?q=*

# search for products by name
curl /search?q=@name:Outdoor chairs

# search for products by category
curl /search?q=@categories:{Garden | Electronics}

# search for products by brand
curl /search?q=@brand:Mainstays

# apply multiple search criteria
curl /search?q=@categories:{Electronics} @brand:Orange

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

  • Подтвердите, что информация поступает в тему Кафки в Confluent Cloud
  • Проверьте журналы для приложения—потребителя, развернутого в облаке Azure Spring, – вы сможете увидеть обрабатываемые события (используйте журналы приложений az spring-cloud -n-s-g)
  • Взгляните на синтаксис запроса исследования и попробуйте другие запросы, а также подключитесь к экземпляру Azure Cache for Redis и запустите запросы повторного поиска напрямую, просто чтобы перепроверить

Подключитесь к экземпляру кэша Azure для Redis с помощью интерфейса командной строки redis:

redis-cli -h  -p  -a  --tls

Экспорт данных в озеро данных Azure

Если вы хотите хранить эти данные в хранилище озера данных Azure на более длительный срок (холодное хранилище), соединитель Confluent ADLS Gen2/| вас охватил. В нашем сценарии у нас уже есть данные о продукте, поступающие в раздел Кафки в Confluent Cloud в Azure – все, что нам нужно сделать, это настроить соединитель для выполнения работы.

И угадайте что – это также доступно как полностью управляемое предложение!

Вот что вам нужно сделать:

  • Создайте учетную запись хранения
  • Настройте соединитель и запустите его; убедитесь, что вы используете то же имя раздела, что и раньше (например, myserver.products).
  • Подтвердите, что данные были экспортированы в контейнер хранилища Azure в учетной записи ADLS

Для получения пошагового руководства пожалуйста, следуйте документации .

Удаление ресурсов Azure

Как только вы закончите, удалите службы, чтобы не нести ненужных расходов. Если они находятся в одной и той же группе ресурсов, достаточно просто удалить группу ресурсов . Вы также можете удалить ресурсы (MySQL, организацию Confluent Cloud, экземпляр Reddish и Azure Spring Cloud) по отдельности.

Резюме

Актуальность приложений реального времени будет расти в геометрической прогрессии по мере того, как все больше предприятий будут проходить цифровую трансформацию. Благодаря новой интеграции между Confluent и Azure, а также полностью управляемым соединителям Kafka, доступным для экспорта и источника данных в службы данных и хранения Azure, вы сможете обрабатывать огромные объемы данных намного быстрее, упростить интеграцию и избежать проблем, связанных с настройкой и обслуживанием сложных распределенных систем.

В этом полном руководстве представлена архитектура высокого уровня, описывающая, как запустить это решение в Azure на основе управляемых служб PaaS. Преимущество этого заключается в том, что вам не нужно настраивать и обслуживать сложные распределенные системы, такие как база данных, платформа потоковой передачи событий и инфраструктура среды выполнения для ваших Java-приложений Spring Boot.

Имейте в виду, что это всего лишь одна часть потенциально более широкого варианта использования. Благодаря Kafka вы можете расширить это решение для интеграции с другими системами, такими как Озеро данных Azure , используя еще один полностью управляемый Соединитель ADLS Gen2 .

Хотите узнать больше?

Если вы хотите узнать больше, Начните работу с Apache Kafka в облаке Confluent через Azure Marketplace и следуйте инструкциям быстрого запуска . Когда вы зарегистрируетесь, вы будете получать 200 долларов бесплатного пользования каждый месяц в течение первых трех месяцев. Используйте промо-код CL60 BLOG, чтобы получить дополнительные 60 долларов бесплатного использования. *

начать

Рамья Оруганти – старший менеджер по продуктам в Microsoft. Она работает в команде разработчиков Azure, специализирующейся на создании служб интеграции между Azure и Confluent Cloud. Она работает в облаке и пространстве данных уже более десяти лет. От разработки до ролей в архитектуре решений в таких организациях, как IBM, Oracle, а теперь и Microsoft, Рамья обладает обширным практическим пониманием, когда дело доходит до облачных продуктов.

Абхишек Гупта является старшим адвокатом разработчиков в Microsoft, где он помогает разработчикам добиться успеха с платформой Azure. Его основные направления деятельности включают Кафку, базы данных и Кубернетес. Абхишек также является участником с открытым исходным кодом и катализатором слияния сообщества. Ранее, будучи менеджером по продуктам, он помогал создавать и продвигать продукты PaaS, ориентированные на разработчиков.

Оригинал: “https://dev.to/azure/integrating-azure-and-confluent-real-time-search-powered-by-azure-cache-for-redis-spring-cloud-1201”