Distributed Locking - Quando usar e como implementar em .NET
Sobre este curso
Aprenda o conceito de Distributed Locking e veja implementações práticas em .NET utilizando Redis (nativo e bibliotecas) e Azure Blob Storage para gerenciar concorrência em sistemas distribuídos.
Neste vídeo, André Secco aborda um padrão fundamental para sistemas distribuídos: o Distributed Locking (Bloqueio Distribuído). O conteúdo começa explicando a teoria por trás do mecanismo — como controlar o acesso concorrente a recursos compartilhados entre múltiplas instâncias de uma aplicação. Em seguida, parte para a prática, demonstrando diferentes formas de implementação no ecossistema .NET, desde o uso "cru" do Redis até bibliotecas especializadas como RedLock.net e DistributedLock, e até uma alternativa usando Azure Blob Storage.
O que você vai aprender
- Conceitos Fundamentais: O que é Lock Distribuído, para que serve e como funciona o fluxo de adquirir, renovar (refresh) e liberar um lock.
- Implementação Manual com Redis: Como criar uma estratégia de lock usando apenas o
StackExchange.Redis. - RedLock.net: Análise e implementação utilizando a biblioteca baseada no algoritmo Redlock.
- Biblioteca DistributedLock: Uso da biblioteca mais moderna e recomendada (
DistributedLock) com suporte a diversos providers. - Auto-refresh: Como as bibliotecas lidam automaticamente com a extensão do tempo do lock se o processamento demorar mais que o previsto.
- Azure Blob Storage como Lock: Uma alternativa de implementação usando Blob Leases para cenários onde o Redis não está disponível ou para processos de longa duração.
- Comparativo: Prós e contras das diferentes abordagens e pacotes.
Pré-requisitos
- Conhecimento sólido em C# e .NET.
- Entendimento básico de sistemas distribuídos e problemas de concorrência.
- Familiaridade com Redis e Docker (para rodar o ambiente local).
- Noções de Azure (para a parte de Blob Storage).
Para quem é este curso
Desenvolvedores Backend e Arquitetos de Software que trabalham com microsserviços ou sistemas distribuídos e precisam garantir a consistência de dados ao acessar recursos compartilhados em ambientes de alta concorrência.