Ingestão em massa e análise de feeds de notícias no AzureMass ingestion and analysis of news feeds on Azure

Este cenário de exemplo descreve um pipeline para ingestão em massa e análise quase em tempo real de documentos usando feeds públicos de notícias RSS.This example scenario describes a pipeline for mass ingestion and near real-time analysis of documents using public RSS news feeds. Ele usa os serviços cognitivas do Azure para oferecer informações úteis, incluindo tradução de texto, reconhecimento facial e detecção de sentimentos.It uses Azure Cognitive Services to offer useful insights including text translation, facial recognition, and sentiment detection.

Esse cenário contém exemplos de feeds de notícias em inglês, russoe alemão , mas você pode estendê-los facilmente para outros RSS feeds.This scenario contains examples for English, Russian, and German news feeds, but you can easily extend it to other RSS feeds. Para facilitar a implantação, a coleta de dados, o processamento e a análise são baseados inteiramente nos serviços do Azure.For ease of deployment, the data collection, processing, and analysis are based entirely on Azure services.

Casos de uso relevantesRelevant use cases

Embora esse cenário se baseie no processamento de RSS feeds, ele é relevante para qualquer documento, site ou artigo em que você precise:While this scenario is based on processing of RSS feeds, it's relevant to any document, website, or article where you would need to:

  • Traduza qualquer texto para o idioma escolhido.Translate any text to the language of choice.
  • Encontre frases-chave, entidades e sentimentos do usuário no conteúdo digital.Find key phrases, entities, and user sentiment in digital content.
  • Detecte objetos, texto e pontos de referência em imagens associadas a um artigo digital.Detect objects, text, and landmarks in images associated with a digital article.
  • Detecte pessoas por seu gênero e idade em qualquer imagem associada ao conteúdo digital.Detect people by their gender and age in any image associated with digital content.

ArquiteturaArchitecture

Diagrama da arquitetura

Os dados fluem pela solução da seguinte maneira:The data flows through the solution as follows:

  1. Um RSS News Feed atua como o gerador que obtém dados de um documento ou artigo.An RSS news feed acts as the generator that obtains data from a document or article. Por exemplo, com um artigo, os dados normalmente incluem um título, um resumo do corpo original do item de notícias e, às vezes, imagens.For example, with an article, data typically includes a title, a summary of the original body of the news item, and sometimes images.

  2. Um gerador ou processo de ingestão insere o artigo e quaisquer imagens associadas em uma coleçãode Azure Cosmos DB.A generator or ingestion process inserts the article and any associated images into an Azure Cosmos DB Collection.

  3. Uma notificação dispara uma função de ingestão no Azure Functions que armazena o texto do artigo em Cosmos DB e as imagens do artigo (se houver) no armazenamento de BLOBs do Azure.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. O artigo é passado para a próxima fila.The article is then passed to the next queue.

  4. Uma função de conversão é disparada pelo evento de fila.A translate function is triggered by the queue event. Ele usa a API de conversão de texto dos serviços cognitivas do Azure para detectar o idioma, converter, se necessário, e coletar a opinião, as frases-chave e as entidades do corpo e do título.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. Em seguida, ele passa o artigo para a próxima fila.Then it passes the article to the next queue.

  5. Uma função de detecção é disparada do artigo na fila.A detect function is triggered from the queued article. Ele usa o serviço de Pesquisa Visual computacional para detectar objetos, pontos de referência e palavras escritas na imagem associada e, em seguida, passa o artigo para a próxima fila.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. Uma função facial é disparada pelo artigo na fila.A face function is triggered is triggered from the queued article. Ele usa o serviço de API de detecção facial do Azure para detectar rostos de gênero e idade na imagem associada e, em seguida, passa o artigo para a próxima fila.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. Quando todas as funções são concluídas, a função Notify é disparada.When all functions are complete, the notify function is triggered. Ele carrega os registros processados para o artigo e os verifica para todos os resultados desejados.It loads the processed records for the article and scans them for any results you want. Se for encontrado, o conteúdo será sinalizado e uma notificação será enviada ao sistema de sua escolha.If found, the content is flagged and a notification is sent to the system of your choice.

Em cada etapa de processamento, a função grava os resultados em Azure Cosmos DB.At each processing step, the function writes the results to Azure Cosmos DB. Por fim, os dados podem ser usados conforme desejado.Ultimately, the data can be used as desired. Por exemplo, você pode usá-lo para aprimorar processos de negócios, localizar novos clientes ou identificar problemas de satisfação do cliente.For example, you can use it to enhance business processes, locate new customers, or identify customer satisfaction issues.

ComponentesComponents

A lista de componentes do Azure a seguir é usada neste exemplo.The following list of Azure components is used in this example.

  • O armazenamento do Azure é usado para manter arquivos brutos de imagem e vídeo associados a um artigo.Azure Storage is used to hold raw image and video files associated with an article. Uma conta de armazenamento secundária é criada com Azure App serviço e é usada para hospedar o código e os logs de função do 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 mantém informações de texto, imagem e controle de vídeo do artigo.Azure Cosmos DB holds article text, image, and video tracking information. Os resultados das etapas de serviços cognitivas também são armazenados aqui.The results of the Cognitive Services steps are also stored here.

  • Azure Functions executa o código de função usado para responder às mensagens da fila e transformar o conteúdo de entrada.Azure Functions executes the function code used to respond to queue messages and transform the incoming content. Azure app serviço hospeda o código de função e processa os registros em série.Azure App Service hosts the function code and processes the records serially. Esse cenário inclui cinco funções: ingestão, transformação, detecção de objeto, face e notificação.This scenario includes five functions: Ingest, Transform, Detect Object, Face, and Notify.

  • O barramento de serviço do Azure hospeda as filas do barramento de serviço do Azure usadas pelas funções.Azure Service Bus hosts the Azure Service Bus queues used by the functions.

  • Os Serviços cognitivas do Azure fornecem o ia para o pipeline com base nas implementações do serviço de Pesquisa Visual computacional , API de detecção faciale conversão do serviço de tradução automática de texto .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.

  • O aplicativo Azure insights fornece análise para ajudá-lo a diagnosticar problemas e a compreender a funcionalidade do seu aplicativo.Azure Application Insights provides analytics to help you diagnose issues and to understand functionality of your application.

AlternativasAlternatives

  • Em vez de usar um padrão baseado em notificação de fila e Azure Functions, use outro padrão para esse fluxo de dados.Instead of using a pattern based on queue notification and Azure Functions, use another pattern for this data flow. Por exemplo, os Tópicos do barramento de serviço do Azure podem ser usados para processar as várias partes do artigo em paralelo, em vez do processamento serial feito neste exemplo.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. Para obter mais informações, compare filas e tópicos.For more information, compare queues and topics.

  • Use os aplicativos lógicos do Azure para implementar o código de função e implementar o bloqueio de nível de registro, como Redlock (necessário para processamento paralelo até que Azure Cosmos DB ofereça suporte a atualizações parciais de documento).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). Para obter mais informações, Compare funções e aplicativos lógicos.For more information, compare Functions and Logic Apps.

  • Implemente essa arquitetura usando componentes personalizados de ia, em vez de serviços existentes do Azure.Implement this architecture using customized AI components rather than existing Azure services. Por exemplo, estenda o pipeline usando um modelo personalizado que detecta determinadas pessoas em uma imagem em oposição à contagem de pessoas genéricas, ao gênero e aos dados de idade coletados neste exemplo.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. Para usar o Machine Learning personalizado ou modelos de ia com essa arquitetura, compile os modelos como pontos de extremidade RESTful para que eles possam ser chamados a partir de 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.

  • Use um mecanismo de entrada diferente em vez de RSS feeds.Use a different input mechanism instead of RSS feeds. Use vários geradores ou processos de ingestão para alimentar Azure Cosmos DB e armazenamento do Azure.Use multiple generators or ingestion processes to feed Azure Cosmos DB and Azure Storage.

  • O Azure pesquisa cognitiva é um recurso de ia no Azure Search que também pode ser usado para extrair texto de imagens, BLOBs e outras fontes de dados não estruturados.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.

ConsideraçõesConsiderations

Para simplificar, este cenário de exemplo usa apenas algumas das APIs e serviços disponíveis dos serviços cognitivas do Azure.For simplicity, this example scenario uses only a few of the available APIs and services from Azure Cognitive Services. Por exemplo, o texto em imagens pode ser analisado usando o API de análise de texto.For example, text in images can be analyzed using the Text Analytics API. O idioma de destino neste cenário é considerado inglês, mas você pode alterar a entrada para qualquer idioma com suporte de sua escolha.The target language in this scenario is assumed to be English, but you can change the input to any supported language of your choice.

EscalabilidadeScalability

O dimensionamento de Azure Functions depende do plano de hospedagem que você usa.Azure Functions scaling depends on the hosting plan you use. Essa solução pressupõe um plano de consumo, no qual poder de computação é automaticamente alocada para as funções quando necessário.This solution assumes a Consumption plan, in which compute power is automatically allocated to the functions when required. Você paga somente quando suas funções estão em execução.You pay only when your functions are running. Outra opção é usar um plano de serviço Azure app , que permite que você dimensione entre as camadas para alocar uma quantidade diferente de recursos.Another option is to use an Azure App Service plan, which allows you to scale between tiers to allocate a different amount of resources.

Com o Azure Cosmos DB, a chave é distribuir sua carga de trabalho aproximadamente de forma uniforme entre um número suficientemente grande de chaves de partição.With Azure Cosmos DB, the key is to distribute your workload roughly evenly among a sufficiently large number of partition keys. Não há limite para a quantidade total de dados que um contêiner pode armazenar ou para a quantidade total de taxa de transferência que um contêiner pode dar suporte.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.

Gerenciamento e registro em logManagement and logging

Essa solução usa Application insights para coletar informações de desempenho e registro em log.This solution uses Application Insights to collect performance and logging information. Uma instância de Application Insights é criada com a implantação no mesmo grupo de recursos que os outros serviços necessários para essa implantação.An instance of Application Insights is created with the deployment in the same resource group as the other services needed for this deployment.

Para exibir os logs gerados pela solução:To view the logs generated by the solution:

  1. Vá para portal do Azure e navegue até o grupo de recursos criado para a implantação.Go to Azure portal and navigate to the resource group created for the deployment.

  2. Clique na instância de Application insights .Click the Application Insights instance.

  3. Na seção Application insights , navegue para investigar a \ pesquisa e Pesquisar os dados.From the Application Insights section, navigate to Investigate\Search and search the data.

SegurançaSecurity

Azure Cosmos DB usa uma conexão segura e uma assinatura de acesso compartilhado por meio do SDK do C # fornecido pela Microsoft.Azure Cosmos DB uses a secured connection and shared access signature through the C# SDK provided by Microsoft. Não há outras áreas de superfície voltadas externamente.There are no other externally facing surface areas. Saiba mais sobre as práticas recomendadas de segurança para Azure Cosmos DB.Learn more about security best practices for Azure Cosmos DB.

PreçosPricing

O custo diário estimado para manter essa implantação disponível é de aproximadamente $ 20 EUA, sem dados sendo movidos pelo sistema.The estimated daily cost to keep this deployment available is approximately $20 U.S. with no data moving through the system.

Azure Cosmos DB é potente, mas incorre no maior custo nessa implantação.Azure Cosmos DB is powerful but incurs the greatest cost in this deployment. Você pode usar outra solução de armazenamento Refatorando o código de Azure Functions fornecido.You can use another storage solution by refactoring the Azure Functions code provided.

Os preços de Azure Functions variam de acordo com o plano em que é executado.Pricing for Azure Functions varies depending on the plan it runs in.

Implantar o cenárioDeploy the scenario

Observação

Você deve ter uma conta do Azure já criada.You must have an existing Azure account. Caso não tenha uma assinatura do Azure, crie uma conta gratuita antes de começar.If you don't have an Azure subscription, create a free account before you begin.

Todo o código para esse cenário está disponível no repositório GitHub .All the code for this scenario is available in the GitHub repository. Esse repositório contém o código-fonte usado para criar o aplicativo gerador que alimenta o pipeline para esta demonstração.This repository contains the source code used to build the generator application that feeds the pipeline for this demo.