.NET

Azure Functions e Lazy Initialization com o Couchbase Server

O Azure Functions ainda é novo para mim, e estou aprendendo à medida que avanço. Escrevi em um blog sobre minha incursão no Azure Functions com o Couchbase mais de um mês atrás. Logo depois de publicar isso, recebi alguns comentários úteis sobre a maneira como eu estava instanciando um cluster (e um bucket) do Couchbase.

Eu havia assumido (erroneamente) que não havia como salvar o estado entre as chamadas do Azure Function. Foi por isso que criei um GetCluster() que era chamado toda vez que a função era executada. No entanto, a inicialização de um método do Couchbase Aglomerado é uma operação cara. Quanto menos vezes você o instanciar, melhor.

Você pode acompanhar a atualização do código-fonte para esta postagem de blog no Github.

Estado estático

Tive dificuldade em encontrar documentação sobre a possibilidade de usar um estático para reutilização entre chamadas de função. Suponho que eu deveria ter feito experimentos, como colega Microsoft MVP Mark Heath fez. Em vez disso, eu fez a pergunta ao StackOverflow.

Em resumo: sim. A AglomeradoO valor de um valor, instanciado e salvo em um membro estático, pode ser reutilizado entre chamadas de função. De acordo com a postagem de Mark acima, não há garantia de quanto tempo esse valor sobreviverá. Mas essa é uma troca esperada que você faz ao adotar a abordagem "sem servidor".

Inicialização preguiçosa no Azure Functions

O simples uso de um membro estático funcionaria, mas não é seguro para threads. Há algumas maneiras de resolver esse problema, mas uma maneira fácil que está incorporada diretamente na estrutura do .NET é usar Inicialização preguiçosa com Preguiçoso.

Lazy Initialization in Azure Functions

Primeiro, removi o GetBucket e GetCluster métodos. Em seguida, criei um Preguiçoso propriedade para substituí-los.

Criei apenas uma única propriedade para um bucket, pois é tudo de que preciso para este exemplo. Mas se você precisar usar o cluster, poderá facilmente criar sua própria propriedade Preguiçoso propriedade. (Quando você tem um cluster, obter um bucket é uma operação relativamente barata).

Usando uma propriedade Lazy

Quando você instanciar um Preguiçoso você o fornece com um lambda de inicialização. Esse lambda não será executado até que o objeto Valor é de fato chamada pela primeira vez.

Por exemplo, observe o Valor entre Balde e GetAsync na versão atualizada do meu Azure Functions:

Se essa for a primeira vez Valor for usado, o cluster será inicializado. Caso contrário, ele usará o cluster já inicializado (tente experimentar com um Guia em vez de um Balde).

Resumo

O estado pode ser salvo entre as chamadas da Função do Azure usando um membro estático. Certifique-se de que ele seja thread-safe (usando Preguiçoso ou algo do gênero). Não faça nenhuma suposição sobre quanto tempo esse objeto permanecerá no local.

Mais alguma coisa que eu tenha perdido? Você está usando o Azure Functions com o Couchbase? Gostaria muito de ouvir sua opinião. Por favor, deixe um comentário abaixo ou me envie um ping em Twitter @mgroves.

Compartilhe este artigo
Receba atualizações do blog do Couchbase em sua caixa de entrada
Esse campo é obrigatório.

Author

Posted by Matthew Groves

Matthew D. Groves is a guy who loves to code. It doesn't matter if it's C#, jQuery, or PHP: he'll submit pull requests for anything. He has been coding professionally ever since he wrote a QuickBASIC point-of-sale app for his parent's pizza shop back in the 90s. He currently works as a Senior Product Marketing Manager for Couchbase. His free time is spent with his family, watching the Reds, and getting involved in the developer community. He is the author of AOP in .NET, Pro Microservices in .NET, a Pluralsight author, and a Microsoft MVP.

Deixe um comentário

Pronto para começar a usar o Couchbase Capella?

Iniciar a construção

Confira nosso portal do desenvolvedor para explorar o NoSQL, procurar recursos e começar a usar os tutoriais.

Use o Capella gratuitamente

Comece a trabalhar com o Couchbase em apenas alguns cliques. O Capella DBaaS é a maneira mais fácil e rápida de começar.

Entre em contato

Deseja saber mais sobre as ofertas do Couchbase? Deixe-nos ajudar.