permite que os
objetos sejam
instanciados num
ambiente distribuído
Distribuição: o sistema executa numa rede de
computadores independentes e heterogêneos
Transparência: o sistema esconde o ambiente
distribuído e outros detalhes desnecessários ao
usuário
Por exemplo, um sistema pode prover a
característica de transparência de localização e
com isto o usuário não precisa se preocupar com a
localização física de um objeto para fazer uma
invocação.
ntegridade dos dados: o sistema assegura a
integridade do objeto sempre que uma
invocação é executada
Tolerância a falhas: a falha de um computador ou
um objeto representa apenas uma falha parcial do
sistema, a perda é restrita ao computador ou ao
objeto. O restante do sistema continua
processando.
Disponibilidade: o sistema assegura a disponibilidade
dos objetos, independente de falhas nos computadores.
"Recuperabilidade”: se um computador falhar, o
sistema recupera automaticamente os objetos
persistentes residentes neste computador.
Autonomia dos objetos: o sistema permite ao
criador do objeto especificar os clientes
autorizados a operar sobre ele
Concorrência no processamento: o sistema
permite que objetos de um programa possam ser
atribuídos a múltiplos processadores para que
eles possam ser executados "concorrentemente”
Concorrência nos objetos: um objeto servidor pode
atender a múltiplas invocações de clientes
"concorrentemente”
Gerenciamento
Objetos
Gerenciamento de transações
Annotations:
tem a função de gerenciar transações onde uma transação é uma coleção de operações que executa uma única função lógica numa aplicação.
“Serialização”: transações
concorrentes são escalonadas de forma
a serem executadas seqüencialmente
em alguma ordem
Atomicidade: uma transação é completada
de forma total ou é abortada.
Persistência: os efeitos de uma transação completada,
com sucesso, nunca são perdidos, exceto quando
houver uma falha catastrófica.
Sincronização: tem a função de garantir que
atividades de múltiplas transações, invocando o
mesmo objeto não conflitem ou interfiram entre si
Segurança de acesso: tem a função de atribuir diferentes níveis
de segurança aos usuários para operar sobre diferentes
conjuntos de objetos
Confiabilidade de objetos: tem a função de num
sistema detectar e recuperar objetos.
recuperar a falha ocorrida
num objeto o mais rápido
possível
replicar os objetos em vários
computadores e utilizar a cópia
disponível
Invocaçãpo de objetos cooperantes
localizar um determinado objeto
prover a propriedade de transparência de
localização que possibilita a um cliente
invocar um objeto sem conhecer a sua
localização
manipular as interações entre os objetos
quando um cliente faz uma invocação
sobre um objeto, o sistema é
responsável por executar os passos
necessários para entregar o pedido
para o objeto servidor especificado e
retornar o resultado para ao cliente
detectar falhas de invocação
detectar falhas de hardware ou software que
ocorram antes de uma invocação ser iniciada
ou durante a execução de uma invocação
recursos físicos da rede
armazenamento em memória/disco
Annotations:
armazenar apenas uma única versão de cada objeto, assim, todas as requisições que invocam um objeto modificam a mesma versão ou armazenar múltiplas versões de cada objeto, desta forma, toda requisição invocando um objeto é atribuída a uma das versões na qual a modificação é executada. Isto possibilita que múltiplas requisições sejam invocadas sobre o mesmo objeto simultaneamente assegurando a não interferência delas entre si
balanceamento de carga
Annotations:
o principal objetivo do balanceamento de carga é maximizar a taxa de resposta do sistema. Isto pode ser obtido de duas formas: primeiramente, os objetos podem ser atribuídos a processadores que estão mais ociosos para que eles trabalhem “concorrentemente” ou objetos que interajam freqüentemente possam ser atribuídos ao mesmo processador ou a processadores próximos para reduzir o custo de comunicação entre eles
Objetos Distribuidos
características
propósito de um objeto distribuído é executar um
conjunto de funções relacionadas entre si que
atendam a múltiplos clientes remotos
visão do cliente de um objeto distribuído é uma
interface, definindo somente o comportamento (a
funcionalidade) que o cliente pode esperar de um
determinado objeto distribuído
Desempenho: o custo da invocação de um
objeto distribuído, isto é, de um pedido de
execução de um dos seus métodos, é medido em
milissegundos, assim, para um objeto distribuído
não se pode ignorar o custo da invocação de
métodos na determinação do desempenho,
devendo este custo ser cuidadosamente
considerado na análise do desempenho geral de
um sistema
Complexidade: objetos distribuídos são
usualmente complexos, mas essa complexidade
é invisível ao cliente
Número: sistemas baseados em objetos
distribuídos tipicamente são compostos por
um número pequeno de interfaces e um
número pequeno de objetos distribuídos
Localização: objetos distribuídos geralmente
não estão localizados no mesmo espaço de
endereçamento dos seus clientes
Concorrência: objetos distribuídos são
utilizados por um grande número de clientes
necessitando, com isto, o gerenciamento de
problemas de concorrência muito complexos
Dificuldades/Soluções
Dificuldades
Como essas aplicações devem ser implementadas.
Como esses sistemas irão se comunicar.
Como manter as informações num estado consistente
Como situar serviços de forma a satisfazer as
necessidades dos usuários
Como manter a segurança de acesso
Como as falhas podem ser resolvidas
Como gerenciar a evolução dos sistemas
Serviços
Objetos de uma aplicação possam residir em qualquer lugar da rede
Serviços de persistência possam armazenar e recuperar objetos
eficientemente.
Serviços de pesquisa possam localizar objetos
apropriadamente onde quer que eles residam.
Serviços de segurança possam restringir o acesso a
objetos sensíveis
Serviços de concorrência possam prover isolamento de ações
entre usuários
Serviços de transações possam coordenar atualizações
em múltiplos objetos