1 / 30

Objetos Distribuídos

Objetos Distribuídos. Nazareno Andrade. O Problema. Orientação a objetos é um paradigma poderoso Modularidade, extensibilidade, manutenibilidade Porque distribuir os objetos: Localidade dos objetos Tolerância a falhas Performance Como estender o modelo OO para sistemas distribuídos?

Download Presentation

Objetos 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. Objetos Distribuídos Nazareno Andrade

  2. O Problema • Orientação a objetos é um paradigma poderoso • Modularidade, extensibilidade, manutenibilidade • Porque distribuir os objetos: • Localidade dos objetos • Tolerância a falhas • Performance • Como estender o modelo OO para sistemas distribuídos? • Referências, invocações de métodos, erros, ...

  3. local C remote E local invocation invocation remote invocation invocation F B local A invocation D O Modelo • Um Objeto Remoto é aquele que pode receber uma invocação remota (RMI) • Referências remotas • Interfaces remotas

  4. Referências e Interfaces Remotas • Referências remotas • Identificador único para um objeto no sistema distribuído • Transparência de localidade para o cliente • Interfaces remotas • Definem os métodos de um objeto que podem receber invocações remotas • Linguagem de definição de interface (IDL) C Interface remota m1 m2 m1 A m2 m3 L

  5. Semântica de Invocações remotas • Invocações locais são executadas exatamente uma vez • Isso não é possível em Objetos Distribuídos • Falhas • Outras semânticas: talvez, pelo menos uma vez, no máximo uma vez

  6. Mais sobre semânticas

  7. Mais sobre semânticas

  8. RMI e transparência • 100% de transparência é impossível • Falhas de comunicação • RMIs possuem exceções intrínsecas • Transparência pode não ser desejada • Explorar diferentes semânticas • Cancelamento de requisições

  9. Um exemplo: Quadro negro distribuído • Clientes compartilham um quadro negro • Todos podem adicionar e modificar figuras • Todos se mantém atualizados via polling • DrawingBoard, Shape e GraphicalObject createShape, getAllShapes DrBd Cliente shape shape getState, setState

  10. Tecnologias • Java RMI • Java apenas • Integração com a linguagem • .Net remoting • Solução proprietária da Microsoft • Integrada com a linguagem • CORBA • Independente de linguagem • Diferentes implementações

  11. Exemplo: Java RMI import java.rmi.*; public interface DrawingBoard extends Remote { Shape createShape(GraphicalObject g) throws RemoteException; List getAllShapes() throws RemoteException; } public interface Shape extends Remote { GraphicalObjectgetState() throws RemoteException; void setState(GraphicalObject g) throws RemoteException } public class DrawingBoardServer extends UnicastRemoteObject implements DrawingBoard {...}

  12. Exemplo: CORBA interface DrawingBoard { Shape createShape(in GraphicalObject g); All getAllShapes(); } Typedef sequence<Shape, 100> All; interface Shape { GraphicalObjectgetState(); void setState(in GraphicalObject g) } struct GraphicalObject { ... }

  13. getAllShapes Ref remota para shape GraphicalObject setState referência remota cópia serializada Serialização x Referência Remota • Objetos não-remotos são passados por cópia • Objetos remotos têm uma referência remota passada DrBd Cliente shape

  14. Até agora... • Porque Objetos Distribuídos • Conceitos Básicos • Tecnologia • Exemplo • Arquitetura de um sistema de Objetos Distribuídos • Limitações e alternativas • Conclusões

  15. B Reply Request • Implementa o protocolo de reply response • Skeleton: • Implementa métodos da interface remota • Desserializa requests e serializa replys • Implementa interface remota • Torna o RMI transparente • Serializa requests e desserializa replys Proxy p/ B • Dispatcher: • Recebe msgs do módulo de comunicação e invoca o skeleton apropriado • Cria referências remotas e locais envolvidas no RMI Arquitetura de um Sistema de Objetos Distribuídos cliente servidor Skeleton e Dispatcher da classe de B C S Módulo de Ref. remota Módulo de comunicação Módulo de comunicação Módulo de Ref. remota

  16. lookup bind Proxy Binder Binder • Objetos precisam descobrir referências remotas • O binder mapeia nomes para referências remotas • bind(), rebind(), unbind() • O binder precisa rodar em um nome bem conhecido • CORBA Naming Service e RMIregistry C DrBd

  17. Um exemplo funcional, cliente public class Client { public void main(String args[]){ DrawingBoard db = null; try{ // o servidor se registrou com WELLKNOWN_NAME db = (DrawingBoard) Naming.lookup(WELLKNOWN_NAME); }catch(Exception e){ // Esta exceção pode ser Remote, Malformed ou // NotBoundException System.err.println(“Could not lookup server. Reason: ” + e.getMessage()); System.exit(1); } … //continua

  18. Exemplo funcional, cliente … // ainda dentro do main() try{ List allShapes = db.getAllShapes(); Iterator it = allShapes.iterator(); while(it.hasNext()){ Shape s = (Shape) it.next(); display(s.getState()); } }catch(RemoteException e){ System.err.println(“comm. error:” + e.getMessage()); }} // main } // class

  19. public class DrawingBoardServer { public static void main(String args[]){ System.setSecurityManager(new RMISecurityManager()); try{ DrawingBoard db = new DrawingBoard(); Naming.rebind(“Drawing Board XPTO", db); System.out.println(“DB server ready"); }catch(Exception e) { ... } } }

  20. public class DrawingBoardImpl extends UnicastRemoteObject implements DrawingBoard{ private List<Shape> theList; public Shape newShape(GraphicalObject g) throws RemoteException{ version++; Shape s = new ShapeImpl(g); theList.addElement(s); return s; } public Vector getAllShapes()throws RemoteException{ return theList; } }

  21. public class GraphicalObject implements Serializable{ … }

  22. Mais questões práticas • E se queremos adicionar novas classes que implementam Shape no sistema? • Como os objetos não-remotos são passados? • E se queremos adicionar novas classes que extendem GraphicalObject? • De onde os clientes obterão o código? • E se o código não for em apenas uma linguagem?

  23. Outras questões • Garbage collection distribuído • Coordenação entre cliente e servidor, detecção de falhas • Uma alternativa são leases • Threads no servidor • Multithreading precisa ser tratado pelo programador • Activation service • Redução do custo de manter serviços rodando

  24. Limitações de Objetos Distribuídos • Invocações de métodos são síncronas • Escalabilidade • Conexão intermitente • Componentes são fortemente acoplados • Extensibilidade • Alternativas: • RMI assíncrono (conexão intermitente) • Sistemas baseados em eventos (escalabilidade, extensibilidade) • Arquiteturas orientadas a serviços (todos os pontos)

  25. RMI assíncrono • A partir de CORBA 2.3 • Implementado no lado cliente • Callback • Cliente informa objeto que receberá resposta • Polling • Cliente recebe um handle para requisitar resposta mais tarde

  26. RMI vs. Mensagens • RMI é uma boa idéia para um cliente-servidor simples? • E em um sistema de transferência de arquivos? • E em um sistema onde posso ter milhões de clientes? • E quando quero desempenho? • E quando quero desenvolver rápido?

  27. Sumário • Objetos distribuídos oferecem abstrações poderosas para o programador • Transparência total é impossível • Falhas • O programador pode ou deve lidar com outros serviços • Ex.: descoberta e ativação • Limitações do paradigma e alternativas

  28. Para mais • Sobre objetos distribuídos • Distributed Systems Concepts and Design, Coulouris, Dollimore e Kindberg • Estudos de caso com Java RMI e Corba • Mais sobre Sistemas baseados em eventos • Objetos Distribuídos x Serviços • Web Services are not Distributed Objects, Vogel, IEEE Computing ou no blog dele • .Net Remoting • .Net Remoting, Strawmyer (http://www.developer.com/net/cplus/article.php/1479761)

  29. Exemplo .Net Remoting: 1 using System; using System.Runtime.Remoting; using System.Runtime.Remoting.Channels; using System.Runtime.Remoting.Channels.Tcp; namespace CodeGuru.Remoting { public class SampleObject : MarshalByRefObject{ public SampleObject() { } public string HelloWorld() { return "Hello World!"; } } }

  30. Exemplo .Net Remoting: 2 public class SampleServer { public static int Main(string [] args) { TcpChannel channel = new TcpChannel(8080); ChannelServices.RegisterChannel(channel); RemotingConfiguration.RegisterWellKnownServiceType( typeof(SampleObject), "HelloWorld", WellKnownObjectMode.SingleCall ); System.Console.WriteLine("Press the enter key to exit..."); System.Console.ReadLine(); return 0; } }

More Related