11.04.2013 Views

gestão de dados partilhados em ambientes de computação móvel

gestão de dados partilhados em ambientes de computação móvel

gestão de dados partilhados em ambientes de computação móvel

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

6.2. SERVIDORES 91<br />

6.2.3 Serviço <strong>de</strong> <strong>de</strong>scoberta e diss<strong>em</strong>inação <strong>de</strong> eventos<br />

Os servidores do sist<strong>em</strong>a DOORS estão interligados através do sist<strong>em</strong>a <strong>de</strong> diss<strong>em</strong>inação <strong>de</strong> eventos<br />

Deeds [45]. O sist<strong>em</strong>a Deeds fornece um serviço <strong>de</strong> diss<strong>em</strong>inação <strong>de</strong> eventos baseado <strong>em</strong> canais. Os<br />

clientes do serviço po<strong>de</strong>m criar novos canais, subscrever canais já existentes e enviar eventos para um<br />

canal. Um evento enviado para um canal é propagado para os clientes que subscrev<strong>em</strong> o canal. As<br />

garantias <strong>de</strong> entrega <strong>de</strong> um evento a um cliente <strong>de</strong> um canal <strong>de</strong>pen<strong>de</strong>m da s<strong>em</strong>ântica do canal.<br />

Todos os servidores do sist<strong>em</strong>a DOORS subscrev<strong>em</strong> um canal <strong>de</strong> diss<strong>em</strong>inação <strong>de</strong> eventos usado<br />

para <strong>de</strong>scobrir quais os servidores que replicam um dado volume. Este canal <strong>de</strong> diss<strong>em</strong>inação propaga<br />

os eventos para todos os servidores com a s<strong>em</strong>ântica <strong>de</strong> propagação “melhor esforço”. Quando um<br />

cliente necessita <strong>de</strong> conhecer um servidor que replica um volume até ao momento <strong>de</strong>sconhecido, o cliente<br />

submete um evento <strong>de</strong> <strong>de</strong>scoberta neste canal.<br />

Para cada volume é criado um canal <strong>de</strong> diss<strong>em</strong>inação usado para propagar <strong>de</strong> forma expedita as<br />

novas operações submetidas no âmbito <strong>de</strong> um volume, como se <strong>de</strong>talha no apêndice A.2.5. Quando uma<br />

operação é recebida e i<strong>de</strong>ntificada num servidor, ela é imediatamente propagada para os outros servidores<br />

através <strong>de</strong>ste canal <strong>de</strong> diss<strong>em</strong>inação. Este canal usa uma s<strong>em</strong>ântica <strong>de</strong> propagação "melhor esforço", pelo<br />

que não garante a entrega da operação a todos os servidores que subscrev<strong>em</strong> o canal. A subscrição do<br />

canal por parte <strong>de</strong> um servidor que replica um volume é opcional — a sincronização epidémica, <strong>de</strong>scrita<br />

na secção 6.2.2, é o mecanismo base que garante a sincronização das várias réplicas.<br />

6.2.4 Interacção com os clientes<br />

Os servidores fornec<strong>em</strong> uma interface aos clientes que permite administrar o servidor e ace<strong>de</strong>r aos co-<br />

objectos — ver figura 6.2. As operações <strong>de</strong> administração do servidor permit<strong>em</strong> criar novos volumes e<br />

iniciar/terminar a replicação <strong>de</strong> um volume num dado servidor. A execução <strong>de</strong>stas operações leva à exe-<br />

cução dos protocolos <strong>de</strong>scritos na secção 6.2.1. Adicionalmente, é possível forçar a execução <strong>de</strong> sessões<br />

<strong>de</strong> sincronização (completas ou parciais) entre dois servidores (relativas a um dado volume). A execução<br />

<strong>de</strong>stas operações leva à execução dos protocolos <strong>de</strong>scritos na secção 6.2.2.<br />

As operações <strong>de</strong>finidas para manipular coobjectos permit<strong>em</strong> aos clientes ace<strong>de</strong>r ao estado actual dos<br />

coobjectos e submeter modificações. De seguida <strong>de</strong>screv<strong>em</strong>-se as operações <strong>de</strong>finidas para manipular<br />

coobjectos e o modo como elas são impl<strong>em</strong>entadas.<br />

getCoObject Permite, ao cliente, obter uma cópia <strong>de</strong> um coobjecto e <strong>de</strong> um conjunto <strong>de</strong> subobjectos<br />

pertencentes a um mesmo coobjecto. No caso <strong>de</strong> o cliente já possuir uma cópia do coobjecto<br />

(indicando a versão que conhece), o servidor po<strong>de</strong> enviar a sequência <strong>de</strong> operações necessárias<br />

para actualizar a réplica do cliente. Caso contrário, é necessário propagar uma cópia do coob-

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!