Microservices with Databases
Saga Pattern¶
O padrão Saga é uma maneira de gerenciar transações distribuídas em sistemas, onde uma série de transações menores são realizadas e podem ser revertidas caso algo falhe.
sequenceDiagram
participant S as Serviço A
participant B as Serviço B
participant C as Serviço C
participant T as Serviço de Transações
S->>T: Iniciar Transação
T->>S: Confirma Início
S->>B: Enviar Requisição para Serviço B
B->>S: Confirma Ação de B
S->>C: Enviar Requisição para Serviço C
C->>S: Confirma Ação de C
S->>T: Concluir Transação
T->>S: Confirma Conclusão
Em caso de falha em um dos serviços, há um processo de compensação para reverter as ações anteriores: sequenceDiagram
participant S as Serviço A
participant B as Serviço B
participant T as Serviço de Transações
participant R as Reversão
S->>T: Iniciar Transação
T->>S: Confirma Início
S->>B: Enviar Requisição para Serviço B
B->>S: Falha em B
S->>R: Reverter Transações
R->>S: Confirma Reversão
CQRS (Command Query Responsibility Segregation)¶
O CQRS separa as responsabilidades de leitura e escrita. Os comandos são usados para alterar o estado, enquanto as consultas (queries) são usadas para leitura.
sequenceDiagram
participant C as Cliente
participant S as Serviço de Comandos
participant R as Serviço de Leitura
participant DB as Banco de Dados
C->>S: Enviar Comando
S->>DB: Modificar Dados
DB->>S: Confirma Modificação
S->>C: Resposta ao Comando
C->>R: Enviar Consulta
R->>DB: Consultar Dados
DB->>R: Retorna Dados
R->>C: Retorna Resposta
Event Sourcing¶
Event Sourcing envolve armazenar todos os eventos que alteram o estado do sistema, ao invés de armazenar o estado atual. O sistema reconstruí o estado através desses eventos.
sequenceDiagram
participant C as Cliente
participant ES as Event Store
participant S as Serviço
C->>S: Enviar Comando
S->>ES: Armazenar Evento (evento 1)
ES->>S: Evento Armazenado
S->>ES: Armazenar Evento (evento 2)
ES->>S: Evento Armazenado
S->>C: Resposta ao Cliente
C->>S: Consultar Estado
S->>ES: Recuperar Todos os Eventos
ES->>S: Retorna Eventos
S->>S: Reconstruir Estado
S->>C: Retorna Estado
Arquitetura Orientada a Eventos (Event-Driven Architecture - EDA)¶
Na Arquitetura Orientada a Eventos, o sistema reage aos eventos em vez de realizar chamadas diretas entre os serviços.
sequenceDiagram
participant P as Publisher
participant E as Event Bus
participant C as Consumer
P->>E: Publica Evento
E->>C: Entrega Evento
C->>C: Processa Evento
Aqui, o Publisher envia eventos para um barramento de eventos (Event Bus), que então entrega esses eventos aos consumidores interessados.
Transações Distribuídas¶
Em um sistema distribuído, as transações podem ser complexas devido à latência e à falha de serviços. Aqui, você pode usar abordagens como o Two-Phase Commit (2PC) ou o Three-Phase Commit (3PC).
Two-Phase Commit (2PC):¶
sequenceDiagram
participant C as Coordenador
participant S1 as Serviço 1
participant S2 as Serviço 2
C->>S1: Solicitar Prepare
S1->>C: Aceitar Prepare
C->>S2: Solicitar Prepare
S2->>C: Aceitar Prepare
C->>S1: Solicitar Commit
S1->>C: Confirmar Commit
C->>S2: Solicitar Commit
S2->>C: Confirmar Commit
C->>C: Transação Concluída
Compensação de Transações¶
Quando há falha em uma transação e a reversão das etapas anteriores é necessária, pode-se usar a compensação para desfazer as ações.
sequenceDiagram
participant T as Serviço de Transações
participant S as Serviço
T->>S: Enviar Comando A
S->>T: Comando A Aceito
T->>S: Enviar Comando B
S->>T: Comando B Aceito
T->>S: Enviar Comando C
S->>T: Comando C Falhou
T->>S: Reverter Comando B
S->>T: Reversão B Completa
T->>S: Reverter Comando A
S->>T: Reversão A Completa
gh run delete 14254813782 --repo 60pportunities/documentacao gh run delete 14254788362 --repo 60pportunities/documentacao gh run delete 14254736457 --repo 60pportunities/documentacao gh run delete 13955415472 --repo 60pportunities/documentacao gh run delete 13954893913 --repo 60pportunities/documentacao gh run delete 13952858069 --repo 60pportunities/documentacao gh run delete 13911917416 --repo 60pportunities/documentacao gh run delete 13911265347 --repo 60pportunities/documentacao gh run delete 13908309584 --repo 60pportunities/documentacao gh run delete 13885108401 --repo 60pportunities/documentacao gh run delete 13883280087 --repo 60pportunities/documentacao gh run delete 13747092060 --repo 60pportunities/documentacao gh run delete 13747081843 --repo 60pportunities/documentacao 13821488008 --repo 60pportunities/documentacao
Browse the BookBildunterschrift zur Leseproben-Auswahl (optional)Browse the BookBildunterschrift zur Leseproben-Auswahl (optional) Profitability Analysis with SAP S/4HANA