A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Objetos Distribuídos Nazareno Andrade. O Problema  Orientação a objetos é um paradigma poderoso Modularidade, extensibilidade, manutenibilidade  Porque.

Apresentações semelhantes


Apresentação em tema: "Objetos Distribuídos Nazareno Andrade. O Problema  Orientação a objetos é um paradigma poderoso Modularidade, extensibilidade, manutenibilidade  Porque."— Transcrição da apresentação:

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 O Modelo  Um Objeto Remoto é aquele que pode receber uma invocação remota (RMI) Referências remotas Interfaces remotas invocation remote invocation remote local invocation A B C D E F

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) m2 m1 m2 m1 m3 Interface remota A C 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 Mecanismo de tolerância a falhas Semântica Retransmissão de request Filtro de duplicatas Re-execução do método ou retransmissão do reply Não --- SimNão Re-execução do método Sim Retransmissão do reply

7 Mais sobre semânticas Mecanismo de tolerância a falhas Semântica Retransmissão de request Filtro de duplicatas Re-execução do método ou retransmissão do reply Não --- Talvez SimNão Re-execução do método No mínimo uma vez Sim Retransmissão do reply No máximo uma vez

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 DrBd shape Cliente getState, setState createShape, getAllShapes

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 { GraphicalObject getState() 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 All; interface Shape { GraphicalObject getState(); void setState(in GraphicalObject g) } struct GraphicalObject {... }

13 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 shape Cliente DrBd getAllShapes referência remota GraphicalObject setState cópia serializada Ref remota para 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 Request Reply clienteservidor C S Módulo de comunicação Módulo de comunicação Módulo de Ref. remota Módulo de Ref. remota Skeleton e Dispatcher da classe de B Arquitetura de um Sistema de Objetos Distribuídos Proxy p/ B B Implementa o protocolo de reply response Skeleton: Implementa métodos da interface remota Desserializa requests e serializa replys Dispatcher: Recebe msgs do módulo de comunicação e invoca o skeleton apropriado Cria referências remotas e locais envolvidas no RMI Implementa interface remota Torna o RMI transparente Serializa requests e desserializa replys

16 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 Binder C DrBd bind lookup Proxy NomeRef Object2refToObj2 NomeRef DrawingBdrefToDrBd Object2redToObj2

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 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/ )

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.RegisterWellKnownSer viceType( typeof(SampleObject), "HelloWorld", WellKnownObjectMode.SingleCall ); System.Console.WriteLine("Press the enter key to exit..."); System.Console.ReadLine(); return 0; }


Carregar ppt "Objetos Distribuídos Nazareno Andrade. O Problema  Orientação a objetos é um paradigma poderoso Modularidade, extensibilidade, manutenibilidade  Porque."

Apresentações semelhantes


Anúncios Google