Массовый прием и анализ пакетов новостей в AzureMass ingestion and analysis of news feeds on Azure

Этот пример сценария описывает конвейер для массового приема и почти в режиме реального времени анализа документов с использованием общедоступных каналов новостей RSS.This example scenario describes a pipeline for mass ingestion and near real-time analysis of documents using public RSS news feeds. Он использует Azure Cognitive Services, чтобы предложить полезные идеи, включая перевод текста, распознавание лиц и обнаружение настроений.It uses Azure Cognitive Services to offer useful insights including text translation, facial recognition, and sentiment detection.

Этот сценарий содержит примеры для английских, русскихи немецких новостных лент, но вы можете легко распространить его на другие RSS-каналы.This scenario contains examples for English, Russian, and German news feeds, but you can easily extend it to other RSS feeds. Для удобства развертывания сбор, обработка и анализ данных полностью основаны на службах Azure.For ease of deployment, the data collection, processing, and analysis are based entirely on Azure services.

Варианты соответствующего использованияRelevant use cases

Хотя этот сценарий основан на обработке RSS-каналов, он имеет отношение к любому документу, веб-сайту или статье, где вам нужно будет:While this scenario is based on processing of RSS feeds, it's relevant to any document, website, or article where you would need to:

  • Переведите любой текст на язык выбора.Translate any text to the language of choice.
  • Найдите ключевые фразы, сущности и настроения пользователей в цифровом контенте.Find key phrases, entities, and user sentiment in digital content.
  • Обнаружение объектов, текста и ориентиров в изображениях, связанных с цифровой статьей.Detect objects, text, and landmarks in images associated with a digital article.
  • Обнаружить людей по полу и возрасту на любом изображении, связанном с цифровым контентом.Detect people by their gender and age in any image associated with digital content.

ArchitectureArchitecture

Схема архитектуры

Поток данных проходит через решение следующим образом.The data flows through the solution as follows:

  1. Лента новостей RSS выступает в качестве генератора, который получает данные из документа или статьи.An RSS news feed acts as the generator that obtains data from a document or article. Например, со статьей данные обычно включают заголовок, резюме исходного тела новостного элемента, а иногда и изображения.For example, with an article, data typically includes a title, a summary of the original body of the news item, and sometimes images.

  2. Процесс включения генератора или проглатывания вставляет статью и любые связанные с ней изображения в коллекциюAzure Cosmos DB.A generator or ingestion process inserts the article and any associated images into an Azure Cosmos DB Collection.

  3. Уведомление запускает функцию глотания в функциях Azure, которая хранит текст статьи в Cosmos DB и изображения статьи (если таковые имеется) в Azure Blob Storage.A notification triggers an ingest function in Azure Functions that stores the article text in Cosmos DB and the article images (if any) in Azure Blob Storage. Затем статья передается в следующую очередь.The article is then passed to the next queue.

  4. Функция перевода запускается событием очереди.A translate function is triggered by the queue event. Он использует API Translate Text Cognitive Services для обнаружения языка, перевода при необходимости и сбора чувств, ключевых фраз и сущностей из тела и заголовка.It uses the Translate Text API of Azure Cognitive Services to detect the language, translate if necessary, and collect the sentiment, key phrases, and entities from the body and the title. Затем он передает статью в следующую очередь.Then it passes the article to the next queue.

  5. Функция обнаружения срабатывает из в очереди статьи.A detect function is triggered from the queued article. Он использует службу компьютерного зрения для обнаружения объектов, ориентиров и письменных слов в связанном изображении, а затем передает статью следующей очереди.It uses the Computer Vision service to detect objects, landmarks, and written words in the associated image, then passes the article to the next queue.

  6. Функция лица срабатывает из в очереди статьи.A face function is triggered is triggered from the queued article. Он использует службу API Azure Face для обнаружения лиц по полу и возрасту в связанном изображении, а затем передает статью следующей очереди.It uses the Azure Face API service to detect faces for gender and age in the associated image, then passes the article to the next queue.

  7. Когда все функции завершены, функция уведомления срабатывает.When all functions are complete, the notify function is triggered. Он загружает обработанные записи для статьи и сканирует их для любых результатов, которые вы хотите.It loads the processed records for the article and scans them for any results you want. В случае обнаружения содержимое помечается и уведомление отправляется в систему по вашему выбору.If found, the content is flagged and a notification is sent to the system of your choice.

На каждом этапе обработки функция записывает результаты в Azure Cosmos DB.At each processing step, the function writes the results to Azure Cosmos DB. В конечном счете, данные могут быть использованы по желанию.Ultimately, the data can be used as desired. Например, его можно использовать для улучшения бизнес-процессов, поиска новых клиентов или выявления проблем с удовлетворенностью клиентов.For example, you can use it to enhance business processes, locate new customers, or identify customer satisfaction issues.

КомпонентыComponents

В этом примере используется следующий список компонентов Azure.The following list of Azure components is used in this example.

  • Azure Storage используется для хранения необработанных файлов изображений и видео, связанных со статьей.Azure Storage is used to hold raw image and video files associated with an article. С помощью службы приложений Azure создается второстепенная учетная запись хранения и используется для размещения кода и журналов функции Azure.A secondary storage account is created with Azure App Service and is used to host the Azure Function code and logs.

  • Azure Cosmos DB содержит информацию о тексте, изображении и отслеживании видео.Azure Cosmos DB holds article text, image, and video tracking information. Здесь также хранятся результаты шагов Cognitive Services.The results of the Cognitive Services steps are also stored here.

  • Функции Azure выполняет функциональный код, используемый для реагирования на сообщения очереди и преобразования входящего содержимого.Azure Functions executes the function code used to respond to queue messages and transform the incoming content. Служба приложений Azure размещает код функции и обрабатывает записи последовательно.Azure App Service hosts the function code and processes the records serially. Этот сценарий включает в себя пять функций: ingest, Transform, Detect Object, Face и Notify.This scenario includes five functions: Ingest, Transform, Detect Object, Face, and Notify.

  • В автобусе Azure Service Bus размещается очереди в автобусе Azure, используемые функциями.Azure Service Bus hosts the Azure Service Bus queues used by the functions.

  • Azure Cognitive Services предоставляет ИИ для конвейера на основе реализации службы компьютерного зрения, Face APIи службы машинного перевода Translate Text.Azure Cognitive Services provides the AI for the pipeline based on implementations of the Computer Vision service, Face API, and Translate Text machine translation service.

  • Azure Application Insights предоставляет аналитику, которая поможет вам диагностировать проблемы и понимать функциональность приложения.Azure Application Insights provides analytics to help you diagnose issues and to understand functionality of your application.

Альтернативные вариантыAlternatives

  • Вместо того, чтобы использовать шаблон, основанный на уведомлении очереди и функциях Azure, используйте другой шаблон для этого потока данных.Instead of using a pattern based on queue notification and Azure Functions, use another pattern for this data flow. Например, темы работы с шинами Azure можно использовать для параллельной обработки различных частей статьи, в отличие от последовательной обработки, выполненной в этом примере.For example, Azure Service Bus Topics can be used to processes the various parts of the article in parallel as opposed to the serial processing done in this example. Для получения дополнительной информации сравните очереди и темы.For more information, compare queues and topics.

  • Используйте приложения Azure Logic Apps для реализации кода функции и для блокировки уровня записи, такой как Redlock (необходимо для параллельной обработки до тех пор, пока Azure Cosmos DB не поддерживает частичное обновление документов).Use Azure Logic Apps to implement the function code and implement record-level locking such as Redlock (needed for parallel processing until Azure Cosmos DB supports partial document updates). Для получения дополнительной информации сравните функции и логические приложения.For more information, compare Functions and Logic Apps.

  • Внедрить эту архитектуру с помощью индивидуальных компонентов ИИ, а не существующих служб Azure.Implement this architecture using customized AI components rather than existing Azure services. Например, расширить конвейер с помощью настраиваемых моделей, которая обнаруживает определенных людей на изображении, в отличие от общих данных о людях, собранных в этом примере.For example, extend the pipeline using a customized model that detects certain people in an image as opposed to the generic people count, gender, and age data collected in this example. Чтобы использовать индивидуальные модели машинного обучения или ИИ с этой архитектурой, создайте модели в виде конечных точек RESTful, чтобы их можно было вызвать из Azure Functions.To use customized machine learning or AI models with this architecture, build the models as RESTful endpoints so they can be called from Azure Functions.

  • Используйте другой механизм ввода вместо RSS-каналов.Use a different input mechanism instead of RSS feeds. Используйте несколько генераторов или процессов приема для кормления Azure Cosmos DB и Azure Storage.Use multiple generators or ingestion processes to feed Azure Cosmos DB and Azure Storage.

  • Azure Cognitive Search — это функция ИИ в Azure Search, которая также может использоваться для извлечения текста из изображений, капли и других неструктурированных источников данных.Azure Cognitive Search is an AI feature in Azure Search that can also used to extract text from images, blobs, and other unstructured data sources.

ОсобенностиConsiderations

Для простоты в этом примере в этом примере используется лишь несколько доступных AAP и служб из когнитивных служб Azure.For simplicity, this example scenario uses only a few of the available APIs and services from Azure Cognitive Services. Например, текст в изображениях можно анализировать с помощью API text Analytics.For example, text in images can be analyzed using the Text Analytics API. Целевой язык в этом сценарии считается английским, но вы можете изменить входный данный на любой поддерживаемый язык по вашему выбору.The target language in this scenario is assumed to be English, but you can change the input to any supported language of your choice.

МасштабируемостьScalability

Масштабирование функций Azure зависит от плана хостинга, который вы используете.Azure Functions scaling depends on the hosting plan you use. Это решение предполагает план потребления,в котором вычислительная мощность автоматически выделяется функциям при необходимости.This solution assumes a Consumption plan, in which compute power is automatically allocated to the functions when required. Вы платите только тогда, когда ваши функции работают.You pay only when your functions are running. Другой вариант заключается в использовании плана службы приложений Azure, который позволяет масштабировать между уровнями для выделения различного количества ресурсов.Another option is to use an Azure App Service plan, which allows you to scale between tiers to allocate a different amount of resources.

С Azure Cosmos DB ключ должен распределить рабочую нагрузку примерно равномерно среди достаточно большого количества ключей раздела.With Azure Cosmos DB, the key is to distribute your workload roughly evenly among a sufficiently large number of partition keys. Нет никаких ограничений на общий объем данных, которые контейнер может хранить, или на общее количество пропускной выхаживаемостью, которую может поддерживать контейнер.There's no limit to the total amount of data that a container can store or to the total amount of throughput that a container can support.

Управление и лесозаготовкиManagement and logging

Это решение использует Application Insights для сбора информации о производительности и регистрации.This solution uses Application Insights to collect performance and logging information. Экземпляр «Исследования приложений» создается с развертыванием в той же группе ресурсов, что и другие службы, необходимые для этого развертывания.An instance of Application Insights is created with the deployment in the same resource group as the other services needed for this deployment.

Для просмотра журналов, генерируемых решением:To view the logs generated by the solution:

  1. Перейдите на портал Azure и перейдите к группе ресурсов, созданной для развертывания.Go to Azure portal and navigate to the resource group created for the deployment.

  2. Нажмите на экземпляр Application Insights.Click the Application Insights instance.

  3. Из раздела Application Insights перейдите на поиск\ и поиск данных.From the Application Insights section, navigate to Investigate\Search and search the data.

БезопасностьSecurity

Azure Cosmos DB использует защищенное соединение и# общую подпись доступа через C SDK, предоставленный корпорацией Майкрософт.Azure Cosmos DB uses a secured connection and shared access signature through the C# SDK provided by Microsoft. Других внешних поверхностных участков нет.There are no other externally facing surface areas. Узнайте больше о рекомендациях по безопасности для Azure Cosmos DB.Learn more about security best practices for Azure Cosmos DB.

ЦеныPricing

По оценкам, ежедневные затраты на $сохранение этого развертывания составляют примерно 20 американских данных без каких-либо данных, перемещающихся через систему.The estimated daily cost to keep this deployment available is approximately $20 U.S. with no data moving through the system.

Azure Cosmos DB является мощным, но несет наибольшие расходы в этом развертывании.Azure Cosmos DB is powerful but incurs the greatest cost in this deployment. Можно использовать другое решение для хранения данных, рефакторинг кода Azure Functions.You can use another storage solution by refactoring the Azure Functions code provided.

Цены на функции Azure варьируются в зависимости от плана, в который они выполняется.Pricing for Azure Functions varies depending on the plan it runs in.

Развертывание сценарияDeploy the scenario

Примечание

Необходимо иметь учетную запись Azure.You must have an existing Azure account. Если у вас еще нет подписки Azure, создайте бесплатную учетную запись, прежде чем начинать работу.If you don't have an Azure subscription, create a free account before you begin.

Весь код для этого сценария доступен в репозитории GitHub.All the code for this scenario is available in the GitHub repository. Этот репозиторий содержит исходный код, используемый для создания приложения генератора, которое питает конвейер для этой демонстрации.This repository contains the source code used to build the generator application that feeds the pipeline for this demo.