CCT-UFCA/Ciência da Computação/Sistemas Distribuídos
Programa do Componente Curricular
[editar | editar código]| Código: | CC0042 | ||||||||
| Componente Curricular: | Sistemas Distribuídos | ||||||||
| Semestre de Oferta: | 6º | Tipo: | Disciplina | Caráter: | Obrigatória | ||||
| Unidade Acadêmica Responsável: | Centro de Ciências e Tecnologia - CCT | ||||||||
| Área: | Sistemas de Computação | ||||||||
| Créditos: | 4 | Carga horária: | 64 | Teórica: | 48 | Prática | 16 | Extensão: | - |
| Pré-requisito: | CC0024 - Redes de Computadores e CC0026 - Sistemas Operacionais | ||||||||
| Co-requisito: | |||||||||
| Equivalência: | |||||||||
Objetivos
[editar | editar código]Capacitar o aluno a aplicar técnicas para o funcionamento de sistemas distribuídos e tecnologias emergentes para a sua construção, bem como a apresentação de soluções baseadas no desenvolvimento de serviços Web por meio de softwares baseados em componentes.
Ementa
[editar | editar código]Conceitos básicos: histórico, terminologia, sistemas centralizados, distribuídos, paralelos ou de alto desempenho, modelos e arquiteturas de sistemas distribuídos. Paradigmas de comunicação entre processos (IPC). Programação de aplicações cliente/servidor em uma rede de computadores com Sockets e TCP/IP. Sincronização em sistemas distribuídos. Algoritmos distribuídos. Sistemas distribuídos tolerantes a falhas. Objetos distribuídos. Balanceamento de carga e segurança em sistemas distribuídos. Serviços Web e Estudos de caso.
Conteúdo
[editar | editar código]- Conceitos Básicos de Sistemas Distribuídos:
- Definição e importância dos sistemas distribuídos
- Histórico dos sistemas distribuídos
- Terminologia usada em sistemas distribuídos
- Comparação entre sistemas centralizados, distribuídos e paralelos
- Modelos e arquiteturas de sistemas distribuídos:
- Arquitetura Cliente-Servidor
- Arquitetura Peer-to-Peer
- Arquitetura de Microsserviços
- Paradigmas de Comunicação entre Processos (IPC):
- Conceitos de IPC
- Tipos de IPC (fila de mensagens, memória compartilhada, pipes, sockets)
- Comparação entre diferentes métodos de IPC
- Comunicação síncrona e assíncrona
- Programação de Aplicações Cliente/Servidor em uma Rede de Computadores com Sockets e TCP/IP:
- Conceito de sockets
- Protocolos de comunicação (TCP/IP, UDP)
- Implementação de servidores e clientes utilizando sockets
- Exemplo prático de uma aplicação cliente/servidor
- Sincronização em Sistemas Distribuídos:
- Problemas de sincronização em sistemas distribuídos
- Relógios físicos e lógicos
- Algoritmos de sincronização de relógios
- Exclusão mútua em sistemas distribuídos
- Algoritmos de eleição
- Algoritmos Distribuídos:
- Conceitos e características de algoritmos distribuídos
- Algoritmos de difusão
- Algoritmos de consenso
- Algoritmos de replicação de dados
- Sistemas Distribuídos Tolerantes a Falhas:
- Conceitos de tolerância a falhas
- Tipos de falhas em sistemas distribuídos
- Técnicas de tolerância a falhas (replicação, checkpoints, recovery)
- Algoritmos de consenso em ambientes falhos
- Objetos Distribuídos:
- Conceito de objetos distribuídos
- Frameworks e tecnologias para objetos distribuídos (CORBA, RMI, DCOM)
- Invocação de métodos remotos (RMI)
- Serialização e desserialização de objetos
- Balanceamento de Carga e Segurança em Sistemas Distribuídos:
- Conceitos de balanceamento de carga
- Técnicas de balanceamento de carga (DNS round-robin, load balancers)
- Desafios de segurança em sistemas distribuídos
- Mecanismos de segurança (autenticação, criptografia, autorização)
- Serviços Web:
- Conceito de serviços web
- Protocolos e padrões de serviços web (HTTP, SOAP, REST)
- Implementação de serviços web
- APIs e microsserviços
Metodologia
[editar | editar código]Avaliação
[editar | editar código]Bibliografia básica
[editar | editar código]- TANENBAUM, A.; STEEN, M. V. Sistemas Distribuídos: princípios e paradigmas. 2 ed. Pearson, 2008. ISBN 9788576051428.
- COULOURIS, G.; DOLLIMORE, J.; KINDBERG, T. Sistemas Distribuídos: Conceitos e Projetos. 5ª ed. Editora Bookman, 2013.
- RIBEIRO, U. Sistemas Distribuídos: Desenvolvendo Aplicações de Alta Performace no Linux. 1ª ed. Editora Novaterra, 2015.
Bibliografia complementar
[editar | editar código]- MULLENDER, S. Distributted Systems. 2 ed. Addison Wesley, 1993.
- ORFALI, R.; HARKEY, D. Client/Server Programming with Java and CORBA. 2 ed. New York: John Wiley & Sons, 1998.
- COULOURIS, G.; DOLLIMORE, J.; KINDBERG, T. Distributed systems: concepts and design. 3 ed. Harlow: Addison Wesley, 2001. • MARQUES, J. A.; GUEDES, P. Tecnologia de Sistemas Distribuídos. 2ª ed. Editora FCA, 2003.
- STALLINGS, W.; CASE, T. Redes e sistemas de comunicação de dados. Rio de Janeiro, RJ: Elsevier, 2016. 526 p., il., 28 cm. ISBN 9788535283587.