Baixe o app para aproveitar ainda mais
Prévia do material em texto
ARQUITETURA DE SISTEMAS DISTRIBUÍDOS Aula 6 – Sockets e RPC Tema da Apresentação AULA 6 – SOCKETS E RPC ARQUITETURA DE SISTEMAS DISTRIBUÍDOS * ESTRUTURA DA DISCIPLINA AULA 1 – Introdução AULA 2 – Aplicações Distribuídas AULA 3 – Tratamento de Falhas AULA 4 – Classificação de Flynn AULA 5 – Modelo Cliente/Servidor AULA 6 – Sockets e RPC AULA 7 – Modelo P2P AULA 8 – Sistemas de Arquivos Distribuídos AULA 9 – Serviços WEB AULA 10 – Tecnologia: Computação Ubíqua e nas Nuvens Tema da Apresentação AULA 6 – SOCKETS E RPC ARQUITETURA DE SISTEMAS DISTRIBUÍDOS * Conteúdo Programático AULA 6 Sockets. Remote Procedure Call (RPC). Tema da Apresentação AULA 6 – SOCKETS E RPC ARQUITETURA DE SISTEMAS DISTRIBUÍDOS * IMPLEMENTAÇÃO COM SOCKETS Um programa vê os sockets como um mecanismo de entrada e saída de dados Seguem o paradigma open-read-write-close A comunicação através de sockets utiliza também a abordagem de descritor. Tema da Apresentação AULA 6 – SOCKETS E RPC ARQUITETURA DE SISTEMAS DISTRIBUÍDOS * CARACTERÍSTICAS DA COMUNICAÇÃO Configura Cliente Configura Servidor Solicita conexão Aguarda conexão Envia e recebe dados Envia e recebe dados FIM FIM CONEXÃO Tema da Apresentação AULA 6 – SOCKETS E RPC ARQUITETURA DE SISTEMAS DISTRIBUÍDOS * CHAMADAS AO SISTEMA - LINUX Socket : cria um socket Bind: associa uma porta ao socket Listen: Indica ao kernel que está apto a receber conexões Accept: Aceita conexões Connect: Solicita uma conexão Tema da Apresentação AULA 6 – SOCKETS E RPC ARQUITETURA DE SISTEMAS DISTRIBUÍDOS * CONFIGURAÇÃO - SERVIDOR int open_servidor(unsigned short port){ int sock; struct sockaddr_in server; sock = socket(AF_INET,SOCK_STREAM,0); if (sock < 0) return -1; server.sin_family = AF_INET; server.sin_addr.s_addr = INADDR_ANY; server.sin_port = htons((short) port); if ( bind(sock, (struct sockaddr *)&server, sizeof(server)) < 0 ) return -1; if (listen(sock, MAXBACKLOG) < 0 ) return -1; return sock; } Tema da Apresentação AULA 6 – SOCKETS E RPC ARQUITETURA DE SISTEMAS DISTRIBUÍDOS * EXEMPLO – ACERTAR A HORA Configura Cliente Configura Servidor Solicita conexão Aguarda conexão Recebe data/hora e ajusta o sistema Obtém data/hora e envia ao cliente FIM FIM CONEXÃO Servidor: ./server Cliente:./client <ip do servidor> 8000 Tema da Apresentação AULA 6 – SOCKETS E RPC ARQUITETURA DE SISTEMAS DISTRIBUÍDOS * REMOTE PROCEDURE CALL Birrell e Nelson (1984) : permitir que programas fossem capazes de chamar procedimentos localizados em outras CPUs. Para chamar um procedimento remoto, o programa cliente deve ser ligado a um pequeno procedimento de biblioteca chamado de stub do cliente, que representa o procedimento servidor no espaço de endereçamento do cliente. Da mesma maneira, o servidor é ligado a um procedimento denominado stub do servidor. . Tema da Apresentação AULA 6 – SOCKETS E RPC ARQUITETURA DE SISTEMAS DISTRIBUÍDOS * REMOTE PROCEDURE CALL Sistema Operacional Sistema Operacional Cliente Stub do Cliente Stub do Servidor Servidor Rede A B C D E Tema da Apresentação AULA 6 – SOCKETS E RPC ARQUITETURA DE SISTEMAS DISTRIBUÍDOS * EXEMPLO – EQUAÇÃO 2º GRAU Procedimentos: Escrever gerador : calcula.x Gerar arquivos com rpcgen: rpcgen –c – A calcula.x makefile.calcula compila cliente e servidor calcula_clnt.c stub do cliente (não alterar) calcula_svc.c stub do servidor (não alterar) calcula.h cabeçalho das funções calcula_client.c esqueleto do cliente calcula_server.c esqueleto do servidor Editar arquivos calcula_client.c e calcula_server.c Tema da Apresentação AULA 6 – SOCKETS E RPC ARQUITETURA DE SISTEMAS DISTRIBUÍDOS * RESUMINDO Programação com sockets torna explicita as características e uso da rede Programação com RPC disfarça a existência da rede simplificando a programação Tema da Apresentação *
Compartilhar