COMPUTAÇÃO DISTRIBUÍDA

Documentos relacionados
COMPUTAÇÃO DISTRIBUÍDA

COMPUTAÇÃO DISTRIBUÍDA

Infra-Estrutura de Software

Infra-Estrutura de Software

Comunicação. Carlos A. G. Ferraz 25/6/2003. Sistemas Distribuídos 1. Tópicos. Camadas. Transmissão de dados. Marshalling/Unmarshalling.

Middleware. Camada Intermediária de Suporte a Sistemas Distribuídos

Programando sistemas distribuídos com objetos distribuídos na rede TCP/IP. Prof. Me. Sérgio Carlos Portari Júnior

Sistemas Distribuídos e Infraestrutura. SO: todas as aulas em if677/2014-2/

Sistemas Distribuídos

Características de Sistemas Distribuídos

15/4/15. Processamento Paralelo Middleware Orientado a Objetos. Sistema operacional é a única infraestrutura para interação. Middleware é adicionado

Características de Sistemas Distribuídos

Sistemas Distribuídos

Sistema de Software Distribuído

Sistemas de Objectos Distribuídos

Invocação Remota. Prof. Leonardo Barreto Campos. 1/29

Comunicação. Parte II

Sistemas Distribuídos

INTRODUÇÃO. RPC x RMI

Sistemas Operacionais II

Dados em programas são estruturados, enquanto que mensagens carregam informação seqüencial: Linearização x Restauração de dados Requisição

SISTEMAS DISTRIBUÍDOS

Sistemas Distribuídos

Protocolo Request-Reply

Java RMI. RMI Remote Method Invocation. Chamadas Remotas de Procedimentos (RPC) RPC - Implementação

Sistemas Distribuídos Aula 10

Sistemas de Objetos Distribuídos

Sistemas Distribuídos

Tecnologias de Distribuição e Integração. Quais as preocupações a ter com um sistema distribuído?

Sistemas Distribuídos: Conceitos e Projeto RPC e RMI

Introdução aos Sistemas Distribuídos

Principais conceitos de CORBA

Chamadas Remotas de Procedimentos (RPC) O Conceito de Procedimentos. RPC: Programa Distribuído. RPC: Modelo de Execução

Common Object Request Broker Architecture

Desenvolvimento de Aplicações Distribuídas

Sistemas Distribuídos

SIST706 Sistemas Distribuídos

Sistemas Distribuídos. Plano de Curso. Plano de Curso 04/03/12 ! EMENTA:

Sistemas Distribuídos Aspectos de Projeto de SD. Aspectos de Projeto em SD. Transparência 14/03/12. ! Transparência; ! Abertura; !

Objetos Distribuídos - Programação Distribuída Orientado a Objetos. Luiz Affonso Guedes

Sistemas Distribuídos

Sistemas Distribuídos

Arquitetura de sistemas distribuídos

Sistemas Distribuídos

Conceitos de Sistemas Distribuídos

Java RMI. Sistemas Distribuídos. Mauro Lopes Carvalho Silva. Professor EBTT DAI Departamento de Informática Campus Monte Castelo

Computação Distribuída

Sistemas Distribuídos

Sistemas Distribuídos

Sistemas Distribuídos. Edy Hayashida

Sistemas Distribuídos. Ricardo Ribeiro dos Santos

Sistemas Operacionais II

Sistemas distribuídos. Prof. Emiliano Monteiro

Capítulo V Sistemas de Objectos Distribuídos

Vamos fazer um pequeno experimento

Sistemas Distribuídos

Sistemas Distribuídos

Sistemas Distribuídos

PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS

APLICAÇÕES EM SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar

Comunicação entre Processos

Introdução a Sistemas Distribuídos

UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICA. Sistemas Distribuídos

Sistemas Distribuidos. Prof. Walter Gima

Comunicação. capítulo

RPC e RMI. Sistemas Distribuídos. Mauro Lopes Carvalho Silva. Professor EBTT DAI Departamento de Informática Campus Monte Castelo

Sistemas Operacionais Distribuídos e de Redes

SISTEMAS DISTRIBUIDOS

RMI e RPC. RPC significou um passo muito grande em direcção à

Sistemas de arquivos distribuídos. ECO036 - Sistemas Paralelos e Distribuídos

Arquitetura Cliente-Servidor Generalizada com identificação de tiers. Arquitetura Cliente-Servidor Generalizada com identificação de tiers

Java RMI - Remote Method Invocation. Programação com Objetos Distribuídos (C. Geyer) Java-RMI 1

STD29006 Sistemas Distribuídos

SISTEMAS DISTRIBUÍDOS

Invocação de Métodos Remotos

UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICA. Sistemas Distribuídos

Num sistema de objectos distribuídos, dois conceitos são fundamentais.

Sistema Distribuído. Sistema Distribuído. Aplicações Distribuídas. Conceitos Básicos

Sistemas Distribuídos

Arquitetura e Objetos Distribuídos em CORBA. Aula 3. Especificações OMA Object Web

Sistemas Distribuídos

Processos ca 3 pítulo

ATIVIDADES PRÁTICAS SUPERVISIONADAS

Projeto de Sistemas Distribuídos. Considerações

MIDDLEWARE Aplicativos RMI, RPC e eventos Camadas Protocolo Requesição-Respostal Middleware Representação Externa dos Dados Sistemas Operacionais

Princípios de Sistemas Distribuídos. Tecnologias utilizadas em sistemas distribuídos Aula 5

Projecto hipotético para resolvermos hoje

Caracterização de Sistemas Distribuídos

Sistema Operacional. Prof. Leonardo Barreto Campos. 1/30

Sistemas Distribuídos

TÓPICOS EM COMPUTAÇÃO APLICADA

Cliente-servidor Código móvel Agentes de software Processos pares. Prof a Ana Cristina B. Kochem Vendramin DAINF / UTFPR

Apresentação Carlos Ferraz

Comunicação Objetos Distribuídos e RMI

Sistemas Distribuídos

Desenvolvimento de Aplicações Distribuídas

Invocação de Métodos Remotos RMI (Remote Method Invocation)

JavaTM RMI - Remote Method Invocation

Transcrição:

COMPUTAÇÃO DISTRIBUÍDA INTRODUÇÃO Carlos Ferraz <cagf@cin.ufpe.br>

MOTIVAÇÃO Computação em evolução

Antes disso Sistemas de Software (Aplicações) Infraestrutura de Software Infraestrutura de Hardware Infraestrutura de Comunicação

Antes disso Sistemas Distribuídos Infraestrutura de Software Middleware Sistemas Operacionais Arquitetura de Computadores Redes de Computadores

Evolução Processo Sistema Operacional Máquina Abstrata RAM CPU I/O Computador

Evolução Threads Processos Sistema Operacional Máquina Abstrata RAM CPU I/O Computador

Evolução Processos Sistema Operacional Máquina Abstrata RAM CPU1 CPUn I/O Computador

Evolução Sistema Operacional Sistema Operacional RAM CPU I/O RAM CPU I/O Interface de Rede Interface de Rede

Evolução da Computação

Uma história acelerada da evolução da Computação Distribuída 1 base 2

Atenção!!! Você fará parte do desenvolvimento disso

Lembrete: Próximas Datas 20/06 PROVA 2o. EE 29/06 Revisão de notas 04/07 FINAL

INTRODUÇÃO Dividir para Conquistar

Definição Um sistema distribuído é aquele no qual componentes localizados em uma rede de computadores se comunicam e coordenam suas ações através da passagem (troca) de mensagens Coulouris et al., 2012

Características marcantes Concorrência de componentes Falta de um relógio global Componentes falham de forma independente falha parcial

Tendências-chave O que move os Sistemas Distribuídos hoje? Pervasividade das redes Computação móvel e ubíqua Importância crescente de sistemas multimídia (distribuídos) Sistemas distribuídos como utilidade (serviço) Cloud Computing e seus modelos (IaaS, PaaS, SaaS) Principal motivação: compartilhamento de recursos

Compartilhamento de recursos Passado Cliente magro Poucos recursos Faz por mim... Servidor gordo Muitos recursos Presente Cliente (Par) Servidor (Par) Equilíbrio de recursos (compartilhamento mais verdadeiro e justo) Abundância, mas...

Computation Offloading MOBILE CLOUD COMPUTING Como se faz?

Objetivos de um projeto de SD Eficiência desempenho produtivo Robustez resistência a falha Disponibilidade: o sistema está no ar quando preciso (instante de tempo) Confiabilidade: o sistema não falha por um longo período de tempo E quando falha, a falha não provoca uma catástrofe Consistência mesma visão de dados

Objetivo: Eficiência Para o bem, baseado em paralelismo Para o mal, DDoS

Desafios de Sistemas Distribuídas Heterogeneidade Abertura Segurança Escalabilidade Tratamento de falha Concorrência Transparência

Conceito-chave Distribuição Def.: Um sistema distribuído é aquele no qual componentes localizados em uma rede de computadores se comunicam e coordenam suas ações através da passagem (troca) de mensagens Coulouris et al., 2012 Comunicação demandam Transparência Complexidade Heterogeneidade

Tipos de Transparência Localização: esconde onde o recurso está localizado Acesso: operações idênticas para acesso local e remoto Migração: esconde que um recurso pode se mover para outra localização Relocação: esconde que um recurso pode ser movido para outra localização enquanto está em uso Concorrência: compartilhamento de recursos sem interferência entre processos concorrentes Falha: esconde a falha e recuperação de um recurso Replicação: esconde de usuários ou programadores de aplicação a existência de réplicas de recursos Localização + acesso = transparência de rede

Dois exemplos de sistemas distribuídos Sistema de Negociação Financeira [Coulouris, Dollimore, Kindberg and Blair, Distributed Systems: Concepts and Design. Edn. 5 Pearson Education 2012]

Sistemas distribuídos: multimídia Sistema de recomendação Sistema de bancos de dados Sistema de busca Sistema de autenticação Sistema de streaming MM

Infraestruturas de Software para Sistemas Distribuídos Sistemas Operacionais Distribuídos Sistemas Operacionais de Rede Middleware

Infra-estruturas para SDs: diferenças de objetivos e abstrações Sistemas homogêneos Transparência de distribuição Alto desempenho Memória compartilhada Controle de concorrência Sistemas heterogêneos Pouca transparência Escalabilidade Comunicação Sistemas heterogêneos Transparência de distribuição e comunicação Serviços Abertura

MIDDLEWARE

Necessidades: quem atende o quê? Lógica do negócio Integração de Sistemas Heterogêneos Interoperabilidade destes sistemas Portabilidade Comunicação Uso e gerência de recursos de hardware: CPU Memória I/O

Middleware: definição um conjunto reusável, expansível de serviços e funções que são comumente necessários por parte de várias aplicações distribuídas para funcionarem bem em um ambiente de rede

Infra-Estrutura de SW para SDs Middleware: Arquitetura Básica em Camadas Middleware: coleção de serviços (serviços de middleware) fornecidos através de interfaces padrões (APIs) visão unificada de redes e engenharia de software, respectivamente + formado sobre camadas de infraestrutura modelos de programação, onde a comunicação é abstraída, por ex. ORB CORBA, incluindo RPC abstrai as peculiaridades dos sistemas operacionais, encapsulando e melhorando os mecanismos de concorrência, por ex. ex. JVM AplicaçãoC Domínio: Saúde Nomes Domínio: Financeiro Serviços Específicos Segurança Serviços Comuns Stub Skeleton Barramento de Comunicação Distribuição Infra-estrutura Domínio: Multimídia Tol. a Falhas... Sistema Operacional AplicaçãoS

Middleware Tradicional Message-Oriented Middleware (MOM) Transaction Processing Monitors (TPMON) Forte associação com acesso distribuído a BD Propriedades ACID Remote Procedure Calls (RPC) Object-Oriented Middleware (ORB,...)

INVOCAÇÃO REMOTA E COMUNICAÇÃO INDIRETA RPC, RMI PUB-SUB, FILAS DE MENSAGENS

// quase Java... class HelloWorld { // método local public void sayhello() { print("hello World!"); } // programa principal public static void main(string[] args) { new HelloWorld().sayHello(); } } public class HelloWorld { public HelloWorld ( String name ) { Naming.rebind( name, this ); } // método remoto public String sayhello () { return "Hello World!"; } } public class HelloWorldServer { public static void main(string[] args) { HelloWorld object = new HelloWorld( "Hello" ); } } public class HelloWorldClient { } public static void main(string[] args) { // conexão HelloWorld hello_server = (HelloWorld)Naming.lookup("rmi://hostB/Hello"); // chamada remota print( hello_server.sayhello() ); }

Camadas Aplicações e serviços RMI e RPC Protocolo Request-Reply Marshalling e external Data Representation Middleware (camada de sessão/ apresentação [OSI]) TCP e UDP (sockets)

Transmissão de dados Dados em programas são estruturados Enquanto isso, mensagens carregam informação sequencial: Linearização/Restauração de dados Heterogeneidade na representação de dados em computadores Uso de um formato externo comum Inclusão de uma identificação de arquitetura na mensagem

Marshalling/Unmarshalling Marshalling: Linearização de uma coleção de itens de dados estruturados Tradução dos dados em formato externo (ex: XDR external Data Representation) Unmarshalling: Tradução do formato externo para o local Restauração dos itens de dados de acordo com sua estrutura

Chamada de Procedimentos Remotos Remote Procedure Call (RPC) Ideal: programar um sistema distribuído como se fosse centralizado RPC objetiva permitir chamada de procedimento remoto como se fosse local, ocultando entrada/saída de mensagens

RPC: considerações em função da distribuição evitar passagem de endereço e variáveis globais novos tipos de erros Ex.: tratamento de exceções Se atraso de comunicação timeout

RPC: processamento de interface Objetivo: integração dos mecanismos de RPC com os programas cliente e servidor escritos em uma linguagem de programação convencional Stubs (no cliente e no servidor): transparência de acesso tratamento de algumas exceções no local marshalling unmarshalling C stub S stub rede

Chamadas e mensagens em RPC Máquina do Cliente Máquina do Servidor 2 4 1 empacota 0 desempacota 5 parâmetros parâmetros cliente desempacota empacota 11 resultados resultados 10 8 7 6 servidor Kernel Kernel 3 9 transporte de mensagens via rede

Funções dos Stubs Client stub 1. intercepta a chamada 2. empacota os parâmetros (marshalling) 3. envia mensagem de request ao servidor (através do núcleo) Server stub 4. recebe a mensagem de request (através do núcleo) 5. desempacota os parâmetros (unmarshalling) 6. chama o procedimento, passando os parâmetros 7. empacota o resultado 8. envia mensagem de reply ao cliente (através do núcleo) Client stub 9. recebe a mensagem de reply (através do núcleo) 10.desempacota o resultado 11.passa o resultado para o cliente

RPC: tratamento da comunicação Módulo de comunicação usa protocolo pedido-resposta / request-reply para troca de mensagens entre cliente e servidor Mensagem de aplicação encapsulada em um request/reply cliente res = srv.soma(a,b) servidor res = Soma(a,b) res=request(clt,srv, msg) DoOperation GetRequest reply(clt,res) SendReply

RPC: Passagem de Parâmetros 2-8 Distributed Systems: Principles and Paradigms, Chapter 02 Tanenbaum and van Steen 2002

RPC: ligação (antes da comunicação...) O mecanismo possui um binder para resolução de nomes, permitindo Ligação dinâmica Transparência de localização

Ligação Dinâmica e Nomes Nomes podem ser a solução, mas na realidade os endereços físicos é que são necessários... Daí, faz-se necessário mapear nomes em endereços... como serviço Geralmente, algum agente intermediário tem este papel específico de resolvedor de nomes Onde está B? Está em z. Está em t. B z A x SN y Um servidor de nomes t

Servidores de Nomes Os servidores de nomes, com este papel de mapeamento de nomes para endereços, contribuem para implementar a Transparência de localização Os servidores de nomes são serviços executados no ambiente de suporte a aplicações distribuídas Exs: Rmiregistry: JavaRMI tnameserv: CORBA (JDK) Aplicação Aplicação Aplicação Middleware S1 S2 S3 SN S5 S6 Serviços SO Kernel Serviços SO Kernel Serviços SO Kernel

Exemplo: Servidor import java.rmi.naming; public class CalculatorServer { 1 Importa Serviço de Nomes do Middleware Java RMI (Remote Method Invocation); } public CalculatorServer() { try { Calculator c = new CalculatorImpl(); 2 a oferecer; Naming.rebind("rmi://localhost:1099/CalculatorService", c); } catch (Exception e) { System.out.println("Trouble: " + e); } } public static void main(string args[]) { new CalculatorServer(); } Cria referência do serviço Registra (exporta) referência c com nome...calculatorservice no servidor de nomes.

Exemplo: Cliente import java.rmi.naming;... public class CalculatorClient { public static void main(string[] args) { try { Calculator c = (Calculator) Naming.lookup( "rmi://localhost Procura (importa) no servidor de nomes o endereço do servidor usando o seu nome. 3 System.out.println( c.sub(4, 3) ); System.out.println( c.add(4, 5) ); System.out.println( c.mul(3, 6) ); System.out.println( c.div(9, 3) ); } catch... 4 /CalculatorService"); Obtido o endereço, o cliente está ligado (conectado) ao servidor e passa a chamar as operações do serviço.

Objetivos de serviços de nomes Ser escalar Ter um longo tempo de vida Ser altamente disponível Ter isolamento de falhas Tolerar desconfiança

COMPUTAÇÃO DISTRIBUÍDA CONCLUSÕES

Características marcantes Concorrência de componentes possibilidade de paralelismo Compartilhamento de recursos Componentes falham de forma independente falha parcial

Próximas Datas 2º. EE: 20/06 http://www.cin.ufpe.br/~cagf/if677/2018-1/slides/ Revisão de notas: 29/06, 8-10h, minha sala (C-125) FINAL: 04/07