2.3 Abordagens conhecidas dentro do Paradigma Editor/assinante
2.3.2 Tabelas de Encaminhamento baseadas em Subscrições
Num sistema descentralizado do tipo peer-to-peer os nós podem ser simultaneamente edi- tores, assinantes e routers de notificações. Neste tipo de sistemas coloca-se o problema de como sabem os nós para onde encaminhar as notificações. De forma a resolver esse problema criam-se árvores e limitam-se as mesmas em função das subscrições dos utili- zadores.
Uma possível solução é o uso de tabelas baseadas em subscrições. Estas tabelas são preenchidas usando anúncios feitos pelos nós relativos às suas subscrições. Este método, chamado aprendizagem pelo caminho inverso, consiste em inferir que dado nó X, com a subscrição S, é alcançável pelo canal por onde chegou o anúncio de X. Desta forma, quando uma notificação é recebida são usadas as tabelas para determinar quais as subs- crições compatíveis com a notificação e assim, quais os canais por onde esta deve ser propagada.
A vantagem desta aproximação é, que estando as tabelas correctas, evita a propa- gação desnecessária de notificações. Por outro lado é necessário manter as tabelas de encaminhamento o que envolve custos, nomeadamente em termos de largura de banda.
Esta aproximação pode ainda ser alvo de melhoramentos que visam reduzir o tama- nho das tabelas de encaminhamento, o que pode ser feito com base nas soluções abaixo descritas.
Editores Anunciados Consiste em manter em cada nó, de forma semelhante às subs- crições, informação de anúncios de publicação associados a cada canal. Ou seja, nós que actuam como editores anunciam-se como tal. O objectivo é poder determinar com base na comparação das subscrições e anúncios de publicação associados a cada canal se vão ser geradas notificações por esse canal. Desta forma evita-se a propagação de subscrições a locais da rede onde não existem nós a gerar notificações relevantes e, consequentemente, diminui-se o tamanho das tabelas de encaminhamento.
O benefício desta aproximação tanto maior quanto menor for o conjunto de subscri- ções intersectado com o conjunto de anúncios de publicação. Em particular, significa que existem poucos nós a gerar notificações para um dado conjunto de subscrições.
Esta método é usado por exemplo no sistema Siena [3].
Compressão de Tabelas de Subscrições A compressão de tabelas de subscrições pode ser feita através da agregação de entradas das mesmas. Caso uma entrada esteja comple- tamente contida numa segunda (associadas ao mesmo canal) é possível manter apenas a segunda. Este método é preciso uma vez que permite reduzir a tabela sem originar falsos positivos. No caso de admitirmos a existência de falsos positivos podemos substituir as entradas de subscrições S1 e S2 por uma única entrada associada a uma subscrição S3, tal que a união de S1e S2 está completamente contida em S3. No entanto, podem existir
{A<10},n5 {A<2},n6 {B<2},n2 {A<10},n3 {A<5},local {B<2},n4 n2 n3 n1 n5 n4 {A<10} n6 {A<5} {A<10} {B<2} {B<2} (A=3) {A<10},local {B<2},local
Figura 2.12: Envio de notificações com base em árvores. [20]
outras subscrições compatíveis com S3, o que resulta em falsos positivos.
O uso de compressão imprecisa permite reduzir fortemente as tabelas e assim, re- duzir os custos de computação no processo de encaminhamento. No entanto, se usada de forma demasiado agressiva pode gerar entradas que são compatíveis com todas as subscrições o que faz com que o encaminhamento degenere para uma inundação.
De notar que a compressão das tabelas de anúncios de publicação não se reveste da mesma utilidade face à complexidade de implementação, uma vez que estes são apenas testados durante a propagação de subscrições.
O sistema XNet [8], uma rede endereçada em termos de conteúdo XML, usa tabe- las de encaminhamento e implementa algoritmos de compressão das mesmas através de agregação baseada em factorizações de árvores de subscrições [9].
Árvores de Disseminação Árvores de disseminação são outra possível aproximação para reduzir o tamanho das tabelas de encaminhamento. Basicamente assenta no prin- cípio de estruturar a rede de forma a limitar de forma hierárquica os vizinhos dos nós. Esta estruturação é feita com base nos princípios das redes sobrepostas.
Perante uma estrutura em árvore um nó só precisa de manter informação sobre a sua subárvore e, como tal, o tamanho das tabelas decresce em função do nível da árvore. A eficiência desta redução depende do balanceamento da árvore.
Perante esta estrutura, as notificações podem ser enviadas directamente para a raiz e depois propagadas a partir da raiz pelos canais compatíveis ou podem ser enviadas para cima em direcção à raiz passando pelos nós intermédios que por sua vez podem propagar as notificações para baixo pelos canais apropriados.
O sistema Hermes [23], é um exemplo desta aproximação e usa a rede sobreposta Pas- try [28] para criar as árvores de disseminação.
de encaminhamento gera duplicados e por consequência um desperdício de largura de banda. De forma a evitar esta situação podem ser criadas previamente árvores (spanning tree).
Uma forma de criar estas árvores é usar redes sobrepostas. Uma aproximação, de- nominada mesh-first, consiste em usar redes sobrepostas estruturadas genericamente em grafos e usar os mecanismos de comunicação uni-ponto oferecidos pelas mesmas em conjunto com algoritmos semelhantes aos usados nos protocolos de multicast IP.
Por oposição à anterior, uma solução tree-first, consiste em estruturar logo à partida a rede sobreposta como uma árvore. Neste caso é necessária especial atenção para lidar com eventuais ciclos durante reorganizações da árvore.
A criação de árvores e a manutenção de tabelas de subscrições, são características desta aproximação que acarretam problemas relacionados com a entrada e saída de par- ticipantes do sistema. Se o sistema apresentar elevado dinamismo, existe um custo as- sociado a toda a reconfiguração que tem de ser feita em concordância. Durante estas reconfigurações mensagens podem ser perdidas pelo que é necessário que exista um pro- tocolo de recuperação dessas falhas.