Sistemas Distribuídos: RPC, CORBA, RMI, EJB e Mais
Classificado em Computação
Escrito em em português com um tamanho de 12,39 KB.
Questões sobre Sistemas Distribuídos
1. Qual o propósito do RPC? Explique com um exemplo como o RPC facilita a vida do desenvolvedor comparado ao socket puro.
O RPC (Remote Procedure Call) surgiu para retirar do desenvolvedor a responsabilidade de programar os requests e responses dentro do socket. Foi desenvolvido para permitir que programadores desenvolvam software distribuído como se estivesse em execução no mesmo computador, sem ter que se preocupar com códigos de rede (uso de sockets). Ao utilizar computação distribuída com sockets, o desenvolvedor perde tempo codificando métodos e chamadas que precisam ser atendidas – praticamente reinventa a roda. Com RPC, é utilizado um paradigma modular que facilita a manutenção do código.
2. Qual a diferença entre um middleware ativo e um middleware passivo?
Ativo: Contém biblioteca tanto no processo cliente quanto no servidor. Gerencia as comunicações entre as duas partes, podendo, por exemplo, notificar o host A que o host B está offline. Atua entre cliente e servidor (Middleware Management). Quando o servidor sobe, este avisa o middleware. O MW funciona com a função de Naming/Discovery. Se um lado cai, o outro continua de pé.
Passivo: Depende do servidor e do cliente para ser chamado e executado. Stub programado junto com cliente/servidor e um depende do funcionamento do outro. Implementado em TCP.
3. Qual a diferença entre RPC e CORBA?
RPC é orientado a procedimento, gera stubs que são executados localmente na máquina.
CORBA é orientado a objeto, usado em ambientes com múltiplas linguagens de programação.
4. Qual a diferença entre CORBA e RMI?
CORBA é orientado a objeto, usado em ambientes com múltiplas linguagens de programação.
RMI é orientado a objeto, não é multi-programável, usado em aplicações feitas em JAVA.
5. -
6. O que é uma classe de Bootstrap em RMI? Para que ela serve?
A classe é responsável por instanciar o serviço solicitado, chamadas de processos remotos. Obtém a referência do barramento RMI, instancia o serviço, a classe de implementação e faz o bind da instância obtida pelo barramento.
7. A própria classe que implementa um servidor RMI poderia ser utilizada como classe de bootstrap? Explique.
Pode, porém, como a classe de implementação é um código comum do servidor e cliente, convém separá-lo da instância que obtém o barramento RMI e vincula a um objeto local.
8. -
9. O que é um servidor de aplicação? Cite 3 funções geralmente encontradas em todo servidor de aplicação.
São Middlewares projetados para oferecer uma infraestrutura de serviços de gerenciamento para uma aplicação, de modo que o desenvolvedor não se preocupe com questões administrativas.
- Gerenciar interfaces e conexões
- Gerenciar o ciclo de vida das aplicações
- Controle transacional
10. Servidor de Aplicação e Container de Aplicação são a mesma coisa? Dê exemplo de dois tipos de containers de aplicação.
Não. Servidor de aplicação fornece infraestrutura de serviços de gerenciamento para uma aplicação.
Container é um serviço que roda sobre alguma plataforma e que oferece recursos capazes de implementar, processar e manter componentes que respeitem um determinado padrão de desenvolvimento. É um serviço de gerenciar o ciclo de vida e de acoplar serviços adicionais para componentes JAVA que implementem a especificação WEB.
11. O que é um componente EJB?
Componente da plataforma JAVA que consegue explorar os recursos da plataforma JAVAEE, com o propósito de fornecer serviços corporativos e, consequentemente, serviços WEB.
12. O que é uma transação, do ponto de vista de sistemas distribuídos?
13. Como uma transação é definida, por default, em um servidor EJB?
14. Qual a quantidade limite de nós que podem estar envolvidos em uma transação? Explique.
15. Explique cada uma das propriedades ACID de uma transação.
Atomicity: Uma transação tem que ser executada por completo: ou todas as etapas são commited ou serão rolledback.
Consistency: Uma transação leva o sistema de um estado consistente a outro estado consistente.
Isolation: A execução simultânea de várias transações, de forma concorrente, deve proceder como se estas transações fossem serializadas.
Durability: 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.
16. O que são os algoritmos de two-phase-commit e three-phase-commit? Qual a importância deles?
Two-phase: Algoritmo bloqueante/síncrono
Three-phase: Não bloqueante/assíncrono
Eles são importantes pois são responsáveis por manter o gerenciamento de transação em banco de dados distribuídos. O 3PC é melhor pois, se em um 2PC, o processo coordenador falha, os outros participantes nunca receberão a mensagem de commit ou rollback e isso os manterá bloqueados. O 3PC elimina este problema com o recurso do preCommit, se o coordenador falha antes de enviar o preCommit, os outros participantes saberão que a operação foi abortada.
17. Explique as 6 propriedades de segurança de um sistema.
Confidencialidade: Garantia de resguardo e controle de acesso às informações a quem é de direito, conforme as restrições de acesso definidas pelo dono da informação.
Privacidade: Limitação de acessos às informações relacionadas a uma entidade ou objeto qualquer.
Integridade: Garantia que a custódia e a manipulação das informações não provoque alterações não autorizadas ou rastreáveis, de acordo com o ciclo de vida da informação.
Disponibilidade: Garantia que as informações estejam disponíveis para uso legítimo.
Autenticidade: Garantia que a informação provém de uma fonte determinada e que não sofreu alterações ao longo de um processo, geralmente de transmissão.
Não repúdio: Impossibilita a uma entidade negar a autoria sobre uma transação anteriormente feita.
18. O que é consistência eventual?
Garante que se não existirem novas atualizações, eventualmente qualquer acesso retornará o último valor atualizado. Livre de falhas, a janela de inconsistências média pode ser estimada com significativa assertividade.
19. Explique a diferença entre cluster e grid.
Cluster: Servidores homogêneos, mesma arquitetura, mesmo dimensionamento, sistema operacional, mesma memória, mesma quantidade de discos.
Grid: Sistemas completamente distintos, tanto na infraestrutura como nos meios de comunicação.
20. Explique o que são grids oportunistas e comente aplicações para ele.
São grids feitos a partir de máquinas não dedicadas.
Vantagens: baixo custo, economia de recurso, eletricidade, refrigeração...
Desvantagens: gerenciar recurso é mais complicado, menor desempenho (PCs ociosos)
21. Qual a diferença entre Business Continuity e Disaster Recovery? Como estes conceitos afetam o projeto de um sistema distribuído?
Business Continuity descreve os processos e procedimentos que uma organização deve fazer para garantir que atividades críticas possam continuar durante e após um desastre.
Disaster Recovery se refere aos passos específicos a serem dados para continuar as operações após uma catástrofe ou desastre. Estes passos devem incluir restore de servidores, backups, reestabelecimento de links e criação de LANs.
Estes conceitos afetam um sistema distribuído pois, caso aconteça algo em algum site de um sistema distribuído, tais ações são necessárias para a retomada do sistema no geral.
22. Explique o funcionamento do serviço “login com a conta do facebook”. Qual protocolo está sendo utilizado?
O protocolo utilizado é o OAUTH.
- Aplicação cliente obtém chave de autenticação;
- Usuário autoriza aplicação cliente na aplicação servidora;
- Aplicação cliente troca a chave de autenticação pela chave de acesso;
23. Você está conversando sobre tecnologia com um amigo e ele diz que como a empresa dele está usando recursos virtualizados por meio de VMWare, então ele já está trabalhando com Cloud Computing. O que você diz para ele?
Ele não está no cloud pois o cloud exige as seguintes características: Baseado em serviços, Escalável e elástico, Compartilhado, Medido pelo uso, Baseado em tecnologias de internet.
24. Qual a diferença entre BI e BigData?
BI ajuda a encontrar respostas a perguntas que você já conhece, BigData ajuda a encontrar perguntas que você ainda não conhece.
25. Qual a dependência de BigData de recursos computacionais elásticos?
Pois as demandas de dados podem variar escalavelmente de forma não preditiva, tendo em vista que os dados são dinâmicos e não premeditados, uma arquitetura elástica e expansível se faz necessária.
26. Por que o uso de sistemas distribuídos é importante para cloud computing do ponto de vista de custos?
Com sistemas distribuídos é possível construir ambientes de alta disponibilidade e escalabilidade, característicos de sistemas em nuvem, com recursos mais baratos do que construir um data center robusto e centralizado.
27. Por que a eficiência no projeto e implementação de sistemas distribuídos é fundamental para cloud computing?
Um projeto de sistemas distribuídos para cloud computing deve ser bem desenhado desde o início para prever cenários como aumento significativo do número de acessos e mais demanda por processamento. O sistema deve ser capaz de se adaptar a novas condições de uso e responder a eventos rapidamente.
28. Qual a importância de middlewares de message queue para a integração de sistemas?
Atender a requisitos de negócio nos casos em que nem todos os nós poderão estar disponíveis para receber ou enviar mensagens ao mesmo tempo.
29. O que o teorema CAP explica e qual o impacto no projeto de sistemas distribuídos?
CAP é o acrônimo de Confidentiality, Availability and Partition Tolerance e diz que em sistemas distribuídos escaláveis proporcionalmente a carga de dados não é possível ter os três conceitos: um deve ser sacrificado. Um projeto de sistemas distribuídos deve ser construído pensando no objetivo final e o que o público de usuários espera para oferecer serviços que atendam as necessidades da melhor maneira possível.
30. -
31. Como é possível garantir a integridade e autenticidade de registros de log, protegendo-nos até mesmo contra modificações feitas por um sysadmin?
Faz com que você necessite se autenticar uma única vez. Isso permite acesso automaticamente sem a necessidade de digitar seu login e senha em cada sistema. Pode ser ruim por liberar acesso a diversas aplicações ao mesmo tempo, por isso deve ser feito um controle minucioso sobre o que será liberado.
32. Bancos de dados NoSQL em geral usam qual tipo de consistência?
Consistência eventual.
Glossário:
ACID (Atomicity, Consistency, Isolation, Durability)
Middleware é um termo geral, normalmente utilizado para um código de software que atua como um aglutinador, ou mediador, entre dois programas existentes e independentes.
Stubs são os elementos lógicos que conectam o cliente e o servidor, efetivamente viabilizando a comunicação por meio dos protocolos. Funcionam como proxies, são embarcados nas aplicações e, portanto, não caracterizam um middleware.