Shob Logo Última Atualização: 8 de dezembro de 2002 18:34 BRST

Arquitetura interna

Uma aplicação acessa objetos compartilhados através de referências. Uma referência é usada da mesma forma que o objeto inicial, isto é, chamando métodos. De modo geral, os métodos que uma referência possui são os mesmos que a interface usada para criá-la possui.

Durante uma chamada de método, a referência encarrega-se de chamar o método correspondente na cópia local. Quando o estado da cópia muda, o SharedSpace precisa replicar a alteração em todos as outras referências ao objeto - nesta e nas outras máquinas.

Como garantir que apenas uma alteração é executada de cada vez? SharedObjects utiliza-se de um mecanismo de replicação que prevê a existência de um objeto original, isto é, uma versão do objeto que é considerada válida o tempo todo e cujo estado deve ser replicado para cada aplicação.

Um objeto compartilhado passa a pertencer ao Global Space.
Aplicações acessam o objeto através de suas cópias.
O objeto original fica oculto e não deve mais ser acessado.
Um objeto e suas cópias

Por simplicidade, assumiremos por enquanto que um sistema distribuído utiliza apenas um Global Space. Além disso, o sistema roda com uma JVM em cada máquina, e cada JVM utiliza um único SharedSpace para se comunicar ao espaço global. Desta forma, termos como "dono" podem ser aplicados tanto a uma máquina quanto a um SharedSpace.

Quando um objeto é compartilhado pela primeira vez, a aplicação perde o controle daquele objeto e ele passa a pertencer ao Global Space. No tutorial, temos o seguinte trecho de código:

 17:        //cria uma Offer
 18:        Offer offer = new OfferImpl("potato", 10.0, null);
 19:
 20:        //compartilha a Offer
 21:        shob.share("offer1", offer, "auction.core.OfferReference");

Neste momento, a instância de SharedSpace shob passa a controlar a versão original do objeto e por isso é chamada dono do objeto. A aplicação, embora rode na mesma máquina, tem os mesmos direitos sobre ele que uma aplicação remota.

Como isso é feito? Cada instância de SharedSpace tem um conjunto de objetos próprios, dos quais ela é dona. Além disso, ela tem um conjunto de cópias de todos os objetos que foram requisitados a ela, a que chamamos cache. Operações chamadas nas referências são executadas sempre nas cópias do cache, mesmo que a SharedSpace seja a dona do objeto em questão.

Referências possuem os mesmos métodos do objeto original
Objetos no cache podem pertencer ao mesmo host ou a um outro host, sua localização é transparente para a aplicação
A instância de SharedSpace encarrega-se de manter as cópias no cache atualizadas
Leituras simultâneas são permitidas
Escritas são feitas uma de cada vez
A referência deve "saber" quais métodos são de escrita e quais são apenas leitura
Identify process
Visão Aprofundada