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

asc.di.fct.unl.pt
from asc.di.fct.unl.pt More from this publisher
11.04.2013 Views

210 APÊNDICE A. DOORS antes de executar a operação de inserção de l no grupo de replicadores do volume. Caso contrário, o servidor l pode tomar uma posição independente. rollbackRemove(uid) Indica que o pedido de remoção (do servidor i) com identificador uid deve ser cancelado. A execução desta operação recoloca o estado de i em activo (e permite que os servidores que tinham dado a sua concordância com a remoção de i possam voltar a comunicar com i). readyRemove(uid) Indica que a cópia local do servidor está pronta para concluir o pedido de remo- ção forçada. A remoção apenas se executará se os outros servidores tiverem concordado com a remoção (como se explicou anteriormente). Usando estas operações e a operação de disseminação definida anteriormente, a remoção forçada de um servidor i do grupo de replicadores do volume v processa-se da seguinte forma: 1. Um qualquer servidor j, pertencente ao grupo de replicadores do volume v, submete as operações askRemove(uid,i) e disseminate(uidd,U,readyRemove(uid),readyCond) no coobjecto de filia- ção do volume v. A operação askRemove dá início ao processo de remoção forçada de um servidor — a sua execução com sucesso coloca o estado do servidor em a_remover(uid). A operação de disseminação garante a propagação das operações identificadas no servidor i para todos os repli- cadores do volume. A condição readyCond verifica se as condições para a execução da operação readyRemove (descri- tas anteriormente) são satisfeitas, i.e., se todos os servidores que não vão ser removidos concordam com a remoção e se, para todos os coobjectos, todas as operações submetidas em i, e conhecidas em qualquer servidor aquando da execução da operação agreeRemove, estão reflectidas na réplica local do coobjecto 6 . Assim, readyCond será verdadeiro no servidor i, quando: (1) todos os servidores que não vão ser removidos submeteram a operação agreeRemove respectiva; (2) para todo o servidor activo, j, que submeteu a operação agreeRemove( j,uid) identificada em j com o número de sequência tcr, se tem v[i, j] ≥ tcr; (3) para todo o servidor removido j, removido pela operação de remoção sub- metida no patrocinador k com número de sequência tr j, se tem v[i,k] ≥ tr j 7 . Se o servidor k tiver posteriormente sido removido pela operação de remoção submetida no patrocinador l com número de sequência trk, deve ter-se v[i,k] ≥ tt j ∨ v[i,l] ≥ trk (e de modo semelhante para consecutivas remoções). 6 O facto de a operação agreeRemove ser executada independentemente da operação de disseminação leva a que a condição definida por omissão não seja válida neste caso. 7 Se o servidor removido, j, tiver submetido a operação agreeRemove( j,uid), basta verificar a primeira condição.

A.1. FILIAÇÃO 211 2. Um servidor j, no qual o estado do servidor i é a_remover(uid), após executar as verificações que considere necessárias, deve submeter a operação agreeRemove( j,uid) ou rollback(uid) se, respectivamente, concordar ou discordar da remoção do servidor (e, caso concorde, actuar em conformidade com essa decisão). 3. A execução da operação readyRemove no servidor i, verifica se i é o responsável por efectuar a remoção, considerando todos os pedidos de remoção pendentes (i.e., se é o servidor com menor número de ordem na vista actual dos servidores que não se incluem no conjunto de servidores prontos a serem removidos). O responsável pela remoção, actua como patrocinador da remoção e executa as seguintes operações (sem permitir acessos concorrentes de outros servidores ou clien- tes): (1) informa todos os coobjectos do volume quais são os servidores que vão ser removidos; (2) submete as operações de remoção respectivas (através do protocolo local de mudança de vista). O mecanismo de remoção forçada de um servidor leva a que operações propagadas por um cliente para o servidor removido sejam perdidas caso não tenham sido anteriormente propagadas para outro servidor que permaneça no sistema. Assim, este mecanismo apenas deve ser usado em relação aos servi- dores que se encontram permanentemente desconectados do sistema (por exemplo, devido a terem sido danificados). Se um servidor removido não estiver permanentemente desconectado, ele deve propagar as operações que recebeu de clientes para um servidor que esteja a replicar o volume e, caso pretenda, pedir a sua inserção no grupo de replicadores. A.1.8 Protocolo de execução dos blocos só-uma-vez em ordenações por verificação da estabilidade Nos protocolos que ordenam as operações verificando a estabilidade da ordem (ordem causal – sec- ção 4.1.3, ordem total – secção 4.1.4.2), quando um servidor sai voluntariamente do grupo de replica- dores de um volume, o patrocinador assume a responsabilidade de executar os blocos só-uma-vez das operações que ainda não tenham sido executadas no servidor removido. No entanto, como o patroci- nador pode já ter executado algumas das operações das quais devia executar os blocos só-uma-vez, o seguinte protocolo é usado para garantir que os blocos só-uma-vez são executados uma e uma só vez: 1. Quando a réplica de um coobjecto num servidor é informada que esse servidor vai ser removido do grupo de replicadores (passo 4 do protocolo de remoção), executa uma operação que indica quais as operações executadas até esse momento e quais as operações pelas quais é responsável por executar os blocos só-uma-vez (neste caso, as operações recebidas no servidor e aquelas cuja responsabilidade possa ter sido delegada anteriormente). Esta operação delega no patrocinador a responsabilidade de executar os blocos só-uma-vez das operações ainda não executadas.

210 APÊNDICE A. DOORS<br />

antes <strong>de</strong> executar a operação <strong>de</strong> inserção <strong>de</strong> l no grupo <strong>de</strong> replicadores do volume. Caso contrário,<br />

o servidor l po<strong>de</strong> tomar uma posição in<strong>de</strong>pen<strong>de</strong>nte.<br />

rollbackR<strong>em</strong>ove(uid) Indica que o pedido <strong>de</strong> r<strong>em</strong>oção (do servidor i) com i<strong>de</strong>ntificador uid <strong>de</strong>ve ser<br />

cancelado. A execução <strong>de</strong>sta operação recoloca o estado <strong>de</strong> i <strong>em</strong> activo (e permite que os servidores<br />

que tinham dado a sua concordância com a r<strong>em</strong>oção <strong>de</strong> i possam voltar a comunicar com i).<br />

readyR<strong>em</strong>ove(uid) Indica que a cópia local do servidor está pronta para concluir o pedido <strong>de</strong> r<strong>em</strong>o-<br />

ção forçada. A r<strong>em</strong>oção apenas se executará se os outros servidores tiver<strong>em</strong> concordado com a<br />

r<strong>em</strong>oção (como se explicou anteriormente).<br />

Usando estas operações e a operação <strong>de</strong> diss<strong>em</strong>inação <strong>de</strong>finida anteriormente, a r<strong>em</strong>oção forçada <strong>de</strong><br />

um servidor i do grupo <strong>de</strong> replicadores do volume v processa-se da seguinte forma:<br />

1. Um qualquer servidor j, pertencente ao grupo <strong>de</strong> replicadores do volume v, submete as operações<br />

askR<strong>em</strong>ove(uid,i) e diss<strong>em</strong>inate(uidd,U,readyR<strong>em</strong>ove(uid),readyCond) no coobjecto <strong>de</strong> filia-<br />

ção do volume v. A operação askR<strong>em</strong>ove dá início ao processo <strong>de</strong> r<strong>em</strong>oção forçada <strong>de</strong> um servidor<br />

— a sua execução com sucesso coloca o estado do servidor <strong>em</strong> a_r<strong>em</strong>over(uid). A operação <strong>de</strong><br />

diss<strong>em</strong>inação garante a propagação das operações i<strong>de</strong>ntificadas no servidor i para todos os repli-<br />

cadores do volume.<br />

A condição readyCond verifica se as condições para a execução da operação readyR<strong>em</strong>ove (<strong>de</strong>scri-<br />

tas anteriormente) são satisfeitas, i.e., se todos os servidores que não vão ser r<strong>em</strong>ovidos concordam<br />

com a r<strong>em</strong>oção e se, para todos os coobjectos, todas as operações submetidas <strong>em</strong> i, e conhecidas<br />

<strong>em</strong> qualquer servidor aquando da execução da operação agreeR<strong>em</strong>ove, estão reflectidas na réplica<br />

local do coobjecto 6 .<br />

Assim, readyCond será verda<strong>de</strong>iro no servidor i, quando: (1) todos os servidores que não vão ser<br />

r<strong>em</strong>ovidos submeteram a operação agreeR<strong>em</strong>ove respectiva; (2) para todo o servidor activo, j, que<br />

submeteu a operação agreeR<strong>em</strong>ove( j,uid) i<strong>de</strong>ntificada <strong>em</strong> j com o número <strong>de</strong> sequência tcr, se<br />

t<strong>em</strong> v[i, j] ≥ tcr; (3) para todo o servidor r<strong>em</strong>ovido j, r<strong>em</strong>ovido pela operação <strong>de</strong> r<strong>em</strong>oção sub-<br />

metida no patrocinador k com número <strong>de</strong> sequência tr j, se t<strong>em</strong> v[i,k] ≥ tr j 7 . Se o servidor k tiver<br />

posteriormente sido r<strong>em</strong>ovido pela operação <strong>de</strong> r<strong>em</strong>oção submetida no patrocinador l com número<br />

<strong>de</strong> sequência trk, <strong>de</strong>ve ter-se v[i,k] ≥ tt j ∨ v[i,l] ≥ trk (e <strong>de</strong> modo s<strong>em</strong>elhante para consecutivas<br />

r<strong>em</strong>oções).<br />

6 O facto <strong>de</strong> a operação agreeR<strong>em</strong>ove ser executada in<strong>de</strong>pen<strong>de</strong>nt<strong>em</strong>ente da operação <strong>de</strong> diss<strong>em</strong>inação leva a que a condição<br />

<strong>de</strong>finida por omissão não seja válida neste caso.<br />

7 Se o servidor r<strong>em</strong>ovido, j, tiver submetido a operação agreeR<strong>em</strong>ove( j,uid), basta verificar a primeira condição.

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

Saved successfully!

Ooh no, something went wrong!