Sistemas distribuídos

Slides:



Advertisements
Apresentações semelhantes
|Introdução a Java para programadores Telis. Jogo de Dados simples O jogo é jogado por dois jogadores. Cada jogador faz sua jogada (lança um dado), e.
Advertisements

Sistemas Operacionais II N Aula prática Java Sockets, RPC e RMI Eduardo Bezerra.
I/O Carlos Bazilio Depto de Ciência e Tecnologia
Java Remote Method Invocation Java RMI
Sockets Marco Antonio – marcoreis.net Arquiteto de Software Dezembro/2007.
Modificadores Marco Antonio, Arquiteto de Software – TJDF Atualizado em Novembro/2008.
Marco A. S. Reis EJB Acesso Remoto Marco A. S. Reis
Tratamento de Exceções
RMI-IIOP.
Chain of Responsibility
PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena
Java RMI Alcides Calsavara. Objetivos Permitir que um método de uma classe Java em execução em uma máquina virtual JVM chame um método de um objeto (instância.
Comunicação Distribuída
Invocação de Métodos Remotos RMI
Programação Concorrente
1 Arquitetura CORBA Repositório de Implementação Repositório de Interface cliente programa cliente proxy ORB Core ou invocação dinâmica servidor ORB Core.
Treinamento no GRADEp HelloWorld Args. Slide 2 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - julho 2005 HelloWorld e Args Autoria Autora.
PROGRAMAÇÃO DISTRIBUÍDA EM JAVA Verão/2001
Introdução a JDBC Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de Pós-Graduação em Engenharia de Software Programação Distribuída.
Introdução a EJB 3.0 Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de Pós-Graduação em Engenharia de Software Programação Distribuída.
Estrutura de Dados em Java
Middleware e Sistemas Distribuídos
Concorrência em Java Threads em Java.
JAVA Linguagem Ambiente de Desenvolvimento
METODOLOGIA PARA DESENVOLVIMENTO DE SISTEMAS Prof. Dr. rer. nat. Daniel D. Abdala 1.
Web Services Uninorte Semana de Tecnologia da Informação
Chamada Remota de Procedimentos
Desenvolvimento de Aplicações CORBA
Sistemas Distribuídos Carlos A. G. Ferraz DI/UFPE Aula 07.
Remote Method Invocation RMI
Concorrência e Java RMI
1 Mobilidade de Código com μcode Projeto Giga Alexandre Lages
Objetos Distribuídos e invocação remota
Cristiano Soares Rafael di Lego Roberto Nemirovsky Thiago Nascimento
Objetos Distribuídos Nazareno Andrade.
T. D. S. I. PARA WEB Prof. Emmanuel Nolêto. Java RMI.
Concorrência e thread Petrônio Júnior(pglj) Márcio Neves(mmn2)
Paradigmas da Programação – Semestre 1 – Aula 10 Professor: Eduardo Mantovani )
RMI x C# Remote Emilena Specht – 1113/01/9 2004/01
Paradigmas da Programação – Semestre 1 – Aula 9 Professor: Eduardo Mantovani )
Tratamento de Exceções
Java RMI João Gabriel (jggxm).
RMI - JAVA.
Introdução às Java Threads
Conceitos da arquitetura
Java Kickstart, day 2 Semelhanças com linguagem C.
Polimorfismo.
Exceções Suzana Fragoso (smpf) Adaptado do material de Guilherme Carvalho (gvc)
Exceções Profa. Patrícia A. Jaques Alterada por Leandro Tonietto abr-15.
Objetos Distribuídos para WEB Prof. Paulo Fernando da Silva FURB – Universidade Regional de Blumenau Pós-Graduação em Desenvolvimento WEB.
RMI (Remote Method Invocation) Bruno Edson Plínio Tadeu
RMI Objetos Distribuídos Luiz C. D´oleron SCJP
Java Conexão com Baco de dados Saulo Bazzi Oberderfer Fonte:
Socket em Java.
Java Disciplina: Programação II Professora: Mai-Ly Vanessa.
A High Performance Java Middleware with a Real Application HUERT, Fabrice; CAROMEL, Denis; Bal, Henri E. Supercomputing 2004 Trabalho desenvolvido por:
Java – Remote Method Invocation (RMI)
Tecnologias de Localização de Serviços Exame de Qualificação IME/USP Fev/2003.
Jini Network Technology MAC Seminário Nov/2001.
Leo Silva Leonardo Murta Luiz Viana Persistência em Java.
J U nit Um Framework Para Testes. Motivação  Todos os programadores sabem que devem testar seu código  Quanto mais curto o prazo menos testes são realizados.
RMI Java Remote Method Invocation em Java. Introdução Java Remote Method Invocation (Java RMI) permite desenvolver sistemas distribuídos baseados em Java.
Sistemas Distribuídos Prof. Marcus Rodrigues
Desenvolvimento WEB II Professora: Kelly de Paula Cunha Apresentação baseada no material didático elaborado pelo Prof. Pasteur Ottoni de Miranda Junior.
SOCKET - É um canal de comunicação entre processos que estabelece uma conexão entre eles na forma de cliente-servidor. Por meio de sockets, os computadores.
Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos
Web Services Conceitos e Tecnologias Amanda Modesto Suzanna Sandes.
ProgramaçãoConcorrente Glêdson Elias
Transcrição da apresentação:

Sistemas distribuídos JINI como Middleware para Sistemas Distribuídos Prof. Diovani Milhorim

CONCEITOS BÁSICOS Middleware para Sistemas Distribuídos Solução portável baseada em Java Arquitetura baseada em serviços, sem distinção entre software ou hardware Extende a perspectiva de uma única JVM para uma rede (ou federação) de JVMs

PERCEPÇÃO DO USUÁRIO Dispositivos “JINI Enabled” ao serem plugados na rede tornam-se serviços disponíveis Rede plug-and-play: dispensam administração e configuração prévia de clientes e servidores Serviços descentralizados oferecidos por federações

PERCEPÇÃO DO PROGRAMADOR Middleware que oferece suporte a registro e busca de objetos que implementem a interface desejada Permite a criação de federações de serviços Não é necessário aprender RMI para programar o objeto cliente; comunicação e protocolo são abstraídos por um objeto Proxy do servidor

COMPONENTES OFERECIDOS Infra-Estrutura: Descoberta (Discovery) e Busca (lookup) de serviços Programação: Leasing, Eventos Distribuídos e Comunicação entre objetos através de RMI Serviços: Segurança e Transaction Managers

INFRA-ESTRUTURA: DISCOVERY Objeto servidor descobre Servidores Lookup disparando uma requisição multicast (ou unicast caso o Servidor Lookup for conhecido) Servidores lookups disponíveis respondem a requisição enviando um objeto ServiceRegistrar ServiceRegistrar é o 'passaporte' para a utilização do Servidor Lookup

INFRA-ESTRUTURA: JOIN O ServiceRegistrar contém uma referência para o Servidor Lookup e uma API para o acoplamento do Objeto Servidor ao Servidor Lookup Objeto acopla-se ao servidor invocando o método register( ) oferecido pelo ServiceRegistrar, que serializa e envia para o servidor um objeto proxy

INFRA-ESTRUTURA: Register Multicast ServiceRegistrar Register ( ) Objeto Proxy Objeto Servidor Servidor Lookup

INFRA-ESTRUTURA: DISCOVERY Objeto cliente descobre Servidores Lookup disparando uma requisição multicast Servidores Lookup disponíveis respondem a requisição enviando um objeto ServiceRegistrar O ServiceRegistrar contém uma referência para o Servidor Lookup e uma API para a busca de serviços disponíveis

INFRA-ESTRUTURA: LOOKUP Objeto cliente invoca o método lookup( ) oferecido pelo objeto ServiceRegistrar para localizar o serviço desejado O servidor retorna um objeto proxy do serviço, que permite invocações RMI ao objeto servidor O objeto cliente invoca métodos do objeto servidor como se estivessem na mesma JVM

INFRA-ESTRUTURA: LOOKUP Multicast ServiceRegistrar lookup ( ) Objeto Cliente Objeto Proxy Servidor Lookup

INFRA-ESTRUTURA: PROXY O objeto Proxy deve ser escrito em java; porém o objeto servidor pode ser escrito em outra linguagem e encapsulado através de JNI Se encarrega de traduzir as invocações de métodos realizadas pelo cliente em chamadas RMI ao objeto servidor Abstrai o protocolo de comunicação

INFRA-ESTRUTURA: PROXY JVM Servidora Invocação local Objeto Cliente RMI Objeto Proxy JVM Cliente Objeto Servidor

PROGRAMAÇÃO: LEASING Leases são fornecidos periodicamente pelo objeto servidor para garantir que ainda está disponível Caso o Servidor Lookup não receba leases periódicos, o objeto proxy do servidor é apagado Permite que a federação detecte falhas nos serviços e as contorne redirecionando clientes para outros servidores disponíveis

PROGRAMAÇÃO: EVENTOS Objetos precisam ser notificados sobre mudanças nos serviços da federação JINI utiliza eventos distribuídos (RemoteEvent) para fazer notificações assíncronas Não há garantia da entrega do evento Objetos possuem um RemoteEventListener que pode delegar o tratamento a terceiros

PROGRAMAÇÃO: TRANSAÇÕES Transações com commit de 2 fases gerenciadas por um Transaction Manager Transaction Managers são serviços como quaisquer outros de uma federação Caso deseje iniciar uma transação, o cliente localiza um serviço Transaction Manager e os demais serviços que desejar

PROGRAMAÇÃO: FACILIDADES Sun oferece o JINI Starter Kit; sua implementação da especificação 2.0 do JINI JINI Starter Kit oferece uma implementação do Servidor Lookup e das classes necessárias para desenvolvimento (ServiceRegistrar, etc.) Extensa documentação e exemplos de códigos

PROGRAMAÇÃO: EXEMPLO public class Cliente { public static void main ( String[] args ) { Entry[] aeAttributes; LookupLocator lookup; ServiceRegistrar registrar; ServiceTemplate template; InterfaceServidor myServerInterface; try { // Procura Servidor Lookup lookup = new LookupLocator("jini://" + args[0]); // Requesita ServiceRegistrar registrar = lookup.getRegistrar ( ); // Pesquisa pelo serviço "Servidor" aeAttributes = new Entry[1]; aeAttributes[0] = new Name ( "Servidor" ); template = new ServiceTemplate ( null, null, aeAttributes ); myServerInterface = ( InterfaceServidor ) registrar.lookup( template ); if ( myServerInterface instanceof InterfaceServidor ) { System.out.println (myServerInterface.say_hello ( ) ); } } catch ( Exception e ) { }

PROGRAMAÇÃO: EXEMPLO import java.rmi.*; public interface InterfaceServidor extends Remote { String say_hello ( ) ; }

PROGRAMAÇÃO: EXEMPLO public class Servidor extends UnicastRemoteObject implements InterfaceServidor, ServiceIDListener, Serializable { public Servidor() throws RemoteException { super ( ); } public String say_hello ( ) { return "Hello World!!!"; } public void serviceIDNotify ( ServiceID serviceid ) { System.out.println ( "ID do Serviço: " + serviceid ); } public static void main (String [ ] args) { Servidor ss; LookupLocator lookup; Entry [ ] aeAttributes; JoinManager joinmanager; ServiceRegistrar registrar; try { System.setSecurityManager ( new RMISecurityManager ( ) ); aeAttributes = new Entry[1]; aeAttributes[0] = new Name("Servidor"); ss = new Servidor ( ); joinmanager = new JoinManager (ss, aeAttributes, ss, null, new LeaseRenewalManager ( ) ); lookup = new LookupLocator ( "jini://" + args[0] ); registrar = lookup.getRegistrar ( ); try { Thread.sleep ( 2000 ); } catch ( Exception e ) { } } catch ( Exception e ) { } }

PROGRAMAÇÃO: INCA X Ferramenta IDE para desenvolvimento completo de serviços e clientes Compilação e execução integrada Possibilita ativação seletiva dos serviços de infraestrutura graficamente Versão gratuita (community edition)

PROGRAMAÇÃO: INCA X

PROGRAMAÇÃO: INCA X