Самостоятельное управление распределенной системой, такой как 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 для управления важными частями бизнеса, такими как веб-сайт, ориентированный на клиентов, который может предоставлять свежую, актуальную информацию о продуктах, доступности и многом другом.
Ниже приведены ключевые элементы и возможности вышеупомянутой архитектуры:
- Компоненты инфраструктуры, которые составляют основу архитектуры
- Соединитель приемника ADLS Gen2 для экспорта данных из разделов Кафки в ADLS
- Хранилище данных ADLS для сопоставления данных в реальном времени и исторических данных и дальнейшей аналитики и визуализации
- Компоненты приложения: Это службы, работающие в облаке Azure Spring
- A Загрузочное приложение Java Spring/| который использует Spring для интеграции Apache Kafka является потребительским приложением, которое обрабатывает события из разделов Кафки в Redis, создавая требуемое определение индекса; он добавляет записи как Документы повторного поиска , создавая требуемое определение индекса и добавляя новую информацию о продукте в качестве документов повторного поиска (в настоящее время представлен в виде хэша Redis). Приложение поиска – это еще одно приложение Spring Boot, которое делает данные исследования доступными в виде REST API; оно позволяет выполнять запросы в соответствии с синтаксисом запроса
- RediSearch
Вышеупомянутые службы используют библиотеку поиска Jedi для взаимодействия с исследованиями для создания индексов, добавления документов и запросов. Благодаря соединителю источника JDBC данные в MySQL (таблица продуктов) отправляются в раздел Кафки. Вот как выглядит полезная нагрузка JSON:
Цели
Данные могут быть загружены в реляционную базу данных в базе данных Azure для MySQL, в данном случае с помощью приложения или пакетного процесса. Эти данные будут синхронизированы из облака Confluent в Azure в исследовательский модуль, доступный в кэше Azure для корпоративной службы Redis. Это позволит вам гибко выполнять поиск по вашим данным в режиме реального времени. Данные в реальном времени также передаются в хранилище ADLS. Все компоненты службы могут быть развернуты в одном регионе Azure для обеспечения низкой задержки и производительности. Кроме того, эти компоненты службы развернуты в одной подписке Azure, чтобы обеспечить возможность единого выставления счетов за использование вашего облака в слиянии с помощью выставления счетов по подписке Azure.
Предпосылки
- Учетная запись Azure
- Установите интерфейс командной строки Azure для развертывания компонентов инфраструктуры и управления ими
- JDK 11 или выше, например, для OpenJDK
- Недавний Мавен освобождать
- Установить Git
Настройка облачной среды Azure
- Создайте базу данных Azure для сервера MySQL
- Создайте экземпляр Apache Kafka в облаке Confluent
- Создайте экземпляр кэша Redis Enterprise/| с помощью исследовательского модуля включен Предоставление экземпляра облака Azure Spring Cloud
Создавайте и развертывайте приложения в облаке Azure Spring Cloud
- Настройте приложение-потребитель для обработки событий из тем Кафки в Redis
- Настройте приложение поиска для запроса записей из исследования
- Создайте и разверните файл JAR приложения
Используйте приложение поиска для запроса данных
- Используйте curl или HTTP-клиент для вызова API поиска
Экспорт данных в озеро данных Azure
- Настройка соединителя ADLS поколения 2 для экспорта данных из разделов Кафки
Убирать
- Удалите ресурсы (MySQL, организация Confluent Cloud, Redis и ваш экземпляр Azure Spring Cloud) по отдельности или удалите группу ресурсов
Настройка MySQL и облака слияния в Azure
Экземпляр MySQL в Azure
Создайте Базу данных Azure для сервера MySQL с помощью интерфейса командной строки Azure ( или портал Azure если это то, что вы предпочитаете):
Кластер Кафки в Сливающемся облаке
- Настройте и подпишитесь на Apache Kafka в облаке Confluent, которое вы можете легко найти через Azure Marketplace
- Предоставьте сведения о конфигурации для создания объединенной облачной организации в 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”