Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação CAPES Implementação de um espaço de tuplas do tipo JavaSpaces Orlando de Andrade Figueiredo Orientação: Prof. Dr. Dilvan de Abreu Moreira São Carlos, 6 de dezembro de 2002 Tópicos • Objetivos • JavaSpaces enquanto espaço de tuplas • JavaSpaces enquanto serviço Jini • JuspSpaces • Resultados • Conclusões Aplicações Distribuídas • Apoio para o desenvolvimento de aplicações distribuídas – Modelos de programação com alto nível de abstração – Ferramentas (Middleware) Espaços de tuplas • Função: coordenação, sincronização e comunicação entre processos espalhados sobre sistemas distribuídos Espaços de tuplas • Vantagens: – Simplicidade • Poucos conceitos e operações – Baixo acoplamento – Persistência Espaços de tuplas em Java • JavaSpaces – Sun – Serviço Jini – Implementações: • • • • Outrigger (Sun) GigaSpaces Autevo RDBSpaces • T Spaces – IBM • etc. Problemas • Implementações de JavaSpaces requerem o setup completo de Jini • Licenças proprietárias – JavaSpaces: SCSL – IBM – Outrigger requer tecnologia proprietária para persistência Objetivos • Desenvolver uma nova implementação de JavaSpaces – Com o setup simplificado • Jini • RMI – Construída com tecnologias abertas • Persistência – Protótipo distribuído segundo a GNU-GPL Tópicos • Objetivos • JavaSpaces enquanto espaço de tuplas • JavaSpaces enquanto serviço Jini • JuspSpaces • Resultados • Conclusões Tuplas • Em JavaSpaces, – Tuplas (entries) são objetos – Campos são objetos “Tarefa” 4572307 Espaço de tuplas • Modelo de memória • Operações – Escrita – Leitura • Unidade básica é a tupla “Tarefa” 97577 “Tarefa” 46783 “Resultado” 37 “Tarefa” 13332453 Operação de escrita • Write(entry, ###, ###) Operações de leitura • Take(gabarito, ### , ###) • Gabarito – Tupla usada na operação de leitura – Pode ter campos “coringas” (null) • Regras para compatibilidade entre gabarito e tupla – Classe da tupla = classe do gabarito – Campo “não coringa” do gabarito = campo da tupla – Campo “coringa” do gabarito = qualquer valor na tupla “Resultado” null “Tarefa” 97577 “Tarefa” 46783 “Resultado” 37 “Tarefa” 13332453 Operações de leitura • Na operação take, – A tupla é removida – Se não houver tupla compatível, o processo bloqueia • Memória associativa – Recuperação de informação com base em conteúdo – Vantagem: dispensa endereçamento global, algo difícil em sistemas distribuídos Aplicação • Programação paralela • Modelo mestre-operários • Mestre – Despacha tarefas – Recolhe resultados • Operário – Procura tarefas – Espera, se não houver – Encontrando, resolve e retorna o resultado Aplicação • O mestre desconhece quem e quantos são os operários • Operários podem ser adicionados ou removidos à vontade Tópicos • Objetivos • JavaSpaces enquanto espaço de tuplas • JavaSpaces enquanto serviço Jini • JuspSpaces • Resultados • Conclusões Jini • Na mídia: Sistemas distribuídos “plug-and-play” • Mais amplo: conjunto de modelos e protocolos Clientes e Serviços • Jini é cliente-servidor – A idéia de serviço é chave em Jini • Jini é chamada remota a procedimento – Proxy representa o serviço junto ao cliente – Não faz menção ao protocolo que deve ser usado entre proxy e serviço – O proxy deve ser obtido por download, sempre Serviço de Lookup • Forma padrão de se obter proxies – Outros meios podem ser usados • Para encontrar o serviço de lookup – Protocolo de descoberta – Na prática, um broadcasting – Desvantagem: restringe o tipo de rede • JuspSpace – Dispensa o servidor de lookup Leasing • O cliente especifica por quanto tempo quer o serviço • O servidor retorna um objeto Lease com o qual o cliente pode consultar, renovar ou cancelar o leasing • Exemplo – Write(entry, ###, 1000) Transações • Mecanismo de confiabilidade muito adotado em sistemas distribuídos • Protocolo de commit em duas fases distribuído • A presença de transações modifica a semântica da operações – Exemplo: A operação take pode retirar • Tuplas escritas na mesma transação • Tuplas escritas sem transação • Tuplas não removidas por outras transações Tópicos • Objetivos • JavaSpaces enquanto espaço de tuplas • JavaSpaces enquanto serviço Jini • JuspSpaces – Bancos de dados relacionais – Hashing – Sockets • Resultados • Conclusões Bancos de dados relacionais • Persistência de informações – Tuplas – Transações • Recuperação de informação • Controle de concorrência Mapeamento EntriesTabelas • Aspectos relevantes – Hierarquia – Metadados • Leasing • Transação – Gabaritos id time id type lease wtxn ttxn time expiration txn ongofield number rid ongodata obj1 rtxn ob Hashing dos campos • Calcular uma chave para cada campo da tupla no cliente • Usar essa chave no protocolo de comunicação • Algoritmo – Serialização – MD5 Comunicação clienteservidor • A imensa maioria dos serviços Jini usa o RMI para implementar o modelo de proxies • JuspSpaces usa sockets • Arquitetura – Proxy • Possui endereço do serviço (máquina e porta) – Handler • Thread que atende às requisições no servidor Tópicos • Objetivos • JavaSpaces enquanto espaço de tuplas • JavaSpaces enquanto serviço Jini • JuspSpaces • Resultados • Conclusões Teste de Desempenho • Repetir n vezes o procedimento – Escrever uma entry simples (Write) – Ler a entry (read) – Remover a entry (take) Número de operações JuspSpaces Persitent Outrigger Transient Outrigger 50 35 15 7 200 142 29 28 Aplicação • XML Server – Usa JavaSpaces como mecanismo de persistência – Originalmente baseado no Outrigger – Não utiliza transações – A migração foi fácil Tópicos • Objetivos • JavaSpaces enquanto espaço de tuplas • JavaSpaces enquanto serviço Jini • JuspSpaces • Resultados • Conclusões Contribuições • Primeira implementação JavaSpaces que dispensa o servidor de Lookup • Estudo de caso para a implementação de JavaSpaces sobre bases de dados relacionais • Protótipo sob a licença GNU-GPL Trabalhos futuros • Implementação do protocolo de acesso ao proxy • Revisão formal do controle de concorrência • Emprego de JuspSpaces em outras aplicações Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação CAPES