Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
A computação serverless baseia-se na capacidade de se focar em peças individuais de lógica que são repetíveis e sem estado. Estas peças não requerem gestão de infraestrutura e consomem recursos apenas pelos segundos, ou milissegundos, que duram. No centro do movimento da computação serverless estão as funções, que são disponibilizadas no ecossistema Azure pela Azure Functions. Para saber mais sobre outros ambientes de execução serverless no Azure, veja a página serverless no Azure .
Com a integração nativa entre Azure Cosmos DB e Azure Functions, pode criar gatilhos de base de dados, ligações de entrada e ligações de saída diretamente na sua conta do Azure Cosmos DB. Usando Azure Functions e Azure Cosmos DB, pode criar e implementar aplicações serverless orientadas a eventos com acesso de baixa latência a dados ricos para uma base global de utilizadores.
O Azure Functions pode criar ligações isoladas à base de dados por invocação se o cliente da base de dados não for devidamente gerido, o que pode afetar o desempenho da ligação em situações de elevada concorrência, especialmente no plano de Consumo. No entanto, ao usar ligações ou disparadores do Cosmos DB, o Azure Functions reutiliza internamente um cliente partilhado do SDK do Cosmos DB, garantindo um pool de ligações eficiente entre múltiplas invocações. O Azure Cosmos DB suporta tanto modos de conectividade baseados em HTTP como em TCP. Esta arquitetura suporta cargas de trabalho escaláveis e de alto desempenho que requerem acesso dinâmico a dados.
Visão geral
O Azure Cosmos DB e o Azure Functions permitem-lhe integrar as suas bases de dados e aplicações serverless das seguintes formas:
- Crie um disparador de Azure Functions baseado em eventos para o Azure Cosmos DB. Este gatilho depende dos feeds de alterações para monitorizar alterações no seu contentor Azure Cosmos DB. Quando são feitas alterações a um contentor, o fluxo de alimentação de alterações é enviado para o trigger, que invoca a Função Azure.
- Alternativamente, vincule uma Função Azure a um contentor Azure Cosmos DB usando uma ligação de entrada. As ligações de entrada leem dados de um contentor quando uma função é executada.
- Vincule uma função a um contentor Azure Cosmos DB usando uma ligação de saída. As ligações de saída escrevem dados num contentor quando uma função é concluída.
Observação
Atualmente, as associações de disparo, entrada e saída do Azure Functions para o Azure Cosmos DB são suportadas apenas com a API para NoSQL. Para todas as outras APIs do Azure Cosmos DB, deve aceder à base de dados a partir da sua função usando o cliente estático da sua API.
O diagrama seguinte ilustra cada uma destas três integrações:
As funções de trigger, ligação de entrada e ligação de saída do Azure Functions para Azure Cosmos DB podem ser usadas nas seguintes combinações:
- Um gatilho Azure Functions para o Azure Cosmos DB pode ser usado com uma ligação de saída a um contentor diferente do Azure Cosmos DB. Depois de uma função executar uma ação num item no feed de alterações, pode escrevê-la noutro contentor (escrevê-la no mesmo contentor de onde veio criaria efetivamente um ciclo recursivo). Ou pode usar um gatilho Azure Functions para o Azure Cosmos DB para migrar efetivamente todos os itens alterados de um contentor para outro, usando uma ligação de saída.
- As ligações de entrada e de saída para o Azure Cosmos DB podem ser usadas na mesma Função Azure. Isto funciona bem nos casos em que se quer encontrar certos dados com a ligação de entrada, modificá-los na Função Azure e depois guardá-los no mesmo contentor ou noutro contentor após a modificação.
- Uma ligação de entrada para um contentor do Azure Cosmos DB pode ser usada na mesma função que o gatilho do Azure Functions para o Azure Cosmos DB, e pode ser usada com ou sem uma ligação de saída também. Pode usar esta combinação para aplicar informação de câmbio atualizada (obtida através de uma ligação de entrada a um container de câmbio) ao feed de alterações de novas encomendas realizadas no serviço de carrinho de compras. O total atualizado do carrinho de compras, com a conversão atual aplicada, pode ser registrado num terceiro armazenamento utilizando uma ligação de saída.
Casos de uso
Os casos de uso seguintes demonstram algumas formas de tirar o máximo partido dos seus dados do Azure Cosmos DB – ligando os seus dados ao Azure Functions orientado por eventos.
Caso de uso IoT - Gatilho do Azure Functions e associação de saída para o Azure Cosmos DB
Em implementações de IoT, pode invocar uma função quando a luz de verificação do motor é exibida num carro ligado.
Implementação: Use um gatilho e uma vinculação de saída do Azure Functions para o Azure Cosmos DB
- Um disparador Azure Functions para o Azure Cosmos DB é usado para disparar eventos relacionados com alertas de carro, como a luz de aviso do motor a acender num carro conectado.
- Quando a luz do motor de verificação acende, os dados do sensor são enviados para a Azure Cosmos DB.
- O Azure Cosmos DB cria ou atualiza novos documentos de dados de sensores, depois essas alterações são transmitidas para o disparador Azure Functions do Azure Cosmos DB.
- O disparador é invocado em cada alteração de dados na recolha de dados do sensor, pois todas as alterações são transmitidas através do feed de alterações.
- Uma condição de limiar é usada na função para enviar os dados do sensor para o departamento de garantias.
- Se a temperatura também ultrapassar um determinado valor, é também enviado um alerta ao proprietário.
- A ligação de saída na função atualiza o registo do carro noutro contentor Azure Cosmos DB para armazenar informação sobre o evento do motor de verificação.
A imagem seguinte mostra o código escrito no portal Azure para este trigger.
Caso de uso financeiro - Disparador temporizador e associação de entrada
Em implementações financeiras, pode invocar uma função quando o saldo de uma conta bancária fica abaixo de um determinado montante.
Implementação: Um gatilho temporizador com uma ligação de entrada na base de dados Azure Cosmos
- Usando um gatilho temporizador, pode recuperar a informação do saldo da conta bancária armazenada num contentor Azure Cosmos DB em intervalos temporizados usando uma ligação de entrada.
- Se o saldo estiver abaixo do limiar de saldo inferior definido pelo utilizador, então faça um seguimento com uma ação da Função Azure.
- A ligação de saída pode ser uma integração com o SendGrid que envia um email de uma conta de serviço para os endereços identificados para cada uma das contas de baixo saldo.
As imagens seguintes mostram o código no portal Azure para este cenário.
Caso de uso para jogos - Ligação de ativação e saída das Funções Azure para o Azure Cosmos DB
Nos jogos, quando um novo utilizador é criado, podes procurar outros utilizadores que possam conhecê-lo usando a base de dados Azure Cosmos para Gremlin. Depois podes escrever os resultados numa base de dados Azure Cosmos ou SQL para facilitar a recuperação.
Implementação: Use um gatilho e uma vinculação de saída do Azure Functions para o Azure Cosmos DB
- Usando uma base de dados de grafos do Azure Cosmos DB para armazenar todos os utilizadores, pode criar uma nova função com um trigger do Azure Functions para o Azure Cosmos DB.
- Sempre que um novo utilizador é inserido, a função é invocada e o resultado é armazenado através de uma ligação de saída.
- A função consulta a base de dados de grafos para procurar todos os utilizadores diretamente relacionados com o novo utilizador e devolve esse conjunto de dados à função.
- Estes dados são então armazenados no Azure Cosmos DB, que pode ser facilmente recuperado por qualquer aplicação front-end que mostre ao novo utilizador os seus amigos ligados.
Caso de uso no retalho - Múltiplas funções
Nas implementações de retalho, quando um utilizador adiciona um item ao seu cesto, agora tem a flexibilidade de criar e invocar funções para componentes opcionais do pipeline de negócio.
Implementação: Múltiplos gatilhos Azure Functions para Azure Cosmos DB a monitorizar um contentor
- Pode criar várias Azure Functions adicionando gatilhos do Azure Functions para o Azure Cosmos DB a cada uma – todos eles escutando o mesmo feed de alterações dos dados do carrinho de compras. Quando múltiplas funções ouvem o mesmo feed de alterações, é necessária uma nova coleção de arrendamentos para cada função. Para obter mais informações sobre coleções de aluguer, consulte Compreender a biblioteca Change Feed Processor.
- Sempre que um novo artigo é adicionado ao carrinho de compras de um utilizador, cada função é invocada independentemente pelo feed de alterações do contentor do carrinho de compras.
Uma função pode usar o conteúdo do cesto atual para alterar o ecrã de outros itens que possam interessar ao utilizador.
Outra função pode atualizar os totais de inventário.
Outra função pode enviar informações dos clientes de certos produtos para o departamento de marketing, que lhes envia um cartão promocional.
Qualquer departamento pode criar uma função Azure para o Azure Cosmos DB ao monitorizar o feed de alterações, e assegurar que não haverá atrasos em eventos críticos de processamento de encomendas no processo.
Em todos estes casos de uso, porque a função desacoplou a própria aplicação, não é necessário criar novas instâncias de aplicação constantemente. Em vez disso, o Azure Functions cria funções individuais para completar processos discretos conforme necessário.
Tooling
A integração nativa entre Azure Cosmos DB e Azure Functions está disponível no portal Azure e no Visual Studio.
No portal Azure Functions, pode criar um gatilho. Para instruções de início rápido, veja Criar um disparador Azure Functions para Azure Cosmos DB no portal Azure.
No portal Azure Cosmos DB, pode adicionar um gatilho Azure Functions para Azure Cosmos DB a uma aplicação Azure Function existente no mesmo grupo de recursos.
No Visual Studio, pode criar o gatilho usando as Ferramentas Azure Functions:
Porque escolher a integração com Azure Functions para computação serverless?
O Azure Functions permite criar unidades de trabalho escaláveis, ou peças de lógica concisas que podem ser executadas a pedido, sem necessidade de provisionar ou gerir a infraestrutura. Ao usar o Azure Functions, não precisa de criar uma aplicação completa para responder a alterações na sua base de dados Azure Cosmos DB, pode criar pequenas funções reutilizáveis para tarefas específicas. Além disso, pode também usar dados do Azure Cosmos como entrada ou saída para uma Função Azure em resposta a eventos como pedidos HTTP ou um gatilho temporizado.
O Azure Cosmos DB é a base de dados recomendada para a sua arquitetura de computação serverless pelas seguintes razões:
Acesso instantâneo a todos os seus dados: Tem acesso granular a todos os valores armazenados porque o Azure Cosmos DB indexa automaticamente todos os dados por defeito e torna esses índices imediatamente disponíveis. Isto significa que podes consultar constantemente, atualizar e adicionar novos itens à tua base de dados e ter acesso instantâneo através do Azure Functions.
Sem esquema. O Azure Cosmos DB é sem esquema - por isso é único capaz de gerir qualquer saída de dados de uma Função Azure. Esta abordagem de "lidar com tudo" torna simples criar várias Funções que todas gerem para o Azure Cosmos DB.
Taxa de processamento escalável. A largura de banda pode ser escalada para cima e para baixo instantaneamente no Azure Cosmos DB. Se tiveres centenas ou milhares de Funções a consultar e a escrever no mesmo contentor, podes escalar a tua RU/s para lidar com a carga. Todas as funções podem funcionar em paralelo usando o seu RU/s atribuído e os seus dados têm consistência garantida.
Replicação global. Pode replicar dados do Azure Cosmos DB em todo o mundo para reduzir a latência, geolocalizando os seus dados mais perto de onde estão os seus utilizadores. Como em todas as consultas do Azure Cosmos DB, os dados provenientes de triggers baseados em eventos são lidos da Azure Cosmos DB mais próxima do utilizador.
Se queres integrar com o Azure Functions para armazenar dados e não precisares de indexação profunda ou se precisares de guardar anexos e ficheiros multimédia, o gatilho Azure Blob Storage pode ser uma opção melhor.
Benefícios das Azure Functions:
Orientado por eventos. O Azure Functions é orientado por eventos e pode ouvir um feed de alterações do Azure Cosmos DB. Isto significa que não precisas de criar lógica de escuta, apenas estás atento às mudanças que estás a ouvir.
Sem limites. As funções executam-se em paralelo e o serviço aloca tantos quantos forem necessários. Defines os parâmetros.
Bom para tarefas rápidas. O serviço inicia novas instâncias de funções sempre que um evento é ativado e encerra-as assim que a função termina. Só pagas pelo tempo que as tuas funções estão a funcionar.
Se não tem a certeza se Flow, Logic Apps, Azure Functions ou WebJobs são os melhores para a sua implementação, veja Escolher entre Flow, Logic Apps, Functions e WebJobs.
Próximos passos
Agora vamos ligar o Azure Cosmos DB e o Azure Functions de forma real: