Transações e Segurança em Sistemas Distribuídos
Classificado em Computação
Escrito em em
português com um tamanho de 4,24 KB
O que é uma transação do ponto de vista de sistemas distribuídos?
Uma transação é o ciclo completo de uma requisição e resposta de um serviço entre cliente e servidor, no qual o commit ocorreu com sucesso e o serviço foi realizado.
Como uma transação é definida, por padrão, em um servidor EJB?
A forma mais simples de definir um atributo de transação em um EJB é através de anotações. Essa declaração pode ser feita em nível de classe, de método ou de ambos. Para a declaração, a anotação @javax.ejb.TransactionAttribute deve ser usada, e são aceitos os seguintes valores (do tipo javax.ejb.TransactionAttributeType):
TransactionAttributeType.REQUIREDTransactionAttributeType.REQUIRES_NEWTransactionAttributeType.NOT_SUPPORTEDTransactionAttributeType.SUPPORTSTransactionAttributeType.MANDATORYTransactionAttributeType.NEVER
Qual a quantidade limite de nós que podem estar envolvidos em uma transação? Explique.
Não há um limite de nós; porém, quanto maior o número de nós, maior será a demora na resposta ao cliente.
Explique cada uma das propriedades ACID de uma transação.
- Atomicity (Atomicidade): Uma transação tem que ser executada por completo. Ou todas as etapas são bem-sucedidas, ou todas as etapas são desfeitas.
- Consistency (Consistência): Uma transação leva o sistema de um estado consistente a outro estado consistente.
- Isolation (Isolação): A execução simultânea de várias transações, de forma concorrente, deve proceder como se estas transações estivessem serializadas.
- Durability (Durabilidade): O estado do sistema após a transação é permanente e resistente a incidentes de indisponibilidade. O estado só pode ser alterado por meio de outra transação.
O que são algoritmos de Two-Phase Commit (2PC) e Three-Phase Commit (3PC)? Qual a importância?
São dois protocolos utilizados para garantir a consistência e a integridade dos dados dentro de uma transação distribuída (oferecem suporte a falhas).
O 3PC é semelhante ao 2PC quando não ocorrem falhas. O 3PC é um algoritmo não bloqueante e permite que uma transação seja finalizada sem a necessidade de bloqueios permanentes, embora realize uma maior troca de mensagens durante sua execução.
Ambos os protocolos tentam chegar a uma convergência de transações consultando todos os participantes. Os votos devem ser atômicos e a maioria vence.
- 2PC: Algoritmo bloqueante / síncrono.
- 3PC: Algoritmo não bloqueante / assíncrono.
Explique as 6 propriedades de segurança de um sistema.
- Confidencialidade: Garantia de resguardo e controle de acesso às informações apenas a quem é de direito, conforme as restrições definidas pelo dono da informação.
- Privacidade: Limitação de acesso às informações relacionadas a uma entidade ou objeto.
- Integridade: Garantia de que a custódia e/ou a manipulação das informações não provoque alterações não autorizadas ou não rastreáveis.
- Disponibilidade: Garantia de que a informação esteja disponível para o usuário legítimo.
- Autenticidade: Garantia de que a informação provém de uma fonte determinada e que não sofreu alterações ao longo de um processo de transmissão.
- Não Repúdio (Irretratabilidade): Impossibilita que uma entidade negue a autoria sobre uma transação anteriormente realizada.
O que é consistência eventual?
É um modelo de consistência usado em computação distribuída para alcançar alta disponibilidade. Ele garante informalmente que, se não houver novas atualizações para um determinado dado, eventualmente todos os acessos retornarão o último valor atualizado.