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

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

Objetos Distribuídos Nazareno Andrade.

Apresentações semelhantes


Apresentação em tema: "Objetos Distribuídos Nazareno Andrade."— 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, ... Porque distribuir Localização dos componentes Tolerância a falhas Performance Porque OO Abstrações poderosas para o programador Facilita extensão e manutenção Sistemas OO são naturalmente segmentados

3 O Modelo invocation remote local A B C D E F Um Objeto Remoto é aquele que pode receber uma invocação remota (RMI) Referências remotas Interfaces remotas Começar com exemplo do quadro negro distribuído aqui. O terceiro processo é de persistência. * Não é só jogar os objetos pra lá e pra cá. É preciso projetar como objetos distribuídos e não simplesmente orientado a objetos.

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 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 --- Sim Re-execução do método 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 Sim Re-execução do método No mínimo uma vez 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 createShape, getAllShapes DrBd Cliente shape shape getState, setState

10 Tecnologias Java RMI .Net remoting CORBA 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<Shape, 100> 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 getAllShapes Ref remota para shape DrBd Cliente GraphicalObject setState cópia serializada shape referência remota

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 Arquitetura de um Sistema de Objetos Distribuídos
cliente servidor Skeleton e Dispatcher da classe de B Proxy p/ B B Request C S Reply Skeleton: Implementa métodos da interface remota Desserializa requests e serializa replys Implementa interface remota Torna o RMI transparente Serializa requests e desserializa replys Dispatcher: Recebe msgs do módulo de comunicação e invoca o skeleton apropriado Implementa o protocolo de reply response Cria referências remotas e locais envolvidas no RMI Módulo de Ref. remota Módulo de comunicação Módulo de comunicação Módulo de Ref. remota Primeiro A recebe como resultado de algum método (que vamos ignorar), uma referência remota pra B. Pq Skeleton E dispatcher??

16 Binder Objetos precisam descobrir referências remotas
Nome Ref DrawingBd refToDrBd Object2 redToObj2 Nome Ref Object2 refToObj2 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 lookup bind C Proxy 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 Threads no servidor
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 Objetos Distribuídos x Serviços
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.RegisterWellKnownServiceType( 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."

Apresentações semelhantes


Anúncios Google