Chamada Remota de Procedimento (RPC) cont…noemi/sd-09/aula5.pdf · RPC e multithreading (cliente)...
Transcript of Chamada Remota de Procedimento (RPC) cont…noemi/sd-09/aula5.pdf · RPC e multithreading (cliente)...
![Page 1: Chamada Remota de Procedimento (RPC) cont…noemi/sd-09/aula5.pdf · RPC e multithreading (cliente) • combinação de RPC com multithreading – sobreposição de computação e](https://reader034.fdocumentos.com/reader034/viewer/2022051511/601956dfaadb3201e13d193a/html5/thumbnails/1.jpg)
Chamada Remota de Procedimento (RPC) cont…
![Page 2: Chamada Remota de Procedimento (RPC) cont…noemi/sd-09/aula5.pdf · RPC e multithreading (cliente) • combinação de RPC com multithreading – sobreposição de computação e](https://reader034.fdocumentos.com/reader034/viewer/2022051511/601956dfaadb3201e13d193a/html5/thumbnails/2.jpg)
semântica de chamadas
• pelo menos uma vez • no máximo uma vez • exatamente uma vez
• relação com protocolo subjacente • falhas e reinicializações de servidores
– funções idempotentes
![Page 3: Chamada Remota de Procedimento (RPC) cont…noemi/sd-09/aula5.pdf · RPC e multithreading (cliente) • combinação de RPC com multithreading – sobreposição de computação e](https://reader034.fdocumentos.com/reader034/viewer/2022051511/601956dfaadb3201e13d193a/html5/thumbnails/3.jpg)
binding
• amarração entre cliente e servidor reedita problema de localização de destinatário – solução portmapper no Sun RPC
• em geral: chamada a servidor que detém: – nome – localização (IP, porta) – estado
• e se… – nenhum servidor for localizado – vários servidores forem localizados
![Page 4: Chamada Remota de Procedimento (RPC) cont…noemi/sd-09/aula5.pdf · RPC e multithreading (cliente) • combinação de RPC com multithreading – sobreposição de computação e](https://reader034.fdocumentos.com/reader034/viewer/2022051511/601956dfaadb3201e13d193a/html5/thumbnails/4.jpg)
críticas
• sincronismo • modelo um a um • dificuldades de tratamento de falhas
• dinamismo
![Page 5: Chamada Remota de Procedimento (RPC) cont…noemi/sd-09/aula5.pdf · RPC e multithreading (cliente) • combinação de RPC com multithreading – sobreposição de computação e](https://reader034.fdocumentos.com/reader034/viewer/2022051511/601956dfaadb3201e13d193a/html5/thumbnails/5.jpg)
sincronismo
• processo que faz a chamada permanece bloqueado – falta de interatividade local – desperdício de uso da CPU
• processamento • outras operações de comunicação
![Page 6: Chamada Remota de Procedimento (RPC) cont…noemi/sd-09/aula5.pdf · RPC e multithreading (cliente) • combinação de RPC com multithreading – sobreposição de computação e](https://reader034.fdocumentos.com/reader034/viewer/2022051511/601956dfaadb3201e13d193a/html5/thumbnails/6.jpg)
RPC e multithreading (cliente)
• combinação de RPC com multithreading – sobreposição de computação
e comunicação – disparo de várias chamadas
• trocas de contexto preemptivas – custo – necessidade de sincronização
A1 B A2 C
![Page 7: Chamada Remota de Procedimento (RPC) cont…noemi/sd-09/aula5.pdf · RPC e multithreading (cliente) • combinação de RPC com multithreading – sobreposição de computação e](https://reader034.fdocumentos.com/reader034/viewer/2022051511/601956dfaadb3201e13d193a/html5/thumbnails/7.jpg)
alternativas
• cliente pode disparar threads apenas no momento de fazer chamadas remotas
• uso de mecanismos como co-rotinas • chamadas assíncronas
![Page 8: Chamada Remota de Procedimento (RPC) cont…noemi/sd-09/aula5.pdf · RPC e multithreading (cliente) • combinação de RPC com multithreading – sobreposição de computação e](https://reader034.fdocumentos.com/reader034/viewer/2022051511/601956dfaadb3201e13d193a/html5/thumbnails/8.jpg)
tratamento de chamadas
• concorrência no servidor B S A
como tratar???
![Page 9: Chamada Remota de Procedimento (RPC) cont…noemi/sd-09/aula5.pdf · RPC e multithreading (cliente) • combinação de RPC com multithreading – sobreposição de computação e](https://reader034.fdocumentos.com/reader034/viewer/2022051511/601956dfaadb3201e13d193a/html5/thumbnails/9.jpg)
concorrência no servidor
• opções análogas às vistas para servidores em geral
![Page 10: Chamada Remota de Procedimento (RPC) cont…noemi/sd-09/aula5.pdf · RPC e multithreading (cliente) • combinação de RPC com multithreading – sobreposição de computação e](https://reader034.fdocumentos.com/reader034/viewer/2022051511/601956dfaadb3201e13d193a/html5/thumbnails/10.jpg)
RPC assíncrona
• controle retorna imediatamente foo(a,b);
• mas como tratar retorno? – não tratar (funções oneway) – handler para sincronização posterior (futuros) – chamadas com callbacks
![Page 11: Chamada Remota de Procedimento (RPC) cont…noemi/sd-09/aula5.pdf · RPC e multithreading (cliente) • combinação de RPC com multithreading – sobreposição de computação e](https://reader034.fdocumentos.com/reader034/viewer/2022051511/601956dfaadb3201e13d193a/html5/thumbnails/11.jpg)
futuros
• promessas, chamadas adiadas, ... • chamada retorna valor que pode ser usado
para sincronização ou consulta: fut = foo (a, b) ...
if rpc.isReady(fut) ... ou ... rpc.waitFor(fut)
![Page 12: Chamada Remota de Procedimento (RPC) cont…noemi/sd-09/aula5.pdf · RPC e multithreading (cliente) • combinação de RPC com multithreading – sobreposição de computação e](https://reader034.fdocumentos.com/reader034/viewer/2022051511/601956dfaadb3201e13d193a/html5/thumbnails/12.jpg)
futuros
• implementações em muitas linguagens/bibs • ex:
% declaration - this is a comment statement objtype = promise returns (type) signals (...) % stream call operation objtype$operation_name(x, ...) % claim operation y: type = objtype$claim(x)
B. Liskov and Shrira, "Promises: Linguistic Support for Efficient Asynchronous Procedure Calls in Distributed Systems", in Proc. of the SIGPLAN'88 Conference on Programming Language Design and Implementation, Atlanta, Georgia, June 22-24, 1988, pp. 260-267.
![Page 13: Chamada Remota de Procedimento (RPC) cont…noemi/sd-09/aula5.pdf · RPC e multithreading (cliente) • combinação de RPC com multithreading – sobreposição de computação e](https://reader034.fdocumentos.com/reader034/viewer/2022051511/601956dfaadb3201e13d193a/html5/thumbnails/13.jpg)
RPC assíncrona - callbacks
• função de callback pode ser chamada qdo chamada se completa – aderência ao modelo de programação
function funcb(v) globalVal = v end obtemNovoVal(args, funcb);
![Page 14: Chamada Remota de Procedimento (RPC) cont…noemi/sd-09/aula5.pdf · RPC e multithreading (cliente) • combinação de RPC com multithreading – sobreposição de computação e](https://reader034.fdocumentos.com/reader034/viewer/2022051511/601956dfaadb3201e13d193a/html5/thumbnails/14.jpg)
programa como máquina de estado
function collect(val) acc = acc + val repl = repl + 1 if (repl==expected) then print ("Current Value: ", acc/repl) end end function askvals (peers) repl = 0; expected = 0; acc = 0 for p in pairs (peers) do expected = expected + 1 p:currValue{callback=collect} end end
![Page 15: Chamada Remota de Procedimento (RPC) cont…noemi/sd-09/aula5.pdf · RPC e multithreading (cliente) • combinação de RPC com multithreading – sobreposição de computação e](https://reader034.fdocumentos.com/reader034/viewer/2022051511/601956dfaadb3201e13d193a/html5/thumbnails/15.jpg)
problema de perda de locais
![Page 16: Chamada Remota de Procedimento (RPC) cont…noemi/sd-09/aula5.pdf · RPC e multithreading (cliente) • combinação de RPC com multithreading – sobreposição de computação e](https://reader034.fdocumentos.com/reader034/viewer/2022051511/601956dfaadb3201e13d193a/html5/thumbnails/16.jpg)
exemplo luarpc
function request(peers) local acc, repl = 0, 0 local expected = table.getn(peers) function avrg (val) repl = repl+1 acc = acc + val if (repl==expected) then print ("Current Value: ", acc/repl) end end for _,p in ipairs (peers) do rpc.async(p, "currValue", avrg)() end end
CLOSURE
![Page 17: Chamada Remota de Procedimento (RPC) cont…noemi/sd-09/aula5.pdf · RPC e multithreading (cliente) • combinação de RPC com multithreading – sobreposição de computação e](https://reader034.fdocumentos.com/reader034/viewer/2022051511/601956dfaadb3201e13d193a/html5/thumbnails/17.jpg)
comunicação um a um
• como pensar em canais ou mailboxes onde processos espalhados por várias máquinas podem recolher chamadas?
• no caso de tolerância a falhas: às vezes desejável que os diversos processos recebam a mesma chamada – replicação – comunicação em grupo
![Page 18: Chamada Remota de Procedimento (RPC) cont…noemi/sd-09/aula5.pdf · RPC e multithreading (cliente) • combinação de RPC com multithreading – sobreposição de computação e](https://reader034.fdocumentos.com/reader034/viewer/2022051511/601956dfaadb3201e13d193a/html5/thumbnails/18.jpg)
tratamento de falhas
• como retornar informações sobre falhas no modelo de chamada remota? – callbacks – exceções
![Page 19: Chamada Remota de Procedimento (RPC) cont…noemi/sd-09/aula5.pdf · RPC e multithreading (cliente) • combinação de RPC com multithreading – sobreposição de computação e](https://reader034.fdocumentos.com/reader034/viewer/2022051511/601956dfaadb3201e13d193a/html5/thumbnails/19.jpg)
dinamismo…
• modelo apresentado exige conhecimento sobre interfaces antes da geração do programa cliente – geração estática de stubs – suficiente para maior parte das situações
• adaptação dinâmica – servidores com diferentes otimizações
• cache – otimização dependendo do estilo de uso do cliente
• chamada dentro de loop – descoberta dinâmica de servidores
• relação com serviços de binding mais complexos
![Page 20: Chamada Remota de Procedimento (RPC) cont…noemi/sd-09/aula5.pdf · RPC e multithreading (cliente) • combinação de RPC com multithreading – sobreposição de computação e](https://reader034.fdocumentos.com/reader034/viewer/2022051511/601956dfaadb3201e13d193a/html5/thumbnails/20.jpg)
objetos distribuídos
• invocação remota de métodos – objetos como unidades localizadas, argumentos, etc – algumas facilidades para lidar com críticas anteriores
or1.mx
processo servidor
or2.my
o.main()
ol1.ma ()
ol1.mb () ol2.mn ()
ol2.mm ()
processo cliente
or1.mx(ol2) or1.mz
servant
callbacks ou upcalls
![Page 21: Chamada Remota de Procedimento (RPC) cont…noemi/sd-09/aula5.pdf · RPC e multithreading (cliente) • combinação de RPC com multithreading – sobreposição de computação e](https://reader034.fdocumentos.com/reader034/viewer/2022051511/601956dfaadb3201e13d193a/html5/thumbnails/21.jpg)
sistemas de objetos distribuídos
• sistemas acadêmicos – Emerald, ORCA, …
• sistemas largamente difundidos
– CORBA - interoperabilidade – Java RMI - integração com linguagem
• JINI • J2EE
![Page 22: Chamada Remota de Procedimento (RPC) cont…noemi/sd-09/aula5.pdf · RPC e multithreading (cliente) • combinação de RPC com multithreading – sobreposição de computação e](https://reader034.fdocumentos.com/reader034/viewer/2022051511/601956dfaadb3201e13d193a/html5/thumbnails/22.jpg)
RMI
• utilização de características da linguagem • carga dinâmica (download) de stubs e de
implementações de argumentos – interfaces x classes
• interface Remote define propriedades comuns a todos os objetos remotos – usada nas declarações do cliente – exceção RemoteException
• classe UnicastRemoteObject implementa funcionalidade básica de objeto remoto – estendida pela implementação do objeto servidor
![Page 23: Chamada Remota de Procedimento (RPC) cont…noemi/sd-09/aula5.pdf · RPC e multithreading (cliente) • combinação de RPC com multithreading – sobreposição de computação e](https://reader034.fdocumentos.com/reader034/viewer/2022051511/601956dfaadb3201e13d193a/html5/thumbnails/23.jpg)
Java RMI
• stub implementa “falsa” chamada a método remoto – empacota argumentos, realiza chamada, e retorna
resultados
Stub
RMI Client RMI Server
skeleton
return
call
![Page 24: Chamada Remota de Procedimento (RPC) cont…noemi/sd-09/aula5.pdf · RPC e multithreading (cliente) • combinação de RPC com multithreading – sobreposição de computação e](https://reader034.fdocumentos.com/reader034/viewer/2022051511/601956dfaadb3201e13d193a/html5/thumbnails/24.jpg)
arquitetura RMI
RMI Server
skeleton
stub
RMI Client
Registry
bind
lookupreturn call
Local Machine
Remote Machine
• servidor se registra em registry
• cliente contacta registry com lookup
• cliente pode baixar código de stub dinamicamente!
Localização: Product p = (Product) Naming.lookup(“rmi://fulano.com//sicrano”);
![Page 25: Chamada Remota de Procedimento (RPC) cont…noemi/sd-09/aula5.pdf · RPC e multithreading (cliente) • combinação de RPC com multithreading – sobreposição de computação e](https://reader034.fdocumentos.com/reader034/viewer/2022051511/601956dfaadb3201e13d193a/html5/thumbnails/25.jpg)
servidor RMI
/* SampleServer.java */ import java.rmi.*; public interface SampleServer extends Remote { public int sum(int a,int b) throws RemoteException; }
/* SampleServerImpl.java */ ... public class SampleServerImpl extends
UnicastRemoteObject implements SampleServer { SampleServerImpl() throws RemoteException { super(); }
![Page 26: Chamada Remota de Procedimento (RPC) cont…noemi/sd-09/aula5.pdf · RPC e multithreading (cliente) • combinação de RPC com multithreading – sobreposição de computação e](https://reader034.fdocumentos.com/reader034/viewer/2022051511/601956dfaadb3201e13d193a/html5/thumbnails/26.jpg)
cliente RMI
package client; import java.rmi.registry.LocateRegistry; import java.rmi.registry.Registry; ... public class ComputePi { public static void main(String args[]) { if (System.getSecurityManager() == null) { System.setSecurityManager(new SecurityManager()); } try { String name = "Compute"; Registry registry = LocateRegistry.getRegistry(args[0]); Compute comp = (Compute) registry.lookup(name); Pi task = new Pi(Integer.parseInt(args[1])); BigDecimal pi = comp.executeTask(task); System.out.println(pi); } catch (Exception e) { System.err.println("ComputePi exception:"); e.printStackTrace(); } } }
![Page 27: Chamada Remota de Procedimento (RPC) cont…noemi/sd-09/aula5.pdf · RPC e multithreading (cliente) • combinação de RPC com multithreading – sobreposição de computação e](https://reader034.fdocumentos.com/reader034/viewer/2022051511/601956dfaadb3201e13d193a/html5/thumbnails/27.jpg)
propostas de extensão
• ProActive: extensões para paralelismo – sincronismo inerente a chamadas remotas
bloqueio
– ausência de operações coletivas – outras críticas:
• obrigações com extensão de classe Remota e com sinalização de exceções
• !!!!
![Page 28: Chamada Remota de Procedimento (RPC) cont…noemi/sd-09/aula5.pdf · RPC e multithreading (cliente) • combinação de RPC com multithreading – sobreposição de computação e](https://reader034.fdocumentos.com/reader034/viewer/2022051511/601956dfaadb3201e13d193a/html5/thumbnails/28.jpg)
ProActive
• exploração de modelo de programação assíncrono – transparência de localização de objetos – futuros e wait on necesssity
• comunicação coletiva – extensão de chamada de método
• alocação de objetos em nós remotos • integração com bibliotecas para grades
Baude F., Baduel L., Caromel D., Contes A., Huet F., Morel M. and Quilici R.,in "GRID COMPUTING: Software Environments and Tools”, Springer Verlag, January 2006.
![Page 29: Chamada Remota de Procedimento (RPC) cont…noemi/sd-09/aula5.pdf · RPC e multithreading (cliente) • combinação de RPC com multithreading – sobreposição de computação e](https://reader034.fdocumentos.com/reader034/viewer/2022051511/601956dfaadb3201e13d193a/html5/thumbnails/29.jpg)
Java//
• biblioteca para programação multithread e distribuída • uso de reflexão computacional para interceptar
chamadas
![Page 30: Chamada Remota de Procedimento (RPC) cont…noemi/sd-09/aula5.pdf · RPC e multithreading (cliente) • combinação de RPC com multithreading – sobreposição de computação e](https://reader034.fdocumentos.com/reader034/viewer/2022051511/601956dfaadb3201e13d193a/html5/thumbnails/30.jpg)
sincronização inter objetos
• objetos ativos modelam concorrência e distribuição
• chamadas a objetos ativos são sempre assíncronas
• chamada retorna imediatamente um valor futuro – instância de subclasse do retorno declarado – tem todos os métodos do retorno esperado
• quando algum método é chamado sobre esse valor retornado é que ocorre a sincronização – wait-by-necessity
![Page 31: Chamada Remota de Procedimento (RPC) cont…noemi/sd-09/aula5.pdf · RPC e multithreading (cliente) • combinação de RPC com multithreading – sobreposição de computação e](https://reader034.fdocumentos.com/reader034/viewer/2022051511/601956dfaadb3201e13d193a/html5/thumbnails/31.jpg)
futuros
![Page 32: Chamada Remota de Procedimento (RPC) cont…noemi/sd-09/aula5.pdf · RPC e multithreading (cliente) • combinação de RPC com multithreading – sobreposição de computação e](https://reader034.fdocumentos.com/reader034/viewer/2022051511/601956dfaadb3201e13d193a/html5/thumbnails/32.jpg)
futuros como obj de 1a classe
• objetos retornados por operações assíncronas podem ser passados como argumentos em novas operações
• otimização da transferência de dados v1 = a.foo (...); // chamada assíncrona v2 = a.bar(...); // chamada assíncrona ... v1.f(v2)
![Page 33: Chamada Remota de Procedimento (RPC) cont…noemi/sd-09/aula5.pdf · RPC e multithreading (cliente) • combinação de RPC com multithreading – sobreposição de computação e](https://reader034.fdocumentos.com/reader034/viewer/2022051511/601956dfaadb3201e13d193a/html5/thumbnails/33.jpg)
CORBA
• mais do que o modelo de chamadas remotas – middleware
⇒ material introdutório do curso de componentes