Pós graduação em Redes e Telecomunicações:
Tecnologias Convergentes
Implementação de Aplicações e Serviços de Telecom
Anderson Theobaldo
•
Critérios de avaliação:
– Avaliação - 40 pontos
– Exercícios - 45 pontos – Participação - 15 pontos
– SAMPAIO, Cleuton. SOA e Web services em
Java. Rio de Janeiro: Brasport, 2006.
– TANENBAUM, Andrew S.; STEEN, Maarten van.
Sistemas Distribuídos: Princípios e Paradigmas.
Pearson, 2007.
– COULOURIS, George; DOLLIMORE, Jean; KINDBERT, Tim. Sistemas Distribuídos –
Conceitos e Projetos. Bookman, 2007
– DEITEL, Harvey M.; DEITEL, P.J., Java Como
Programar, 8a. edição, editora Prentice Hall, 2010.
–
http://www.w3.org/TR/soap
/ -
Especificação 1.2 do padrão SOAP
–
http://
www.w3.org/TR/wsdl - Especificação
do padrão WSDL
–
http://
www.tmforum.org/TMForumFrameworx/191
1/Home.html
- TM Forum Frameworx
Bibliografia
Sumário
•
Sistemas Distribuídos
•
Telecomunicações
Sistemas Distribuídos
O que é um Sistema Distribuído?
“Um sistema
executando em uma
coleção de
computadores
independentes que
aparecem para os
usuários deste como
um único
computador.”
(Tanenbaum)
“Um sistema
executando em uma
coleção de
computadores
independentes que
aparecem para os
usuários deste
como
um único
computador
.”
(Tanenbaum)
“Um sistema em que
componentes de
hardware e software
localizados em
computadores em rede
se comunicam e
coordenam suas ações
por passagem de
mensagens.”
(Coulouris et al)
“Um sistema em que
componentes de
hardware e software
localizados em
computadores em rede
se
comunicam
e
coordenam
suas ações
por
passagem de
mensagens
.”
Sistemas Distribuídos
•
“Definição curiosa” de Lamport:
“Um sistema distribuído é aquele onde eu não consigo
fazer nada porque algum computador do qual eu nunca
tinha ouvido falar falhou.”
Leslie Lamport é um famoso pesquisador da área de sistemas distribuídos, tendo feito diversas contribuições em temas como ordenação de mensagens, sincronização de relógios, tolerância a falhas e consenso.
Sistemas Distribuídos
Fatores motivadores:
•
Economia
–
Necessidade de compartilhar recursos
–
Melhoria da relação custo/benefício entre
investimento e desempenho (infraestrutura)
•
Evolução tecnológica
–
Microprocessadores de alto desempenho e
baixo custo
Sistemas Distribuídos
Fatores motivadores:
•
O uso de sistemas de informação e redes
de comunicação tornam-se cada vez mais
importantes;
•
Com o aumento da complexidade dos
sistemas em geral, os sistemas
distribuídos passam a ser cruciais nas
infra-estruturas de informação de hoje e do
futuro;
Sistemas Distribuídos
Características
•
Conjunto de máquinas autônomas
•
Conectadas por canais de comunicação
•
Que se comunicam por mensagens
•
Sem um estado global
Sistemas Distribuídos
Características
•
Desenvolver uma aplicação distribuída é mais
complexo do que uma aplicação centralizada
•
Desafios:
–
Heterogeneidade
–
Ser aberto
–
Segurança
–
Escalabilidade
–
Tolerância a Falhas
–
Concorrência
–
Transparência
Sistemas Distribuídos
Heterogeneidade
• Variedade e diferença em termos de:
– Hardware
– Sistemas operacional
– Rede
– Linguagem de programação – Fabricante
• Exemplos de heterogeneidade na Internet
– Diferentes implementações do mesmo conjunto de protocolos para diferentes tipos de rede: IP, TCP, UDP, SMTP
– Diferentes padrões de representação de dados: IDL, XML – Diferentes padrões de bibliotecas: POSIX, DLL
– Diferentes padrões de invocação de serviços: COM, CORBA, RMI, SOAP
Sistemas Distribuídos
Abertura
• Facilidade de extensão e atualização
– Adição de novos recursos e serviços
– Re-implementação de serviços existentes
• Depende que as interfaces de acesso aos principais componentes do sistemas sejam conhecidas e estejam disponíveis para os
programadores.
• Exemplos de abertura na Internet
– Especificações controladas e atualizadas por um Comitê Gestor – Novos produtos e serviços implementados de acordo com as
especificações vigentes
– Conformidade da implementação deve ser testada e verificada para garantir o correto funcionamento do sistema (Quem verifica?)
Sistemas Distribuídos
Segurança
• Proteção para recursos compartilhados
– Confidencialidade (proteção contra usuários não autorizados)
Ex.: Acesso a dados sobre salário, histórico médico, preferências sexuais – Integridade (proteção contra alteração e corrupção)
Ex.: Alteração indevida de dados usados em transações bancárias – Disponibilidade (proteção contra interferência ao meio de acesso) Ex.: Queda ou sobrecarga do servidor ou do meio de comunicação
• Principais mecanismos de segurança na Internet
– Firewall
– Assinaturas digitais
– Canais de seguros de comunicação
• Desafios recentes
– Ataques de negação de serviço – Segurança para código móvel
Sistemas Distribuídos
Escalabilidade
• Capacidade do sistema permanecer operando de forma efetiva mesmo diante de um aumento significativo do número de usuários e/ou dos recursos disponíveis.
• Principais desafios:
– Controlar o custo dos recursos físicos – Controlar perdas de desempenho
– Prevenir o esgotamento dos recursos de software
– Evitar “gargalos” de desempenho na rede ou nos próprios servidores
• Principais técnicas:
– Replicação – Caching
Sistemas Distribuídos
Tolerância a falhas
• Falhas são inevitáveis em sistemas computacionais
– Resultados incorretos
– Interrupção não planejada do serviço antes de sua conclusão
• Falhas em sistemas distribuídos são parciais • Técnicas de tratamento de falhas mais comuns:
– Detecção (ex. bits de paridade)
– Mascaramento (ex. retransmissão de mensagens) – Tolerância (ex. informar o usuário do problema) – Recuperação (ex. transações em BD’s)
– Redundância (ex. replicação de tabelas no DNS)
• Sistemas distribuídos devem oferecer alta disponibilidade de recursos mesmo diante da ocorrência de falhas
– Disponibilidade: medida da proporção do tempo que um recurso está disponível para uso
Sistemas Distribuídos
Concorrência
•
Suporte para múltiplos acessos simultâneos a um ou
mais recursos compartilhados
– Possibilidade de inconsistências quando os recursos são alterados
•
Serviços que representam recursos compartilhados
devem ser responsáveis por garantir que as operações
de acesso os mantenham em um estado consistente
– Válido para servidores e objetos de aplicações
•
Técnicas mais comuns:
– Sincronização de acesso (ex.: exclusão mútua distribuída) – Protocolos de controle de concorrência
Sistemas Distribuídos
Transparência
• Abstração para os usuários e programadores de aplicação da separação física dos recursos em um sistema distribuído
– Sistema percebido como um “todo” coerente ao invés de uma coleção de partes independentes
• Formas de transparência
– Transparência de acesso: permite o acesso a componentes remotos e locais através das mesmas operações
– Transparência de localização: permite o acesso a componentes sem conhecimento da sua localização física
– Transparência de concorrência: permite a execução concorrente de múltipla operações sobre o mesmo conjunto de recursos sem causar interferência entre elas
– Transparência de replicação: permite usar múltiplas instâncias de um mesmo recurso lógico sem conhecimento da existência de réplicas
Sistemas Distribuídos
Transparência
• Formas de transparência (cont.)
– Transparência de falha: permite esconder a ocorrência de falhas dos usuários e programadores
– Transparência de mobilidade (migração): permite a realocação de recursos e aplicações sem afetar o seu uso
– Transparência de desempenho: permite a re-configuração do sistema para aumentar o seu desempenho conforme varia a carga de trabalho – Transparência de escala: permite a expansão do sistema e de suas
aplicações sem exigir mudanças significativas na infra-estrutura existente
• As duas formas mais importantes são acesso e localização!
– Suas presenças (ou ausências) afetam profundamente a maneira como os recursos são utilizados em um sistema distribuído
Sistemas Distribuídos
Transparência
• Exemplos de transparência:
– Ferramenta para “exploração” de arquivos que mantêm as mesmas opções de navegação para pastas locais e remotas
– API para acessar dados que utiliza as mesmas operações para dados locais e remotos
• Exemplos de falta de transparência:
– Sistema distribuído onde só é possível acessar arquivos remotos via
FTP
– Serviço de jogos online que precisa ser tirado do ar para acrescentar ou trocar um servidor
Sistemas Distribuídos
Transparência
•
Classificação quanto à dificuldade de implementação (hierarquia dedependência) e nível (usuário ou programador)
– Nível do usuário: distribuição física dos recursos é imperceptível para os usuários das aplicações (ex.: navegador da Web)
– Nível do programador: distribuição física dos recursos é imperceptível tanto para os usuários quanto para os programadores das aplicações (ex.: programação com middleware ou SO distribuído)
• Importante: transparência total pode ser indesejável ou até mesmo impossível na prática!!
Sistemas Distribuídos
Definições:
•
Middleware
– Infra-estrutura de software que fica entre o sistema operacional e uma aplicação distribuída
– Tem como objetivo tornar mais simples e produtivo o desenvolvimento de uma aplicação distribuída
– Oferece abstrações/recursos de mais alto nível que torna transparente ao programador detalhes de programação em redes
– Procura fazer com que a programação distribuída seja mais semelhante à programação centralizada
Sistemas Distribuídos
Sistemas Distribuídos
•
Principais exemplos de Middleware :
– Sun RPC (Remote Procedure Calls)
– OMG CORBA (Common Request Broker Architecture) – Microsoft D-COM (Distributed Components Object Model) – Sun Java RMI
–
Middleware modernos
• Melbourne Gridbus – para Grid computing • IBM WebSphere
• Microsoft .NET • Sun J2EE
Sistemas Distribuídos
Exemplos
•
Internet
–
Serviços: www, ftp, e-mail, chat
•
Intranet
–
Compartilhamento de recursos e informações
•
Computação móvel
Sistemas Distribuídos
Exemplos
•
Caixa eletrônico
•
Banco na Internet
•
Reserva e venda de passagens
•
Comércio eletrônico
•
Sistema de Matrícula
•
Etc...
Sistemas Distribuídos
Classes de Sistemas Distribuídos
•
Aplicações inerentemente distribuídas
–
Correio eletrônico (SMTP)
–
WWW (HTTP)
–
Teleconferência
–
Programas para manutenção de redes: roteamento,
gerenciamento... (RIP, BGP, SNMP)
–
Sistemas operacionais distribuídos
–
Jogos
Sistemas Distribuídos
Classes de Sistemas Distribuídos
•
Aplicações distribuídas para aumento de
desempenho
–
Cluster
–
Grid
•
Aplicações tolerantes a falhas
–
e-mail (SMTP)
Sistemas Distribuídos
Cluster x Grid
•
Cluster computing
– Homogeneidade
– Imagem de um sistema único – Gestão centralizada
– Usado para computação de alto desempenho e alta disponibilidade
•
Grid Computing
– Alto grau de heterogeneidade – Gestão distribuída
– Não há uma imagem única do sistema
Sistemas Distribuídos
•
Cluster
Sistemas Distribuídos
•
Grid
“Um tipo de sistema paralelo e distribuído que permite
compartilhamento, seleção, e agregação de recursos
autônomos geograficamente distribuído, dinamicamente em
tempo de execução, dependendo de sua disponibilidade,
capacidade, desempenho, custo, e requisitos de qualidade
de serviço” [Buyya].
Sistemas Distribuídos
Sistemas Distribuídos
Modelo Cliente / Servidor
•
Servidor (passivo)
–
Oferece e executa serviços para os Clientes
–
Responde aos pedidos dos clientes (processamento
específico)
•
Cliente (ativo)
–
Submete pedidos ao Servidor
Sistemas Distribuídos
Modelo Cliente / Servidor
•
Características
–
Interação é sempre iniciada pelo Cliente.
–
Um Servidor pode ser Cliente de outro Servidor
• Um servidor Web é frequentemente cliente de um servidor de arquivos que gerencia os arquivos nos quais páginas Web são armazenadas.
• Servidores Web e a maioria dos serviços Internet são clientes do serviço DNS (responsável pela tradução de nomes de domínio em endereços de rede).
Sistemas Distribuídos
Código Móvel e Applets Java (variação do Client/Server)
• Os Applets convencionais possuem restrições de segurança, impedindo que estas possam:
– Ler e escrever no sistema de arquivos do cliente
– Estabelecer conexões em rede, exceto para o servidor hospedeiro – Iniciar outros programas no sistema do cliente
– Carregar bibliotecas ou definir chamadas a métodos nativos.
• Estas restrições podem ser eliminadas para Applets
assinados e transmitidos de forma segura.
36
Sistemas Distribuídos
Modelo Cliente / Servidor
•
Duas camadas
Sistemas Paralelos e Distribuídos 37
Sistemas Distribuídos
Modelo Cliente / Servidor
•
Multicamadas Vertical
Sistemas Paralelos e Distribuídos 38
Sistemas Distribuídos
Modelo Cliente / Servidor
•
Multicamadas Vertical
Sistemas Distribuídos
Modelo Objetos Distribuídos
–
Sem distinção entre cliente e servidor
–
Conjunto de objetos que interagem independente da
localização
–
Permite adicionar novos recursos quando necessário
–
Alta escalabilidade (várias instâncias de um mesmo
objeto em diferentes pontos da rede)
–
Reconfiguração dinâmica
Sistemas Distribuídos
Modelo Objetos Distribuídos
–
Middleware para comunicação
• Permite a comunicação entre objetos heterogêneos
–
Middleware para componentes
• Fornecem uma base para desenvolvimento de componentes compatíveis
Sistemas Distribuídos
Modelo P2P (Ponto a Ponto)
• Sistemas descentralizados com processamento em qualquer nó da rede
• Distribui processamento e armazenamento pela rede • Sistemas pessoais e pouco utilizados para negócios • Arquitetura descentralizadas ou semi-centralizada • Exemplos: eMule, Kazaa, eDonkey, Gnutella, etc...
•
Vantagens
– Escalabilidade
– Tolerância a falhas
•
Desvantagem
Sistemas Distribuídos
Modelo Orientadas a Serviços
•
Baseada no consumo de serviços externos
•
Web Service é uma abordagem tecnológica para
implementar essa arquitetura
•
O fornecimento de serviços não depende da aplicação
que consome o serviço
Sistemas Distribuídos
•
Vantagens
–
Compartilhamento de recursos
• Hardware (discos, impressoras, etc.)
• Software (arquivos, compiladores, objetos, etc.)
–
Sistemas abertos
• Projetos baseados em protocolos-padrão
–
Suportam a concorrência entre processos
–
Boa relação custo/desempenho
Sistemas Distribuídos
•
Vantagens
–
Maior velocidade
–
Maior confiabilidade e disponibilidade
–
Facilidade de expansão (escalabilidade)
• Adição de novos recursos
• Suporte ao aumento da demanda
–
Tolerância a falhas
• Redundância de hardware e software
Sistemas Distribuídos
•
Desvantagens
–
Maior complexidade
• Desenvolvimento • Testes–
Problemas de Segurança
• Integridade de dados na rede • Interceptação de dados na rede
–
Alto custo de implementação
• Profissionais especializados
Sistemas Distribuídos
•
Desvantagens
–
Maior complexidade de gerência
• Heterogeneidade de hardware
• Heterogeneidade de sistemas operacionais • Propagação de defeitos
–
Maior dificuldade para diagnosticar problemas
• Imprevisibilidade
• Variação de desempenho de uma requisição para outra • Um servidor parou ou está apenas lento?
49