• Nenhum resultado encontrado

3.8 Disseminação Filtrada

3.8.1 Entrega com Super Nós

3.8.1.1 Problema

Como já foi referido, o algoritmo de disseminação de conteúdos anterior, funcionava apenas para os nós dentro da visibilidade completa do sistema. Porém, com esta nova arquitectura de super nós, todos os participantes que apenas ficam ligados a um super nó representante não fazem parte desta visibilidade completa da rede. Assim, os filhos dos super nós, não receberiam qualquer evento, tendo em conta o algoritmo anterior. Por esta razão, este teve que ser desenvolvido, de forma a garantir as propriedades necessárias neste sistema: ausência de falsos positivos e, especialmente, negativos.

Esta arquitectura de super nós, sendo cada um representante de um filtro, foi adoptada para melhorar a filiação, mitigando o problema do churn e diminuindo os custos, mas também por facilitar a disseminação filtrada. Esta é facilitada pois, ao invés de percorrer um sistema linearmente com todos os nós, são analisados apenas os super nós, estando os restantes participantes com determinado filtro a cargo desses mesmos representantes. Assim, os intervalos para análise são mais curtos, tendo todos os nós que irão receber o conteúdo aglomerados, e não espalhados pelo intervalo de identificadores do sistema.

Tomando como princípio que os sub nós com o mesmo filtro estão aglomerados, ligando- se ao super nó em questão, a não chegada dos eventos aos filhos pode-se resolver de maneira simples. Partindo deste pressuposto pode-se estender o algoritmo anterior, de maneira a que cada representante informe os seus filhos do conteúdo por ele recebido, para além de efectuar o seu trabalho normal na disseminação filtrada.

3.8.1.2 Solução

Como, com a nova arquitectura, uma significativa parte dos nós não está presente na visibilidade completa, ficando dependente de um representante, é necessário introduzir métodos de disseminação de conteúdo entre super nós e filhos. Assim, para garantir a ine- xistência tanto de falsos positivos como negativos, é necessário desenvolver um método de entrega de eventos aos nós filhos, que garanta que os eventos sejam obtidos por todos os nós que os desejam receber.

Assim, o super nó representante que recebe um evento, tem como função distribuí-lo pelos participantes dependentes dele. Existem vários métodos de envio possíveis para o

3. DESENHO 3.8. Disseminação Filtrada

Listagem 4 Entrega de eventos a sub nós

94 onReceive( TurmoilPayload<...>)

95 . . .

96 sendToSubnodes( TurmoilPayload )

97

98 -sendToSubnodes( TurmoilPayload<...>)

99 endpoint ←self.subnodes.removeRandom()

100 Endpoints←self.subnodes

101 sendTurmoilSubnode<TurmoilPayload<...>,Endpoints>to endpoint

102 onFailure

103 repeat

104

105 onReceive( TurmoilSubnode<TurmoilPayload<...>,Endpoints>)

106 acceptEvent(TurmoilPayload<...>)

107 ifEndpoints.size> 0

108 endpoint ←Endpoints.removeRandom()

109 sendTurmoilSubnode<TurmoilPayload<...>,Endpoints>to endpoint

110 onFailure

111 repeat

pai notificar os filhos do evento recebido. Como estes têm o mesmo filtro, não é necessário verificar os nós que aceitam o conteúdo pois todos têm as mesmas definições de aceitação que o pai.

Os métodos que poderiam ser utilizados são variados. O pai poderia enviar os dados a cada filho, contudo esta abordagem gastaria muita largura de banda e aumentaria a carga de trabalho do super nó. Outra abordagem seria os filhos pedirem, de tempo a tempo, os eventos que chegaram ao pai. Dependesse do número da filhos a contactá-lo, este método poderia gastar largura de banda em excesso, tendo também o problema de não receber os eventos na altura da sua publicação. De seguida é referido o algoritmo desta entrega na listagem 4, de maneira a facilitar o entendimento do desenho descrito.

Figura 3.5: Disseminação entre super nós e posterior envio aos filhos

3. DESENHO 3.8. Disseminação Filtrada

para um dos seus filhos, encarregando-o de continuar a disseminação do conteúdo para os restantes (94-103). Aquando da recepção de um evento, este sub nó também tem os métodos anteriormente descritos como possibilidades para a disseminação do conteúdo. Com o intuito de distribuir ao máximo a carga entre nós, optámos pela mesma política de disseminação de conteúdo, ou seja, cada sub nó entrega a outro. Tal acontece sucessi- vamente, até já não haverem mais sub nós desse representante.

Porém, existe um detalhe por explicar na entrega entre os super nós. Se não for refe- rido a quem entregar ou a quem já foi entregue, estes estariam constantemente a trocar eventos às cegas, gerando falhas, uma baixa eficácia e gastos de largura de banda des- necessários. Assim, haveria duas metodologias distintas a adoptar: o super nó enviar na mensagem os nós a contactar, ou adicionando os nós já contactados à mensagem. O se- gundo método é possível de utilizar pois existe um conhecimento total entre os filhos do mesmo super nó.

Após analisar os dois casos, chega-se à conclusão que a largura de banda utilizada será a mesma visto, num método a lista vai diminuindo, enquanto que no outro cres- cendo. Basicamente um é o contrário de outro. Assim, o segundo parece mais viável por não expor tanto o pai a gastar upload. Porém, existe uma situação que contraria esta decisão: os nós só têm conhecimento de todos os outros filhos quando o super nó avisa que está vivo. Ou seja, caso um participante se junte ao super nó depois deste comunicar que está online e exista uma disseminação de conteúdo antes de outro aviso, os sub nós desconheceram este participante.

Por causa deste pormenor, e de maneira a garantir que todos recebem o conteúdo que definiram aceitar, escolhe-se a primeira abordagem, criando o super nó uma lista de entregas, de onde retira o nó a quem enviou o evento (101).

Desta forma, ao aceitar um conteúdo, um super nó irá informar um dos seus filhos da chegada desse mesmo evento. A entrega da notificação aos restantes filhos é delegada para o sub nó que recebeu o evento. Este fará passar o conteúdo a outro sub nó, delegando- lhe o intervalo restante de irmãos. O método será recursivo e em cadeia, de modo a todos os filhos receberem o evento em causa (105-111). A metodologia adoptada permite, também, uma distribuição da carga deste mecanismo por todos os seus intervenientes. De notar que os nós não receberão eventos duplicados devido à ordem do intervalo de sub nósimposta. A figura 3.5demonstra o método de disseminação de conteúdo desde a recepção por parte do pai, até à delegação do evento a um filho.

Documentos relacionados