# Novas Tecnologias de Internet/Pastry

Sistema em desenvolvimento pela Microsoft Research e Universidade Rice, visa construir um substrato para aplicações peer-to-peer descentralizado, auto organizável e tolerante a falhas.

## Arquitetura de Roteamento

Cada nó do sistema Pastry possui um identicador de 128 bits(nodeId), único e aleatoriamente escolhido. Isso garante que nós com ids próximos estão distribuídos em termos de localidade e jurisdição. Cada um desses nós mantém informações sobre L nós que possuem identicador mais próximo numericamente; estes nós compõem o conjunto de nós folha. Cada nó avisa aplicações que estejam rodando sobre a chegada ou partida de novos nós em seu conjunto de nós folha. O roteamento de mensagens e requisições é bem e ciente, possuindo complexidade O(log N) em número de passos, N sendo o número de nós ativos no sistema em um dado momento. O tamanho da tabela de roteamento que cada nó deve manter também é O(log N). Quando uma mensagem passa por um nó do sistema, aplicações relacionadas a mensagem podem realizar computações relacionadas.

## Nova Aplicação no Sistema e seu Funcionamento

Quando uma nova aplicação entra no sistema, ganha um identicador de objeto(objID), e é mapeada para o nó que possui identicador nodeID numericamente mais próximo. Caso haja interesse em replicação, o nó que recebe o objeto envia uma mensagem para mapear a aplicação em, digamos, K –1 nós. Se K<= (L/2)*L, as réplicas estarão nos nós folha do primeiro nó. Nesse cenário, um objeto só estaria inacessível se os K nós estivessem comprometidos. E, considerando que os nós folha estão em diferentes localizações, é difícil para um mal-intencionado prejudicar o funcionamento da aplicação. Também podem ser usados algoritmos de quorum para impedir que um nó mal-intencionado atualize ou leia as informações. Para manter alta disponibilidade, uma aplicação deve manter o seguinte invariante: em um dado momento, existem K réplicas de seus objetos funcionando. Como o sistema Pastry mantém comunicação entre nós folha, e muito provavelmente as réplicas estarão em um conjunto de nós folha, é mais fácil checar o funcionamento das réplicas. É possível utilizar-se de caches para obter acesso rápido às informações já solicitadas. Quando uma aplicação manda uma mensagem de procura a um objeto, este pode ser armazenado em nós pertencentes ao caminho percorrido pela mensagem. Subseqüentes requisições tendem a percorrer o mesmo caminho e poderão utilizar as cópias em cache, o que ajuda a aliviar o número de requisições às K réplicas primárias do sistema. Existem três aplicações teste já funcionando sobre o sistema Pastry. Scribe, um sistema de notificação de eventos; PAST, um repositório cooperativo para arquivos e Squirrel, um cache cooperativo para Web.

## Falhas - Pastry

Nós vizinhos no espaço de IDs estão cientes que um nó falhou, as folhas do nó que falhou são notificados e eles atualizam seu conjunto de folhas. Os nós que detectaram a falha, procuram um nó ativo mais próximo e solicita a sua tabela, usando-a para refazer parcialmente a sua (incluindo um valor apropriado para substituir o nó defeituoso).
* Esta página é somente um esboço. Ampliando-a você ajudará a melhorar a Wikiversidade.

## Bibliografia e referência

* - Pastry
* - Pastry