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 ObjetivosObjetivos JavaSpaces enquanto espaço de tuplasJavaSpaces enquanto espaço de tuplas JavaSpaces enquanto serviço JiniJavaSpaces enquanto serviço Jini JuspSpacesJuspSpaces ResultadosResultados ConclusõesConclusões
Aplicações Distribuídas Apoio para o desenvolvimento de aplicações distribuídasApoio 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ídosFunção: coordenação, sincronização e comunicação entre processos espalhados sobre sistemas distribuídos
Espaços de tuplas Vantagens:Vantagens: –Simplicidade Poucos conceitos e operaçõesPoucos conceitos e operações –Baixo acoplamento –Persistência
Espaços de tuplas em Java JavaSpacesJavaSpaces –Sun –Serviço Jini –Implementações: Outrigger (Sun)Outrigger (Sun) GigaSpacesGigaSpaces AutevoAutevo RDBSpacesRDBSpaces T SpacesT Spaces –IBM etc.etc.
Problemas Implementações de JavaSpaces requerem o setup completo de JiniImplementações de JavaSpaces requerem o setup completo de Jini Licenças proprietáriasLicenças proprietárias –JavaSpaces: SCSL –IBM –Outrigger requer tecnologia proprietária para persistência
Objetivos Desenvolver uma nova implementação de JavaSpacesDesenvolver uma nova implementação de JavaSpaces –Com o setup simplificado JiniJini RMIRMI –Construída com tecnologias abertas PersistênciaPersistência –Protótipo distribuído segundo a GNU-GPL
Tópicos ObjetivosObjetivos JavaSpaces enquanto espaço de tuplasJavaSpaces enquanto espaço de tuplas JavaSpaces enquanto serviço JiniJavaSpaces enquanto serviço Jini JuspSpacesJuspSpaces ResultadosResultados ConclusõesConclusões
Tuplas Em JavaSpaces,Em JavaSpaces, –Tuplas (entries) são objetos –Campos são objetos Tarefa
Tarefa String Integer SimpleEntry descriptor seed Tarefa Representação simplificada
Espaço de tuplas Modelo de memóriaModelo de memória OperaçõesOperações –Escrita –Leitura Unidade básica é a tuplaUnidade básica é a tupla
Tarefa Tarefa Tarefa Resultado 37
Operação de escrita Write(entry, ###, ###)Write(entry, ###, ###)
Operações de leitura Take(gabarito, ###, ###)Take(gabarito, ###, ###) GabaritoGabarito –Tupla usada na operação de leitura –Pode ter campos coringas (null) Regras para compatibilidade entre gabarito e tuplaRegras 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
Tarefa Tarefa Tarefa Resultado 37 Resultado null
Operações de leitura Na operação take,Na operação take, –A tupla é removida –Se não houver tupla compatível, o processo bloqueia Memória associativaMemó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 paralelaProgramação paralela Modelo mestre-operáriosModelo mestre-operários MestreMestre –Despacha tarefas –Recolhe resultados OperárioOperário –Procura tarefas –Espera, se não houver –Encontrando, resolve e retorna o resultado
Tarefa Tarefa Resultado 37 Resultado null Tarefa null
Aplicação O mestre desconhece quem e quantos são os operáriosO mestre desconhece quem e quantos são os operários Operários podem ser adicionados ou removidos à vontadeOperários podem ser adicionados ou removidos à vontade
Tópicos ObjetivosObjetivos JavaSpaces enquanto espaço de tuplasJavaSpaces enquanto espaço de tuplas JavaSpaces enquanto serviço JiniJavaSpaces enquanto serviço Jini JuspSpacesJuspSpaces ResultadosResultados ConclusõesConclusões
Jini Na mídia: Sistemas distribuídos plug-and-playNa mídia: Sistemas distribuídos plug-and-play Mais amplo: conjunto de modelos e protocolosMais amplo: conjunto de modelos e protocolos
Clientes e Serviços Jini é cliente-servidorJini é cliente-servidor –A idéia de serviço é chave em Jini Jini é chamada remota a procedimentoJini é 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 proxiesForma padrão de se obter proxies –Outros meios podem ser usados Para encontrar o serviço de lookupPara encontrar o serviço de lookup –Protocolo de descoberta –Na prática, um broadcasting –Desvantagem: restringe o tipo de rede JuspSpaceJuspSpace –Dispensa o servidor de lookup
Leasing O cliente especifica por quanto tempo quer o serviçoO 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 leasingO servidor retorna um objeto Lease com o qual o cliente pode consultar, renovar ou cancelar o leasing ExemploExemplo –Write(entry, ###, 1000)
Transações Mecanismo de confiabilidade muito adotado em sistemas distribuídosMecanismo de confiabilidade muito adotado em sistemas distribuídos Protocolo de commit em duas fases distribuídoProtocolo de commit em duas fases distribuído A presença de transações modifica a semântica da operaçõesA presença de transações modifica a semântica da operações –Exemplo: A operação take pode retirar Tuplas escritas na mesma transaçãoTuplas escritas na mesma transação Tuplas escritas sem transaçãoTuplas escritas sem transação Tuplas não removidas por outras transaçõesTuplas não removidas por outras transações
Tópicos ObjetivosObjetivos JavaSpaces enquanto espaço de tuplasJavaSpaces enquanto espaço de tuplas JavaSpaces enquanto serviço JiniJavaSpaces enquanto serviço Jini JuspSpacesJuspSpaces –Bancos de dados relacionais –Hashing –Sockets ResultadosResultados ConclusõesConclusões
Bancos de dados relacionais Persistência de informaçõesPersistência de informações –Tuplas –Transações Recuperação de informaçãoRecuperação de informação Controle de concorrênciaControle de concorrência
Mapeamento Entries- Tabelas Aspectos relevantesAspectos relevantes –Hierarquia –Metadados LeasingLeasing TransaçãoTransação –Gabaritos
Hashing dos campos Calcular uma chave para cada campo da tupla no clienteCalcular uma chave para cada campo da tupla no cliente Usar essa chave no protocolo de comunicaçãoUsar essa chave no protocolo de comunicação AlgoritmoAlgoritmo –Serialização –MD5
Comunicação cliente- servidor A imensa maioria dos serviços Jini usa o RMI para implementar o modelo de proxiesA imensa maioria dos serviços Jini usa o RMI para implementar o modelo de proxies JuspSpaces usa socketsJuspSpaces usa sockets ArquiteturaArquitetura –Proxy Possui endereço do serviço (máquina e porta)Possui endereço do serviço (máquina e porta) –Handler Thread que atende às requisições no servidorThread que atende às requisições no servidor
Tópicos ObjetivosObjetivos JavaSpaces enquanto espaço de tuplasJavaSpaces enquanto espaço de tuplas JavaSpaces enquanto serviço JiniJavaSpaces enquanto serviço Jini JuspSpacesJuspSpaces ResultadosResultados ConclusõesConclusões
Teste de Desempenho Repetir n vezes o procedimentoRepetir n vezes o procedimento –Escrever uma entry simples (Write) –Ler a entry (read) –Remover a entry (take)
Aplicação XML ServerXML 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 ObjetivosObjetivos JavaSpaces enquanto espaço de tuplasJavaSpaces enquanto espaço de tuplas JavaSpaces enquanto serviço JiniJavaSpaces enquanto serviço Jini JuspSpacesJuspSpaces ResultadosResultados ConclusõesConclusões
Contribuições Primeira implementação JavaSpaces que dispensa o servidor de LookupPrimeira implementação JavaSpaces que dispensa o servidor de Lookup Estudo de caso para a implementação de JavaSpaces sobre bases de dados relacionaisEstudo de caso para a implementação de JavaSpaces sobre bases de dados relacionais Protótipo sob a licença GNU-GPLProtótipo sob a licença GNU-GPL
Trabalhos futuros Implementação do protocolo de acesso ao proxyImplementação do protocolo de acesso ao proxy Revisão formal do controle de concorrênciaRevisão formal do controle de concorrência Emprego de JuspSpaces em outras aplicaçõesEmprego de JuspSpaces em outras aplicações
Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação CAPES