1.41k likes | 1.58k Views
Paradigmas de Computação Distribuída. Computação na Rede: - Cliente/Servidor, - Software de Código Móvel. Paradigma Cliente/Servidor. Server. Know- how. Client. Paradigma Cliente/Servidor.
E N D
Paradigmas de Computação Distribuída Computação na Rede: - Cliente/Servidor, - Software de Código Móvel.
Paradigma Cliente/Servidor Server Know- how Client
Paradigma Cliente/Servidor • O servidor anuncia um conjunto de serviços que ele provê acesso para alguns recursos (por exemplo, banco de dados). • O código que executa esses serviços é hospedado localmente pelo servidor. • O servidor detém o know-how.
Paradigma Cliente/Servidor • O próprio servidor processa o serviço e assim, tem a capacidade do processador. • Se o cliente está interessado em acessar um recurso hospedado pelo servidor, o cliente usa um ou mais dos serviços providos pelo servidor.
Paradigma Cliente/Servidor • O cliente necessita decidir qual dos serviços ele deve usar. • O servidor tem: o know-how, os recursos e o processador. • A maioria das aplicações distribuídas e dos sistemas distribuídos são baseados neste paradigma.
Paradigmas Cliente/Servidor Cliente/Servidor com Processos Cliente/Servidor com Objetos Distribuídos ( CORBA, DCOM, RMI, ...) - Cliente/Servidor com Objetos para Web (RPC/XML, SOAP/XML)
Paradigma do Software de Código Móvel - Código Sob-Demanda - Agentes Móveis
Paradigma do Código Sob-Demanda Server Download Know- how Client Know- how
Paradigma do Código Sob-Demanda • Primeiro obtém-se o know-how quando necessita-se. Supõe-se que um cliente é incapaz para executar sua tarefa por causa da falta de código (know-how). • Um host na rede provê o código necessário. • A computação é executada no cliente.
Paradigma do Código Sob-Demanda • O cliente utiliza a capacidade do processador, bem com os recursos locais. • O cliente não necessita o código pre-instalado, porque todo o código necessário será “donwloaded”. • O cliente tem os recursos e o processador e o host tem o know-how.
Paradigma do Código Sob-Demanda • Applets em Java são “donwloaded” in Web browsers e executam localmente. • Servlets são “uploaded” para servidores Web remotos e executam lá.
Agente de Software • Perspectiva do usuário final: Agentes são definidos como programas que assistem pessoas e agem em nome delas. Pessoas delegam trabalho a eles (agentes).
Agente de Software • Podem ser encontrados em sistemas operacionais, bases de dados, redes, ... • Agentes podem ser construídos em diferentes tipos e operam em muitos cenários e configurações.
Agente de Software • Quais propriedades esses programas compartilham, e que constituem a essência de ser um agente ?
Agente de Software • O fato que eles são hospedados em um ambiente. • Habilidade para interagirem com seu ambiente de execução e agirem assincronamente e autonomamente sobre ele.
Agente de Software • Nenhum ambiente é requerido entregar informação ao agente ou consumir quaisquer que seja sua saída. • Agentes, simplesmente, agem continuamente no sentido de realização de suas tarefas.
Agente de Software • Em contraste aos objetos (estáticos) da programação orientada a objeto, agentes são entidades ativas que trabalham de acordo com o seguinte princípio: “Não nos chame, nós chamaremos você!”
Agente de Software • Perspectiva de sistema Um agente é um programa que está situado dentro de algum ambiente de execução.
Agente de Software • Possui as seguintes propriedades obrigatórias: - reativa: sente mudanças no ambiente e age de acordo a essas mudanças. - autônomo: tem controle sobre suas próprias ações. - dirigido à meta: é pro-ativo. - continuidade temporal: está continuamente executando.
Agente de Software • Possui qualquer das seguintes propriedades ortogonais: - comunicativo: capaz de se comunicar com os outros agentes. - móvel: pode migrar de um host a outro. - adaptativo: aprende de acordo com a experiência prévia. - acreditável: o usuário pode acreditar no que ele realiza.
Agente de Software • Agente Estacionário Um agente estacionário executa somente sobre o sistema onde ele começa sua execução. • Se ele necessita informação que não está sobre aquele sistema, ele necessita interagir com um agente em um outro diferente sistema, ele tipicamente usa um mecanismo de comunicação tal como uma chamada remota de procedimento (RPC).
Agente de Software • Agente Móvel Em contraste, um agente móvel não está limitado ao sistema onde ele começa a sua execução. • Ele é livre para viajar entre hosts na rede. Criado em um ambiente de execução, ele pode transportar seu estado e código com ele, para um outro ambiente de execução na rede, onde ele retoma sua execução.
Agente de Software • Estado: os valores dos atributos do agente que auxiliam a ele determinar o que fazer quando ele retoma a execução em seu destino. • Código: em um contexto orientado a objeto, o código da classe necessário para o agente executar.
Agente de Software • Agente Móvel Um agente móvel pode ser movido para um sistema que contém um objeto, com o qual o agente deseja interagir e assim ter a vantagem de estar no mesmo host como o objeto.
Paradigma dos Agentes Móveis Agent Agent Kow- how Know- how Host Host
Paradigma dos Agentes Móveis • Know-how (na forma de agentes móveis) não está amarrado a um único host, mas ao contrário está disponível através da rede.
Sete Boas Razões para se usar Agentes Móveis • Reduzem a carga na rede. • Sobrepujam a latência da rede. • Encapsulam protocolos. • Executam assincronamente e autonomamente. • Adaptam-se dinamicamente. • Naturalmente heterogêneos. • Robustos e tolerantes a falhas.
Reduzem carga na rede • Sistemas distribuídos, frequentemente, confiam em protocolos de comunicação que envolvem múltiplas operações para se conseguir uma dada tarefa. • Isto é, especialmente verdade quando medidas de segurança são habilitadas. O resultado é o crescimento do tráfego de rede.
Reduzem carga na rede • Agentes móveis permitem o empacotamento da conversação e o despacho deles para um host de destino, onde as interações podem tomar lugar localmente. • Eles são também úteis quando são usados para reduzir o fluxo de dados na rede.
Reduzem carga na rede • Quando grandes volumes de dados são armazenados em hosts remotos, estes dados devem se processados na localidade dos dados, ao contrário do que transferidos sobre a rede. • O lema é simples: mover as computações aos dados, ao contrário do que mover dados às computações.
Reduzem a carga na rede Application Service RPC-Based Approach
Reduzem carga na rede Host A Host B Service Application Mobile Agent-Based Approach
Sobrepujam latência • Sistemas críticos de tempo real, tais como robots em processos de manufatura, necessitam responder em tempo real a mudanças em seus ambientes. Controlar tais sistemas em uma rede de fábrica de um substancial tamanho envolve latências significativas.
Sobrepujam latência • Para sistemas críticos de tempo real, tais latências não são aceitáveis. • Agentes móveis oferecem uma solução, porque eles podem ser despachados de um controlador central e agir localmente, e diretamente executar as funções do controlador.
Encapsulam Protocolos • Quando dados são trocados em um sistema distribuído, cada host contém o código que implementa o protocolo, para adequadamente, codificar dados para serem transmitidos e decodificar dados que são recebidos.
Encapsulam Protocolos • Contudo, quando protocolos precisam acomodar novos requisitos para melhorar sua eficiência ou segurança, é uma tarefa muito trabalhosa, senão impossível, fazer o “upgrade” adequado para o código do protocolo.
Encapsulam Protocolos • Como resultado, protocolos, frequentemente, tornam-se legados, e agentes móveis, por outro lado, podem mover-se para hosts remotos para estabelecer “canais” baseados sobre protocolos.
Executam assincronamente e autonomamente • Frequentemente, dispositivos móveis devem confiar em conexões de rede frágeis ou caras. Tarefas que requerem conexão aberta continuamente entre um dispositivo móvel e uma rede fixa, não será tecnicamente e economicamente viável.
Executam assincronamente e autonomamente • Para resolver este problema, tarefas podem ser embutidas dentro de agentes móveis, os quais podem então ser despachados na rede.
Executam assincronamente e autonomamente • Após, serem despachados, os agentes móveis tornam-se independentes do processo que os criou e podem operar assincronamente e autonomamente. O dispositivo móvel pode reconectar-se em um tempo posterior para coletar o agente.
Application Service Send Agent Mobile Agent and Operation Disconnected Application Service Disconnect Application Service Reconnect and Return
Se adaptam dinamicamente ... • Agentes móveis têm a habilidade para sentir seu ambiente de execução e reagir autonomamente a mudanças. • Múltiplos agentes móveis podem possuir a única habilidade para se distribuirem eles próprios entre os hosts na rede, assim como manter a configuração para resolver um problema particular.
Naturalmente heterogêneos • A computação em rede é fundamentalmente heterogênea, da perspectiva do hardware e do software. • Porque agentes móveis são geralmente independentes da camada de transporte e do computador e são dependentes sobre seu ambiente de execução, eles proporcionam condições ótimas para integração de sistemas.
Robustos e Tolerantes a Falhas • A habilidade para agentes móveis reagirem dinamicamente a eventos e situações desfavoráveis, fazem ele mais fácil para construir sistemas distribuídos robustos e tolerantes a falhas.
Robustos e Tolerantes a Falhas • Se um host está sendo desligado, todos os agentes executando sobre aquela máquina serão advertidos e dado tempo para despachá-los e continuarem suas operações sobre outro host na rede.
Domínios de Aplicação Áreas onde agentes móveis são utilizados.
Domínios de Aplicação • Alguns domínios para os quais a mobilidade de código pode trazer os maiores benefícios: - Recuperação de Informação - Documentos Ativos - Serviços Avançados de telecomunicações - Controle de dispositivos remotos - Gerência de Fluxos de trabalho - Redes Ativas - Comércio Eletrônico - Gerência de Rede
Recuperação de Informação • Agrupamento de informações satisfazendo determinados critérios a partir de fontes de informação dispersas através das redes. • Contribuição da mobilidade de código: - Maior eficiência através da migração do processo de busca para locais próximos às fontes de informação. - Freqüentemente considerada a aplicação, para motivar o uso do padrão AM.
Documentos Ativos • Dados passivos estendidos com a capacidade de executar programas relacionados ao seu conteúdo. • Contribuição da mobilidade do código: - Encapsulamento de código e estado dentro de documentos, e suporte para extração e execução dos mesmos no lado do cliente (padrão CsD). - Aplicação tipica: uso de formulários gráficos para compor e submeter consultas a um BD remoto. - Tecnologia típica: WWW, Java, ...