1 / 23

Sistemas distribuídos

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

Download Presentation

Sistemas distribuídos

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 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

  3. 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

  4. 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

  5. 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

  6. 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

  7. 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

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

  9. 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

  10. 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

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

  12. 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

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

  14. 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

  15. 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

  16. 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

  17. 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

  18. 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 ) { } } }

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

  20. 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 ) { } } }

  21. 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)

  22. PROGRAMAÇÃO: INCA X

  23. PROGRAMAÇÃO: INCA X

More Related