Adaptação Dinâmicaem Sistemas Distribuídos
Software Adaptativo
Software adaptativo é aquele que é capaz de mudar o seu comportamento em tempo de execução.
Esta característica possui inúmeros benefícios potenciais como a habilidade de responder rapidamente a ameaças de segurança ou a
possibilidade de otimizações de desempenho em resposta a variações no ambiente de execução.
Software adaptativo é aquele que é capaz de mudar o seu comportamento em tempo de execução.
Esta característica possui inúmeros benefícios potenciais como a habilidade de responder rapidamente a ameaças de segurança ou a
possibilidade de otimizações de desempenho em resposta a variações no ambiente de execução.
Reconfiguração de Rede
❑ Em ambientes de computação móvel, o dispositivo deve ser transparentemente reconfigurado à medida que ele atravessa diferentes ambientes de rede e utiliza diversas interfaces heterogêneas.
❑ Dispositivos podem ser dinamicamente inseridos no dispositivo sem a necessidade de desligá-lo.
Adapatação de Protocolos de Rede
❑ Tecnologias como Ethernet, redes locais sem fio, modems celulares , CDPD e canais de satélite possuem direntes características.
❑ Dado que um usuário móvel encontra diferentes tecnologias de rede, faz-se necessário que protocolos de rede adaptem-se a diferentes condições na operação das conexões de rede.
Adaptando Aplicações para Lidar com Variações de Rede
❑ Variações na largura de banda, latência e taxa de erros de transmissão são comuns em ambientes de computação móvel e na própria Internet.
❑ Aplicações devem levar em consideração estas variações através da alteração de seu comportamento.
Lidando com Variações no Cliente
❑ Hardware de dispositivos são cada vez mais variáveis com relação a diversas propriedades como tamanho da tela e resolução, memória, poder de processamento, etc...
❑ Isto também é verdade com relação ao software, incluindo o tipo de codificação de dados suportado (JPEG, PostScript, etc...)
❑ Servidores devem suportar estas variações.
Lidando com Variações de Serviços e Recursos
❑ Um aspecto importante da computação móvel é que os serviços e recursos disponíveis a um usuário variam à medida que o mesmo se desloca
❑ Exemplos: guia de turismo, localizador de serviços de hoteis, restaurantes, etc...
❑ Exemplos: conferência / sala de aula
Suporte à Mobilidade de Usuários
❑ A mobilidade dos usuários pode levar a grandes variações no ambiente de execução de aplicações.
Aplicações de Tempo Real
❑ Software adaptativo é também empregado em aplicações como suporte a missões não tripuladas, onde o ambiente está em constante mudança e problemas ou situações atípicas devem ser contornadas.
Muitas Abordagens...
❑ A partir do final dos anos 90, muita pesquisa tem sido dedicada ao software adaptativo:
❑ PMI (Physical Media Independence)❑ Protocol Adaptation❑ Active Proxies❑ Odyssey❑ Conductor❑ MOCA❑ Karamcheti ❑ Outros...
MOCAIBM T. J. Watson
❑ É um framework que lida com a descoberta dinâmica de serviços e recursos.
❑ É voltada para dispositivos portáteis e pequenos, com pouca memória.
❑ Para facilitar sua portabilidade, foi desenvolvido em Java.
❑ Seu núcleo possui apenas 50KB.
Serviços❑ É um componente de software que encapsula
uma funcionalidade específica e que disponibiliza uma interface bem definida.
❑ Exemplos: encriptação de dados, cache local de arquivos, serviço de impressão, etc...
❑ Uma aplicação é um programa Java que pode dinamicamente requisitar serviços e invocar os métodos constantes de sua interface.
❑ Serviços e aplicações podem ser locais ao dispositivo ou serem dinamicamente carregados.
Arquitetura MOCA
Registry: Funções
❑ Repositório de serviços, mantendo um mapeamento entre descrições de serviço e suas implementações.
❑ Encapsula a política de gerenciamento de ciclo de vida de serviços, provendo suporte ao registro, atualização e de-registro de serviços.
Registro e Bind de Serviços
❑ Para registrar um serviço, deve-se prover ao Registry:
❑ Nome da interface❑ Nome da implementação❑ URL que indica a localização da implementação
❑ Serviços pode ser registrados sem que sejam carregados para o dispositivo.
❑ Para obter uma referencia a um serviço, a aplicação deve pelo menos fornecer o nome da interface.
Serviços Especiais
❑ São implementados como uma extensão da JVM.❑ Cache de arquivos: gerencia um ropositório de
classes Java associadas a todos os serviços e aplicações carregadas para o dispositivo.
❑ Serviço de carga de arquivos: chamado quando um serviço não for encontrado na cache local.
❑ Gerente de ciclo de vida: cria, suspende e destroi aplicações. Cada aplicação possui seu proprio carregador de classes, provendo um espaço de nomes privado.
Serviços Opcionais
❑ Broadcaster: periodicamente realiza um broadcast dos serviços disponibilizados pelo dispositivos.
❑ Listener: recebe o broadcast de anúncios de serviços remotos.
❑ Logging: realiza um log de erros que ocorram no dispositivo.
Aquisição de Serviços
❑ Um serviço é composto de:❑ Interface: uma único arquivo .class❑ Implementação: 1..n arquivos .class
❑ A aquisição é feita em duas etapas:❑ Carga do arquivo contendo a interface, realizada
através de repositórios conhecidos (IR)❑ Carga dos arquivos contendo a implementação,
realizada através da URL provida no registro do serviço.
Exemplo de Aquisição de Serviço
Descoberta Dinâmica de Serviços
Active Proxies
❑ Voltado para aplicações de acesso a dados na Internet.
❑ Objetiva lidar com:❑ Variações de rede: largura de banda, latênica e taxa de
erros❑ Variações de hardware dos clientes: tamanho e
resolução da tela, memória e poder de processamento❑ Variações dos tipos de codificações de dados
suporados pelo cliente (JPEG, PostScript, etc...)
Princípios de Projeto
❑ Adaptação baseada na transformação dos dados. Mecanismos de compressão dependentes do tipo de dado sendo transmitido;
❑ Adaptação no momento da solicitação;❑ Complexidade fora do cliente e servidor, através
da utilização de um proxy intermediário.
Compressão de Acordo com o Tipo de Dado
Destilação e Refinamento
❑ Destilação: processo de compressão que visa preservar o máximo do conteúdo semântico do dado sendo transmitido
❑ Refinamento: processo de busca de uma porte (ou eventualmente todo) de um objeto em uma qualidade superior, possivelmente na qualidade original.
Arquitetura
Arquitetura Escalável
Framework para Adaptação Dinâmica de Aplicações
DistribuídasCandidato: Francisco Silva
Orientadores: Markus Endler Fábio Kon
Abordagem
Definição de um modelo a partir do qual pretendemos desenvolver um framework que
será utilizado para instrumentar uma aplicação distribuída com os mecanismos
necessários para torná-la adaptável dinamicamente.
Modelo SIDAM
SIDAM: Requisitos de Projeto
❑ As aplicações devem ser capazes de se adaptar a variações de carga, padrões de requisição e a diversos cenários de disponibilidade de recursos;
❑ As aplicações devem prover uma alta disponibilidade de seus dados e serviços e, sempre que possível, garantir uma baixa latência de acesso;
❑ Apesar da base de dados global estar distribuída em várias máquinas, esta distribuição e localização física de qualquer dado específico deve permanecer transparente ao cliente.
Adaptação Dinâmica na Aplicação de Referêcia do SIDAM
❑ Separação e agregação de IS - sobrecarca do IS;❑ Replicação de IS - requisições a um IS
"distante";❑ Variação no formato do resultado de consultas -
variação na largura de banda disponível para a comunicação com o cliente;
❑ Migração de IS - sobrecarga de DS;❑ Realocação e pré-alocação de recursos -
mudança de célula de usuários especiais.
Requisitos para o Modelo de Adaptação Dinâmica
❑ Deve dar suporte a uma aplicação composta por diversos componentes executando em diversos nós de um ambiente distribuído;
❑ Deve permitir a monitoração de recursos do ambiente e a interação entre os objetos que compõem a aplicação;
❑ Assim como o próprio projeto SIDAM, deve ser genérico o suficiente para poder ser utilizado em um grande espectro de aplicações.
Requisitos para o Modelo de Adaptação Dinâmica
❑ Deve dar suporte à reconfiguração dinâmica dos componentes que compõem a aplicação;
❑ Esta reconfiguração deve ocorrer de forma segura.
Modelo para Adatação Dinâmica
Monitoração: Interação entre Objetos
❑ Utilização de interceptadores (padrão CORBA);
❑ Armazenamento dos dados em logs;
❑ Necessidade de re-configuração em tempo de execução.
Monitoração de Recursos
❑ Parâmetros de monitoração:➔ Percentual de uso da UCP;➔ Memória real e virtual disponível;➔ Largura de banda disponível;
❑ Flexibilidade:parâmetros específicos de uma aplicação. Por exemplo, #threads abertas por um IS;
❑ OMR - Objetos de Monitoração de Recursos.
Modelo para Adatação Dinâmica
Detecção de Eventos
❑ Tipos de eventos:❑ Eventos de log❑ Eventos de Recursos
❑ Requisitos Desejáveis:❑ Extensibilidade de tipos de eventos detectáveis;❑ Re-configuração Dinâmica;❑ Gerenciável;
Detecção de Eventos
❑ Definição de eventos complexos a partir da combinação de outros eventos => EPS
❑ Serviço de Notificação da ocorrência de eventos aos objetos interessados => EPS / Serviço de Eventos / Notificação de CORBA
Modelo para Adatação Dinâmica
Reconfiguração Dinâmica
❑ Tomada de decisão - determina as ações necessárias para adaptar a aplicação face a ocorrência de eventos;
❑ Re-configurador dinâmico - aplica as ações de re-configuração;
❑ Gerenciamento de dependências => Automatic Configuration Service e Component Configurator [Kon]