SlideShare uma empresa Scribd logo
1 de 36
1


      SMD0050 - SISTEMAS
      DISTRIBUÍDOS
      - Capítulo 2


•Prof. Dr. Windson Viana de Carvalho
•Créditos : 64h
•Prática e Teórica
2


Modelagem e projeto de um sistema
distribuído
• Muitos desafios a serem suplantados
• Projetar um SD em três perspectivas
    •       Modelos Físicos
        •    Hardware envolvido (rede e dispositivos)
    •       Modelos Arquiteturais
        •    Camadas de software e distribuição entre as entidades
             envolvidas
    •       Modelos Fundamentais
        •    Quais estratégias serão utilizadas para garantir a
             coordenação, a segurança e dependabilidade do sistema
             distribuído?
3




Modelos Físicos
• Três Gerações de Sistemas distribuídos
 • Fase I : Acesso Remoto e Compartilhamento de
   recursos
 • Fase II: Sistemas baseados na Internet
 • Fase III: Sistemas contemporâneos em larga
   escala com grande heterogeneidade de acesso
• Sistema de Terceira Geração podem ser
vistos como Sistemas de Sistemas ou
Sistemas Complexos
Figure 2.1
Gerações de Sistemas distribuídos




               Instructor’s Guide for Coulouris, Dollimore, Kindberg and Blair, Distributed Systems: Concepts and Design Edn. 5
                                                            © Pearson Education 2012
                                                                                                                                  4
5




Modelos Arquiteturais
• Organização ou estrutura que responde às
seguintes questões
 • Quais são entidades (software) e seus papéis
   na execução das tarefas do sistema
   distribuído?
 • Como essas entidades irão se conectar e qual
   paradigma de comunicação será utilizado?
 • Onde as entidades estarão fisicamente
   localizadas?
6




Modelos Arquiteturais
• Quais são entidades comunicantes em um
  SD?
 • Processos
    • Entidade de software comunicante
   • Pode conter subprocessos (Threads)
 • Nós físicos
   • Sensores, sistemas de automação

• Do ponto de vista de desenvolvimento de um SD
  • Objetos
  • Componentes
  • Serviços
7




Modelos Arquiteturais
• Como essas entidades irão se conectar e qual
 paradigma de comunicação será utilizado?
• A resposta está muitas vezes relacionada a tecnologia de
 desenvolvimento utilizada
• Comunicação entre processos
• Invocação remota
• Comunicação indireta
8




Comunicação entre processos
• A forma mais simples é uso de APIs para acessar a
 camada de sockets do sistema operacional
 • Problemas inerentes a desconexões, não presença e protocolo de
   troca de informação ficam a cargo do programador
• Modelos de conexão atrelados ao protocolo de transporte
  • Socket TCP, socket UDP
  • Uso de Multicast ou Unicast
• Suporte a modelo com conexão permanente e
  manutenção de estado de conexão
• Protocolos de troca de mensagens
 • Separadores
 • Serialização e deserialização
 • XML, JSON
9




Exemplo de Serialização em Java
class Nodo implements Serializable {
 Vector filhos; Nodo pai; String nome;
public Nodo(String s) {
        filhos = new Vector(5);    nome = s; }
 public void addFilho(Nodo n) {
Filhos.addElement(n);     n.pai = this; }

}
10




Exemplo de Serialização em Java
cliente = new Socket(host, port);
 Nodo top = new Nodo("topo");
   top.addFilho(new Nodo("filho1"));
   top.addFilho(new Nodo("filho2"));
   ObjectOutput out =      new
 ObjectOutputStream(cliente.getOutputStream());
   out.writeObject(top);
out.flush();
11


Exemplo de Serialização em Java
Cliente - Socket
cliente = new Socket(host, port);
Nodo top = new Nodo("topo");
top.addFilho(new Nodo("filho1"));
top.addFilho(new Nodo("filho2"));
ObjectOutput out =      new
  ObjectOutputStream(cliente.getOutputStream());
out.writeObject(top);
out.flush();
12


Exemplo de Serialização em Java
Servidor - Socket

socket = server.accept();
out = new ObjectOutputStream(socket.getOutputStream());
in = new ObjectInputStream(socket.getInputStream());
Nodo n = (Nodo)in.readObject();
n.addFilho(new Nodo("servidor"));
out.writeObject(n);
out.flush();
13




Invocação remota
• Framework de mais alto nível disponível pelo Sistema
 Operacional ou middleware para facilitar a comunicação
 entre processos
 • Protocolos do tipo requisição-resposta
 • Remote Procedure Call (RPC)
 • Remote Method Invocation (RMI)
14




Exemplo: RMI Java
15


Desvantagens da Invocação
remota
• Um acoplamento entre as partes comunicantes ainda é
 grande
 • Conhecimento de quem está comunicando
 • Ambos conectados ao mesmo tempo
 • Pode oferecer transparência de localização e acesso usando
   descoberta de serviços
16




Comunicação indireta
• Menor acoplamento entre os sistemas
• Promove os desacoplamentos espacial e temporal
  • Sem a necessidade de conhecimento da localização e com quem
    está se comunicando
  • Sem a necessidade de os comunicantes estarem conectados ao
    mesmo
• Exemplos
  • Sistemas baseados em eventos (Event-based ou Publish-
    Subscribers)
  • Fila de Mensagens
  • Espaço de Tuplas
  • Memória Compartilhada e Distribuída
17


Paradigmas de comunicação




      Instructor’s Guide for Coulouris, Dollimore, Kindberg and Blair, Distributed Systems: Concepts and Design Edn. 5
                                                   © Pearson Education 2012
18




Modelos Arquiteturais
• Estilos Arquiteturais
 • Arquitetura Cliente-Servidor
   • Cliente magro ou cliente gordo
   • Proxy
   • Múltiplos servidores
 • Arquitetura Peer-to-Peer
   • Totalmente descentralizada
   • Hierárquica
Arquitetura Cliente-Servidor


  Client           invocation                                                           invocation                            Server


                     result                                                                    result
                                                         Server



  Client
                                                        Key:
                                                                      Process:                                 Computer:




           Instructor’s Guide for Coulouris, Dollimore, Kindberg and Blair, Distributed Systems: Concepts and Design Edn. 5
                                                        © Pearson Education 2012
Thin client (Cliente “magro”)

                                                                                                            Compute server
Network computer or PC


       Thin                                         network                                                      Application
       Client                                                                                                      Process




                Instructor’s Guide for Coulouris, Dollimore, Kindberg and Blair, Distributed Systems: Concepts and Design Edn. 5
                                                             © Pearson Education 2012
Serviço provido por múltiplos
servidores
                                                                                           Service



                                                                                            Server
       Client


                                                                                            Server


       Client
                                                                                            Server



         Instructor’s Guide for Coulouris, Dollimore, Kindberg and Blair, Distributed Systems: Concepts and Design Edn. 5
                                                      © Pearson Education 2012
Uso de Servidores Proxy


  Client                                                                                                                      Web
                                                                                                                              server
                                                      Proxy
                                                      server


  Client                                                                                                                      Web
                                                                                                                              server




                     Vantagens e Desvantagens?

           Instructor’s Guide for Coulouris, Dollimore, Kindberg and Blair, Distributed Systems: Concepts and Design Edn. 5
                                                        © Pearson Education 2012
Arquitetura Peer-to-Peer (P2P)




       Instructor’s Guide for Coulouris, Dollimore, Kindberg and Blair, Distributed Systems: Concepts and Design Edn. 5
                                                    © Pearson Education 2012
24




Padrões Arquiteturais
• Arquiteturas recorrentes me SD
 • Arquitetura em camadas
 • Arquitetura Two-Tier
 • Arquitetura Three-Tier
 • Arquitetura Web Services
Representação Arquitetural em
Camadas

                     Applications, services



                                 Middleware




                          Operating system
                                                                                                                           Platform

         Computer and network hardware

        Instructor’s Guide for Coulouris, Dollimore, Kindberg and Blair, Distributed Systems: Concepts and Design Edn. 5
                                                     © Pearson Education 2012
26



Arquiteturas Two-tier e Three-tier




       Instructor’s Guide for Coulouris, Dollimore, Kindberg and Blair, Distributed Systems: Concepts and Design Edn. 5
                                                    © Pearson Education 2012
Arquitetura padrão de Web
                                                                                                                          27




Services




       Instructor’s Guide for Coulouris, Dollimore, Kindberg and Blair, Distributed Systems: Concepts and Design Edn. 5
                                                    © Pearson Education 2012
28




Relembrando


          • Sockest TCP
Programação de socket
usando TCP

Serviço TCP: transferência confiável de bytes de um
 processo para outro



                                                           controlado pelo
  controlado pelo                             processo     desenvolvedor
   desenvolvedor     processo
                                                           da aplicação
     da aplicação      socket                   socket
                     TCP com                  TCP com      controlado
      controlado
                                               buffers,    pelo sistema
    pelo sistema      buffers,    Internet    variáveis    operacional
     operacional     variáveis

                    hospedeiro               hospedeiro
                    ou servidor              ou servidor
Programação
de socket com TCP
cliente deve contactar servidor      • quando contactado pelo cliente,
• processo servidor primeiro deve      servidor TCP cria novo socket
  estar rodando                        para processo servidor se
• servidor deve ter criado socket      comunicar com cliente
  (porta) que aceita contato do         • permite que servidor fale com
  cliente                                 múltiplos clientes
                                        • números de porta de origem
cliente contacta servidor:
                                          usados para distinguir clientes
• criando socket TCP local ao
                                          (mais no Cap. 3)
  cliente
• especificando endereço IP, #
                                    ponto de vista da aplicação
  porta do processo servidor
                                    TCP oferece transferência
• quando cliente cria socket:
                                    de bytes confiável, em ordem
  cliente TCP estabelece conexão    (“pipe”) entre cliente e servidor
  com servidor TCP
Interação de socket
cliente/servidor: TCP
   servidor (rodando em hostid)                     Cliente
         cria socket,
         porta = x, para
         requisição que chega:
         welcomeSocket =
             ServerSocket()

                                 estabelecimento   cria socket,
       espera requisição
       da conexão que chega      da conexão TCP    conexão com hostid, porta = x
                                                   clientSocket =
       connectionSocket =
                                                          Socket()
       welcomeSocket.accept()

                                                     envia requisição usando
         lê requisição de                            clientSocket
         connectionSocket

          escrever resposta em
          connectionSocket                           lê resposta de
                                                     clientSocket
         fecha
         connectionSocket                             fecha
                                                      clientSocket
Programação de socket
    com TCP
Exemplo de apl. cliente-servidor:
1) cliente lê linha da entrada padrão
 (cadeia inFromUser), envia ao
 servidor via socket (cadeia
 outToServer)
2) servidor lê linha do socket
3) servidor converte linha para
 maiúsculas, envia de volta ao cliente
4) cliente lê, imprime linha modificada do
 socket (cadeia inFromServer)
Exemplo: cliente Java (TCP)
                    import java.io.*;
                    import java.net.*;
                    class TCPClient {

                      public static void main(String argv[ ]) throws Exception
                      {
                        String sentence;
                        String modifiedSentence;
      cria cadeia
                         BufferedReader inFromUser =
      de entrada
                          new BufferedReader(new InputStreamReader(System.in));
      cria socket
 cliente, conexão        Socket clientSocket = new Socket("hostname", 6789);
     com servidor
   cria cadeia de        DataOutputStream outToServer =
 saída conectada          new DataOutputStream(clientSocket.getOutputStream());
        ao socket
cria cadeia de            BufferedReader inFromServer =
entrada conectada              new BufferedReader(new
          ao socket            InputStreamReader(clientSocket.getInputStream()));

                              sentence = inFromUser.readLine();

        envia linha           outToServer.writeBytes(sentence + 'n');
        ao servidor
                              modifiedSentence = inFromServer.readLine();
           lê linha
       do servidor
                              System.out.println("FROM SERVER: " + modifiedSentence);

                              clientSocket.close();

                          }
                      }
Exemplo: servidor Java (TCP)
                        import java.io.*;
                        import java.net.*;

                        class TCPServer {

                         public static void main(String argv[]) throws Exception
                          {
                            String clientSentence;
      cria socket de        String capitalizedSentence;
    apresentação na
                            ServerSocket welcomeSocket = new ServerSocket(6789);
         porta 6789
                            while(true) {
    espera no socket
de apresentação pelo            Socket connectionSocket = welcomeSocket.accept();
   contato do cliente
                               BufferedReader inFromClient =
      cria cadeia de            new BufferedReader(new
 entrada, conectada             InputStreamReader(connectionSocket.getInputStream()));
           ao socket
cria cadeia de
saída, conectada               DataOutputStream outToClient =
        ao socket               new DataOutputStream(connectionSocket.getOutputStream());
        lê linha
      do socket                clientSentence = inFromClient.readLine();

                               capitalizedSentence = clientSentence.toUpperCase() + 'n';
  escreve linha
                               outToClient.writeBytes(capitalizedSentence);
      no socket
                           }
                       }
                   }                    fim do loop while,
                                        retorna e espera outra
                                        conexão do cliente

Mais conteúdo relacionado

Mais procurados

Vantagens e desvantagens em topologias de redes
Vantagens e desvantagens em topologias de redesVantagens e desvantagens em topologias de redes
Vantagens e desvantagens em topologias de redes
Marco Martins
 
Redes de computadores II - 3.Roteamento
Redes de computadores II - 3.RoteamentoRedes de computadores II - 3.Roteamento
Redes de computadores II - 3.Roteamento
Mauro Tapajós
 
Introducao vpn (1)
Introducao vpn (1)Introducao vpn (1)
Introducao vpn (1)
Valldo
 
Estruturas de rede
Estruturas de redeEstruturas de rede
Estruturas de rede
cadudragon
 

Mais procurados (20)

Introdução aos Sistemas Distribuídos
Introdução aos Sistemas DistribuídosIntrodução aos Sistemas Distribuídos
Introdução aos Sistemas Distribuídos
 
Vantagens e desvantagens em topologias de redes
Vantagens e desvantagens em topologias de redesVantagens e desvantagens em topologias de redes
Vantagens e desvantagens em topologias de redes
 
Modelo OSI - Camada Física
Modelo OSI - Camada FísicaModelo OSI - Camada Física
Modelo OSI - Camada Física
 
Modelo OSI - Camada de Enlace
Modelo OSI - Camada de EnlaceModelo OSI - Camada de Enlace
Modelo OSI - Camada de Enlace
 
Redes de computadores II - 3.Roteamento
Redes de computadores II - 3.RoteamentoRedes de computadores II - 3.Roteamento
Redes de computadores II - 3.Roteamento
 
Modelo TCP/IP
Modelo TCP/IPModelo TCP/IP
Modelo TCP/IP
 
Topologias De Rede
Topologias De RedeTopologias De Rede
Topologias De Rede
 
Conceitos Básicos de Objetos Distribuidos
Conceitos Básicos de Objetos DistribuidosConceitos Básicos de Objetos Distribuidos
Conceitos Básicos de Objetos Distribuidos
 
Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Curso Java Básico - Aula 01
Curso Java Básico - Aula 01
 
TCP/IP
TCP/IPTCP/IP
TCP/IP
 
Introducao vpn (1)
Introducao vpn (1)Introducao vpn (1)
Introducao vpn (1)
 
Tipos de conexiones de red en virtual box (2)
Tipos de conexiones de red en virtual box (2)Tipos de conexiones de red en virtual box (2)
Tipos de conexiones de red en virtual box (2)
 
Arquitetura de Redes de Computadores
 Arquitetura de Redes de Computadores Arquitetura de Redes de Computadores
Arquitetura de Redes de Computadores
 
desafios na implementacao de sistemas distribuidos
desafios na implementacao de sistemas distribuidosdesafios na implementacao de sistemas distribuidos
desafios na implementacao de sistemas distribuidos
 
Computação em Nuvem
Computação em NuvemComputação em Nuvem
Computação em Nuvem
 
Rede de computadores
Rede de computadoresRede de computadores
Rede de computadores
 
Vulnerabilidades em Redes Wifi
Vulnerabilidades em Redes WifiVulnerabilidades em Redes Wifi
Vulnerabilidades em Redes Wifi
 
Protocolo DHCP - Noções básicas - Bóson Treinamentos
Protocolo DHCP - Noções básicas - Bóson TreinamentosProtocolo DHCP - Noções básicas - Bóson Treinamentos
Protocolo DHCP - Noções básicas - Bóson Treinamentos
 
Aula04 Sistemas Distribuídos - Processos
Aula04 Sistemas Distribuídos - ProcessosAula04 Sistemas Distribuídos - Processos
Aula04 Sistemas Distribuídos - Processos
 
Estruturas de rede
Estruturas de redeEstruturas de rede
Estruturas de rede
 

Destaque

Sincronização e comunicação entre processos
Sincronização e comunicação entre processosSincronização e comunicação entre processos
Sincronização e comunicação entre processos
Amedy Caisse
 
Sistemas Distribuídos - Comunicação Distribuída – Middleware
Sistemas Distribuídos - Comunicação Distribuída – MiddlewareSistemas Distribuídos - Comunicação Distribuída – Middleware
Sistemas Distribuídos - Comunicação Distribuída – Middleware
Adriano Teixeira de Souza
 
Arquitectura e modelos de sistemas distribuidos
Arquitectura e modelos de sistemas distribuidosArquitectura e modelos de sistemas distribuidos
Arquitectura e modelos de sistemas distribuidos
Portal_do_Estudante_SD
 
Sistemas Distribuídos - Comunicação Distribuída - Socket
Sistemas Distribuídos - Comunicação Distribuída - SocketSistemas Distribuídos - Comunicação Distribuída - Socket
Sistemas Distribuídos - Comunicação Distribuída - Socket
Adriano Teixeira de Souza
 
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Adriano Teixeira de Souza
 

Destaque (15)

Capítulo1 - Introdução a Sistemas Distribuídos - Coulouris
Capítulo1 - Introdução a Sistemas Distribuídos - CoulourisCapítulo1 - Introdução a Sistemas Distribuídos - Coulouris
Capítulo1 - Introdução a Sistemas Distribuídos - Coulouris
 
Sistemas Distribuídos - Aula 05
Sistemas Distribuídos - Aula 05Sistemas Distribuídos - Aula 05
Sistemas Distribuídos - Aula 05
 
Introdução à sistemas distribuídos
Introdução à sistemas distribuídosIntrodução à sistemas distribuídos
Introdução à sistemas distribuídos
 
Sistemas Distribuídos - Aula 03
Sistemas Distribuídos - Aula 03Sistemas Distribuídos - Aula 03
Sistemas Distribuídos - Aula 03
 
Apresentação da Disciplina de Sistemas Distribuídos
Apresentação da Disciplina de Sistemas DistribuídosApresentação da Disciplina de Sistemas Distribuídos
Apresentação da Disciplina de Sistemas Distribuídos
 
GlusterFs
GlusterFsGlusterFs
GlusterFs
 
Sd capitulo01
Sd capitulo01Sd capitulo01
Sd capitulo01
 
SI - Sistemas Distribuídos - Apresentação da disciplina
SI - Sistemas Distribuídos - Apresentação da disciplinaSI - Sistemas Distribuídos - Apresentação da disciplina
SI - Sistemas Distribuídos - Apresentação da disciplina
 
Sincronização e comunicação entre processos
Sincronização e comunicação entre processosSincronização e comunicação entre processos
Sincronização e comunicação entre processos
 
Sockets : Introdução
Sockets : IntroduçãoSockets : Introdução
Sockets : Introdução
 
Sistemas De Arquivos Distribuídos (SAD)
Sistemas De Arquivos Distribuídos (SAD)Sistemas De Arquivos Distribuídos (SAD)
Sistemas De Arquivos Distribuídos (SAD)
 
Sistemas Distribuídos - Comunicação Distribuída – Middleware
Sistemas Distribuídos - Comunicação Distribuída – MiddlewareSistemas Distribuídos - Comunicação Distribuída – Middleware
Sistemas Distribuídos - Comunicação Distribuída – Middleware
 
Arquitectura e modelos de sistemas distribuidos
Arquitectura e modelos de sistemas distribuidosArquitectura e modelos de sistemas distribuidos
Arquitectura e modelos de sistemas distribuidos
 
Sistemas Distribuídos - Comunicação Distribuída - Socket
Sistemas Distribuídos - Comunicação Distribuída - SocketSistemas Distribuídos - Comunicação Distribuída - Socket
Sistemas Distribuídos - Comunicação Distribuída - Socket
 
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
 

Semelhante a Capítulo 2 - Sistemas Distribuídos - Coulouris

Gerência de identidades federadas em nuvens
Gerência de identidades federadas em nuvensGerência de identidades federadas em nuvens
Gerência de identidades federadas em nuvens
jarddel
 
Uma Arquitetura para a Implantação Automática de Serviços em Infraestruturas ...
Uma Arquitetura para a Implantação Automática de Serviços em Infraestruturas ...Uma Arquitetura para a Implantação Automática de Serviços em Infraestruturas ...
Uma Arquitetura para a Implantação Automática de Serviços em Infraestruturas ...
Lenin Abadie
 
Apostilas - cliente servidor - aula 1 - fabiula
Apostilas - cliente servidor - aula 1 - fabiulaApostilas - cliente servidor - aula 1 - fabiula
Apostilas - cliente servidor - aula 1 - fabiula
Daniel Silveira
 
Joana costa tp 1 – trabalho prático www
Joana costa tp 1 – trabalho prático wwwJoana costa tp 1 – trabalho prático www
Joana costa tp 1 – trabalho prático www
Joana Costa
 
3a Web Aula - Gestão de Tecnologia da Informação.pdf
3a Web Aula - Gestão de Tecnologia da Informação.pdf3a Web Aula - Gestão de Tecnologia da Informação.pdf
3a Web Aula - Gestão de Tecnologia da Informação.pdf
Dimas Francisco
 

Semelhante a Capítulo 2 - Sistemas Distribuídos - Coulouris (20)

Gerência de identidades federadas em nuvens
Gerência de identidades federadas em nuvensGerência de identidades federadas em nuvens
Gerência de identidades federadas em nuvens
 
Aula 1 - Programação Dinâmica para Web
Aula 1 - Programação Dinâmica para WebAula 1 - Programação Dinâmica para Web
Aula 1 - Programação Dinâmica para Web
 
World Wide Web
World Wide WebWorld Wide Web
World Wide Web
 
Introdução a Cloud Computing
Introdução a Cloud ComputingIntrodução a Cloud Computing
Introdução a Cloud Computing
 
Aula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptx
Aula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptxAula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptx
Aula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptx
 
Padrões-04 - Padrões Arquiteturais - Broker
Padrões-04 - Padrões Arquiteturais - BrokerPadrões-04 - Padrões Arquiteturais - Broker
Padrões-04 - Padrões Arquiteturais - Broker
 
Aula sd 2008_02aspectosprojectosds
Aula sd 2008_02aspectosprojectosdsAula sd 2008_02aspectosprojectosds
Aula sd 2008_02aspectosprojectosds
 
Integração de aplicações em
Integração de aplicações emIntegração de aplicações em
Integração de aplicações em
 
Julio Silvello - Pervasive Computing
Julio Silvello - Pervasive ComputingJulio Silvello - Pervasive Computing
Julio Silvello - Pervasive Computing
 
Transferência para uma nuvem privada com confiança
Transferência para uma nuvem privada com confiançaTransferência para uma nuvem privada com confiança
Transferência para uma nuvem privada com confiança
 
Uma Arquitetura para a Implantação Automática de Serviços em Infraestruturas ...
Uma Arquitetura para a Implantação Automática de Serviços em Infraestruturas ...Uma Arquitetura para a Implantação Automática de Serviços em Infraestruturas ...
Uma Arquitetura para a Implantação Automática de Serviços em Infraestruturas ...
 
Apostilas - cliente servidor - aula 1 - fabiula
Apostilas - cliente servidor - aula 1 - fabiulaApostilas - cliente servidor - aula 1 - fabiula
Apostilas - cliente servidor - aula 1 - fabiula
 
Cloud computing foundation
Cloud computing foundationCloud computing foundation
Cloud computing foundation
 
Programação orientada à objetos & mvc
Programação orientada à objetos & mvcProgramação orientada à objetos & mvc
Programação orientada à objetos & mvc
 
Cloud Computing - Conceitos e Aplicações Práticas
Cloud Computing - Conceitos e Aplicações PráticasCloud Computing - Conceitos e Aplicações Práticas
Cloud Computing - Conceitos e Aplicações Práticas
 
Joana costa tp 1 – trabalho prático www
Joana costa tp 1 – trabalho prático wwwJoana costa tp 1 – trabalho prático www
Joana costa tp 1 – trabalho prático www
 
Aula03 Sistemas Distribuídos - Arquiteturas de sistemas distribuídos
Aula03 Sistemas Distribuídos - Arquiteturas de sistemas distribuídosAula03 Sistemas Distribuídos - Arquiteturas de sistemas distribuídos
Aula03 Sistemas Distribuídos - Arquiteturas de sistemas distribuídos
 
Introdução a arquitetura de sistemas com .NET
Introdução a arquitetura de sistemas com .NETIntrodução a arquitetura de sistemas com .NET
Introdução a arquitetura de sistemas com .NET
 
SI - Introdução a Sistemas Distribuidos
SI - Introdução a Sistemas DistribuidosSI - Introdução a Sistemas Distribuidos
SI - Introdução a Sistemas Distribuidos
 
3a Web Aula - Gestão de Tecnologia da Informação.pdf
3a Web Aula - Gestão de Tecnologia da Informação.pdf3a Web Aula - Gestão de Tecnologia da Informação.pdf
3a Web Aula - Gestão de Tecnologia da Informação.pdf
 

Último

Slide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemáticaSlide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemática
sh5kpmr7w7
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptx
TailsonSantos1
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
azulassessoria9
 
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdfatividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
Autonoma
 
19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf
marlene54545
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
PatriciaCaetano18
 

Último (20)

Slide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemáticaSlide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemática
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptx
 
P P P 2024 - *CIEJA Santana / Tucuruvi*
P P P 2024  - *CIEJA Santana / Tucuruvi*P P P 2024  - *CIEJA Santana / Tucuruvi*
P P P 2024 - *CIEJA Santana / Tucuruvi*
 
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM POLÍGON...
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM  POLÍGON...Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM  POLÍGON...
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM POLÍGON...
 
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.docGUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
 
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdfatividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
 
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
 
6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx
 
aula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptaula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.ppt
 
O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...
O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...
O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...
 
Caderno de exercícios Revisão para o ENEM (1).pdf
Caderno de exercícios Revisão para o ENEM (1).pdfCaderno de exercícios Revisão para o ENEM (1).pdf
Caderno de exercícios Revisão para o ENEM (1).pdf
 
Novena de Pentecostes com textos de São João Eudes
Novena de Pentecostes com textos de São João EudesNovena de Pentecostes com textos de São João Eudes
Novena de Pentecostes com textos de São João Eudes
 
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptxSlides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
 
19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf
 
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
 
O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.
 
Falando de Física Quântica apresentação introd
Falando de Física Quântica apresentação introdFalando de Física Quântica apresentação introd
Falando de Física Quântica apresentação introd
 
Cartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxCartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptx
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
 

Capítulo 2 - Sistemas Distribuídos - Coulouris

  • 1. 1 SMD0050 - SISTEMAS DISTRIBUÍDOS - Capítulo 2 •Prof. Dr. Windson Viana de Carvalho •Créditos : 64h •Prática e Teórica
  • 2. 2 Modelagem e projeto de um sistema distribuído • Muitos desafios a serem suplantados • Projetar um SD em três perspectivas • Modelos Físicos • Hardware envolvido (rede e dispositivos) • Modelos Arquiteturais • Camadas de software e distribuição entre as entidades envolvidas • Modelos Fundamentais • Quais estratégias serão utilizadas para garantir a coordenação, a segurança e dependabilidade do sistema distribuído?
  • 3. 3 Modelos Físicos • Três Gerações de Sistemas distribuídos • Fase I : Acesso Remoto e Compartilhamento de recursos • Fase II: Sistemas baseados na Internet • Fase III: Sistemas contemporâneos em larga escala com grande heterogeneidade de acesso • Sistema de Terceira Geração podem ser vistos como Sistemas de Sistemas ou Sistemas Complexos
  • 4. Figure 2.1 Gerações de Sistemas distribuídos Instructor’s Guide for Coulouris, Dollimore, Kindberg and Blair, Distributed Systems: Concepts and Design Edn. 5 © Pearson Education 2012 4
  • 5. 5 Modelos Arquiteturais • Organização ou estrutura que responde às seguintes questões • Quais são entidades (software) e seus papéis na execução das tarefas do sistema distribuído? • Como essas entidades irão se conectar e qual paradigma de comunicação será utilizado? • Onde as entidades estarão fisicamente localizadas?
  • 6. 6 Modelos Arquiteturais • Quais são entidades comunicantes em um SD? • Processos • Entidade de software comunicante • Pode conter subprocessos (Threads) • Nós físicos • Sensores, sistemas de automação • Do ponto de vista de desenvolvimento de um SD • Objetos • Componentes • Serviços
  • 7. 7 Modelos Arquiteturais • Como essas entidades irão se conectar e qual paradigma de comunicação será utilizado? • A resposta está muitas vezes relacionada a tecnologia de desenvolvimento utilizada • Comunicação entre processos • Invocação remota • Comunicação indireta
  • 8. 8 Comunicação entre processos • A forma mais simples é uso de APIs para acessar a camada de sockets do sistema operacional • Problemas inerentes a desconexões, não presença e protocolo de troca de informação ficam a cargo do programador • Modelos de conexão atrelados ao protocolo de transporte • Socket TCP, socket UDP • Uso de Multicast ou Unicast • Suporte a modelo com conexão permanente e manutenção de estado de conexão • Protocolos de troca de mensagens • Separadores • Serialização e deserialização • XML, JSON
  • 9. 9 Exemplo de Serialização em Java class Nodo implements Serializable { Vector filhos; Nodo pai; String nome; public Nodo(String s) { filhos = new Vector(5); nome = s; } public void addFilho(Nodo n) { Filhos.addElement(n); n.pai = this; } }
  • 10. 10 Exemplo de Serialização em Java cliente = new Socket(host, port); Nodo top = new Nodo("topo"); top.addFilho(new Nodo("filho1")); top.addFilho(new Nodo("filho2")); ObjectOutput out = new ObjectOutputStream(cliente.getOutputStream()); out.writeObject(top); out.flush();
  • 11. 11 Exemplo de Serialização em Java Cliente - Socket cliente = new Socket(host, port); Nodo top = new Nodo("topo"); top.addFilho(new Nodo("filho1")); top.addFilho(new Nodo("filho2")); ObjectOutput out = new ObjectOutputStream(cliente.getOutputStream()); out.writeObject(top); out.flush();
  • 12. 12 Exemplo de Serialização em Java Servidor - Socket socket = server.accept(); out = new ObjectOutputStream(socket.getOutputStream()); in = new ObjectInputStream(socket.getInputStream()); Nodo n = (Nodo)in.readObject(); n.addFilho(new Nodo("servidor")); out.writeObject(n); out.flush();
  • 13. 13 Invocação remota • Framework de mais alto nível disponível pelo Sistema Operacional ou middleware para facilitar a comunicação entre processos • Protocolos do tipo requisição-resposta • Remote Procedure Call (RPC) • Remote Method Invocation (RMI)
  • 15. 15 Desvantagens da Invocação remota • Um acoplamento entre as partes comunicantes ainda é grande • Conhecimento de quem está comunicando • Ambos conectados ao mesmo tempo • Pode oferecer transparência de localização e acesso usando descoberta de serviços
  • 16. 16 Comunicação indireta • Menor acoplamento entre os sistemas • Promove os desacoplamentos espacial e temporal • Sem a necessidade de conhecimento da localização e com quem está se comunicando • Sem a necessidade de os comunicantes estarem conectados ao mesmo • Exemplos • Sistemas baseados em eventos (Event-based ou Publish- Subscribers) • Fila de Mensagens • Espaço de Tuplas • Memória Compartilhada e Distribuída
  • 17. 17 Paradigmas de comunicação Instructor’s Guide for Coulouris, Dollimore, Kindberg and Blair, Distributed Systems: Concepts and Design Edn. 5 © Pearson Education 2012
  • 18. 18 Modelos Arquiteturais • Estilos Arquiteturais • Arquitetura Cliente-Servidor • Cliente magro ou cliente gordo • Proxy • Múltiplos servidores • Arquitetura Peer-to-Peer • Totalmente descentralizada • Hierárquica
  • 19. Arquitetura Cliente-Servidor Client invocation invocation Server result result Server Client Key: Process: Computer: Instructor’s Guide for Coulouris, Dollimore, Kindberg and Blair, Distributed Systems: Concepts and Design Edn. 5 © Pearson Education 2012
  • 20. Thin client (Cliente “magro”) Compute server Network computer or PC Thin network Application Client Process Instructor’s Guide for Coulouris, Dollimore, Kindberg and Blair, Distributed Systems: Concepts and Design Edn. 5 © Pearson Education 2012
  • 21. Serviço provido por múltiplos servidores Service Server Client Server Client Server Instructor’s Guide for Coulouris, Dollimore, Kindberg and Blair, Distributed Systems: Concepts and Design Edn. 5 © Pearson Education 2012
  • 22. Uso de Servidores Proxy Client Web server Proxy server Client Web server Vantagens e Desvantagens? Instructor’s Guide for Coulouris, Dollimore, Kindberg and Blair, Distributed Systems: Concepts and Design Edn. 5 © Pearson Education 2012
  • 23. Arquitetura Peer-to-Peer (P2P) Instructor’s Guide for Coulouris, Dollimore, Kindberg and Blair, Distributed Systems: Concepts and Design Edn. 5 © Pearson Education 2012
  • 24. 24 Padrões Arquiteturais • Arquiteturas recorrentes me SD • Arquitetura em camadas • Arquitetura Two-Tier • Arquitetura Three-Tier • Arquitetura Web Services
  • 25. Representação Arquitetural em Camadas Applications, services Middleware Operating system Platform Computer and network hardware Instructor’s Guide for Coulouris, Dollimore, Kindberg and Blair, Distributed Systems: Concepts and Design Edn. 5 © Pearson Education 2012
  • 26. 26 Arquiteturas Two-tier e Three-tier Instructor’s Guide for Coulouris, Dollimore, Kindberg and Blair, Distributed Systems: Concepts and Design Edn. 5 © Pearson Education 2012
  • 27. Arquitetura padrão de Web 27 Services Instructor’s Guide for Coulouris, Dollimore, Kindberg and Blair, Distributed Systems: Concepts and Design Edn. 5 © Pearson Education 2012
  • 28. 28 Relembrando • Sockest TCP
  • 29. Programação de socket usando TCP Serviço TCP: transferência confiável de bytes de um processo para outro controlado pelo controlado pelo processo desenvolvedor desenvolvedor processo da aplicação da aplicação socket socket TCP com TCP com controlado controlado buffers, pelo sistema pelo sistema buffers, Internet variáveis operacional operacional variáveis hospedeiro hospedeiro ou servidor ou servidor
  • 30. Programação de socket com TCP cliente deve contactar servidor • quando contactado pelo cliente, • processo servidor primeiro deve servidor TCP cria novo socket estar rodando para processo servidor se • servidor deve ter criado socket comunicar com cliente (porta) que aceita contato do • permite que servidor fale com cliente múltiplos clientes • números de porta de origem cliente contacta servidor: usados para distinguir clientes • criando socket TCP local ao (mais no Cap. 3) cliente • especificando endereço IP, # ponto de vista da aplicação porta do processo servidor TCP oferece transferência • quando cliente cria socket: de bytes confiável, em ordem cliente TCP estabelece conexão (“pipe”) entre cliente e servidor com servidor TCP
  • 31. Interação de socket cliente/servidor: TCP servidor (rodando em hostid) Cliente cria socket, porta = x, para requisição que chega: welcomeSocket = ServerSocket() estabelecimento cria socket, espera requisição da conexão que chega da conexão TCP conexão com hostid, porta = x clientSocket = connectionSocket = Socket() welcomeSocket.accept() envia requisição usando lê requisição de clientSocket connectionSocket escrever resposta em connectionSocket lê resposta de clientSocket fecha connectionSocket fecha clientSocket
  • 32. Programação de socket com TCP Exemplo de apl. cliente-servidor: 1) cliente lê linha da entrada padrão (cadeia inFromUser), envia ao servidor via socket (cadeia outToServer) 2) servidor lê linha do socket 3) servidor converte linha para maiúsculas, envia de volta ao cliente 4) cliente lê, imprime linha modificada do socket (cadeia inFromServer)
  • 33. Exemplo: cliente Java (TCP) import java.io.*; import java.net.*; class TCPClient { public static void main(String argv[ ]) throws Exception { String sentence; String modifiedSentence; cria cadeia BufferedReader inFromUser = de entrada new BufferedReader(new InputStreamReader(System.in)); cria socket cliente, conexão Socket clientSocket = new Socket("hostname", 6789); com servidor cria cadeia de DataOutputStream outToServer = saída conectada new DataOutputStream(clientSocket.getOutputStream()); ao socket
  • 34. cria cadeia de BufferedReader inFromServer = entrada conectada new BufferedReader(new ao socket InputStreamReader(clientSocket.getInputStream())); sentence = inFromUser.readLine(); envia linha outToServer.writeBytes(sentence + 'n'); ao servidor modifiedSentence = inFromServer.readLine(); lê linha do servidor System.out.println("FROM SERVER: " + modifiedSentence); clientSocket.close(); } }
  • 35. Exemplo: servidor Java (TCP) import java.io.*; import java.net.*; class TCPServer { public static void main(String argv[]) throws Exception { String clientSentence; cria socket de String capitalizedSentence; apresentação na ServerSocket welcomeSocket = new ServerSocket(6789); porta 6789 while(true) { espera no socket de apresentação pelo Socket connectionSocket = welcomeSocket.accept(); contato do cliente BufferedReader inFromClient = cria cadeia de new BufferedReader(new entrada, conectada InputStreamReader(connectionSocket.getInputStream())); ao socket
  • 36. cria cadeia de saída, conectada DataOutputStream outToClient = ao socket new DataOutputStream(connectionSocket.getOutputStream()); lê linha do socket clientSentence = inFromClient.readLine(); capitalizedSentence = clientSentence.toUpperCase() + 'n'; escreve linha outToClient.writeBytes(capitalizedSentence); no socket } } } fim do loop while, retorna e espera outra conexão do cliente