Um mecanismo de passagem de mensagens de elevado desempenho ´e essencial para que aplica¸c˜oes e servi¸cos Domus possam comunicar de forma expedita. Para maximizar a explora¸c˜ao do paralelismo potencial dos n´os, as aplica¸c˜oes e os servi¸cos Domus poder˜ao ser baseados em m´ultiplos fios-de-execu¸c˜ao, sendo portanto desej´avel um mecanismo de comunica¸c˜ao que suporte a troca de mensagens entre fios-de-execu¸c˜ao em n´os diferentes. A cataloga¸c˜ao e monitoriza¸c˜ao de recursos ´e tamb´em necess´aria tendo em vista, por um lado, a gera¸c˜ao de distribui¸c˜oes iniciais balanceadas para as DHTs e, por outro, a manuten- ¸c˜ao dinˆamica desse balanceamento, seja em resultado de mudan¸cas no n´ıvel de utiliza¸c˜ao dos recursos, seja em resultado de mudan¸cas no n´umero de n´os participantes na DHT. Estas quest˜oes ser˜ao tratadas com a profundidade devida ao longo do pr´oximo cap´ıtulo. Finalmente, a disponibilidade de execu¸c˜ao remota permitir´a n˜ao s´o efectuar o arranque de servi¸cos Domus num conjunto inicial de n´os, como ainda expandi-lo, caso seja necess´ario.
a1 serviços básicos d0 infra-estrutura de comunicações serviços básicos s1 s2 n1 n2
Figura 5.3: Servi¸cos b´asicos como intermedi´arios entre aplica¸c˜oes e servi¸cos Domus. A figura 5.3 amplia parte da figura 5.1, revelando que as interac¸c˜oes (setas bidireccionais cont´ınuas) entre aplica¸c˜oes e servi¸cos Domus s˜ao mediadas pelos servi¸cos b´asicos. Na figura ´e tamb´em clara a distin¸c˜ao entre o acesso (virtual) de uma aplica¸c˜ao a uma DHT (seta bidireccional tracejada) e a interac¸c˜ao (real) da aplica¸c˜ao com os servi¸cos que a suportam.
5.5
Dissocia¸c˜ao Endere¸camento – Armazenamento
At´e agora assumimos, implicitamente, que a atribui¸c˜ao de uma certa entrada de uma DHT a um determinado n´o computacional5 ´e feita no pressuposto de que o n´o em causa ser´a o respons´avel pelo armazenamento dos registos associados `a entrada6; adicionalmente, assumimos que, no ˆambito da utiliza¸c˜ao de mecanismos de localiza¸c˜ao distribu´ıda, o mesmo n´o alojar´a as tabelas de encaminhamento de todas as entradas que lhe foram atribu´ıdas. Em tal contexto, cada n´o de uma DHT assume simultaneamente a gest˜ao do armazena- mento e a gest˜ao do endere¸camento das suas entradas; equivalentemente, pode-se dizer
5
Defini¸c˜ao da correspondˆencia entrada 7→ n´o ou, equivalentemente, posicionamento da entrada no n´o.
5.5 Dissocia¸c˜ao Endere¸camento – Armazenamento 119
tamb´em que cada n´o realiza as fun¸c˜oes de armazenamento e as fun¸c˜oes de endere¸camento das entradas que lhe foram atribu´ıdas, ou seja, verifica-se uma uni˜ao/associa¸c˜ao funcional, na mesma entidade, entre as fun¸c˜oes de endere¸camento e de armazenamento das entradas. Numa linha diferente, a arquitectura Domus suporta a dissocia¸c˜ao funcional de endere¸ca- mento e armazenamento: se um certo (n´o) servi¸co assume a gest˜ao de endere¸camento de uma entrada, poder´a ser esse ou outro (n´o) servi¸co a realizar a correspondente gest˜ao de armazenamento. Neste contexto, designamos por (n´o) servi¸co de endere¸camento de uma entrada o (n´o) servi¸co que efectua a sua gest˜ao de endere¸camento, e por (n´o) servi¸co de armazenamento de uma entrada o (n´o) servi¸co respons´avel pela gest˜ao de armazenamento. A dissocia¸c˜ao funcional entre endere¸camento e armazenamento permitir´a que os servi¸cos Domus executem essas funcionalidades em combina¸c˜oes diversas e em grada¸c˜oes compat´ı- veis com as caracter´ısticas e recursos dispon´ıveis dos n´os hospedeiros. Por exemplo, num n´o as condi¸c˜oes podem ser prop´ıcias `a execu¸c˜ao de fun¸c˜oes de armazenamento (tipicamente I/O bound e dependentes de mem´oria secund´aria), ao passo que podem ser, noutro n´o, adequadas ao desempenho de fun¸c˜oes de endere¸camento (execu¸c˜ao de algoritmos de enca- minhamento, tipicamente CPU bound e sens´ıveis `a disponibilidade de mem´oria prim´aria).
5.5.1 Refinamento do Conceito de N´o Virtual
A arquitectura Domus adopta o modelo M47 de Distribui¸c˜ao Heterog´enea com Hashing
Dinˆamico do cap´ıtulo 3. Nesse modelo, um n´o virtual equivale a um n´umero de entradas8: 1) cada n´o computacional n que participa numa DHT tem associado um certo n´umero de n´os virtuais, V(n); 2) por cada n´o virtual v, um n´o computacional n ter´a direito a um n´umero de entradas, vari´avel entre os limites Hmin(v) e Hmax(v); 3) no cˆomputo global,
V(n) n´os virtuais traduzir-se-˜ao em H(n) entradas atribu´ıdas a n. Dado que, at´e agora, o endere¸camento e armazenamento de uma entrada se assumiram acoplados, ent˜ao n seria respons´avel pela gest˜ao do endere¸camento e do armazenamento das suas H(n) entradas. A dissocia¸c˜ao endere¸camento-armazenamento das entradas tem implica¸c˜oes sobre o con- ceito de n´o virtual. Em particular, implica a existˆencia de n´os virtuais de duas esp´ecies, a) n´os virtuais de endere¸camento e b) n´os virtuais de armazenamento, conotados com o balanceamento de gr˜ao-grosso (e independente) dessas fun¸c˜oes. Neste contexto, define-se9:
• Ve
(n): n´umero total10 de n´os virtuais de endere¸camento, atribu´ıdos a n; • Ve
(d): n´umero total de n´os virtuais de endere¸camento, da DHT d; • Ve
(d, n): n´umero total de n´os virtuais de endere¸camento da DHT d, atribu´ıdos a n; • Va
(n), Va
(d), Va
(d, n): nota¸c˜ao equivalente `a anterior, mas para o armazenamento.
7
A arquitectura tamb´em ´e compat´ıvel com o modelo M2 de distribui¸c˜ao homog´enea dado que, com um n´umero comum de n´os virtuais para todos os n´os/servi¸cos da DHT (sendo suficiente, para tal, a defini¸c˜ao V(n) = 1 ∀n ∈ N (ou seja, um n´o virtual, por cada n´o)), o modelo M4 transfigura-se no modelo M2.
8
Ao passo que na variante M4’ do modelo M4 um n´o virtual ´e visto como um conjunto de entradas, em que a identidade das entradas, para al´em do seu n´umero, passam a ser relevantes (rever sec¸c˜ao 3.7.1).
9
Esta nota¸c˜ao ´e tamb´em aplic´avel a servi¸cos Domus, bastando substituir, onde for oportuno, n por s.
10Ver a sec¸c˜ao 5.6.3 para uma defini¸c˜ao formal de Ve
120 5.5 Dissocia¸c˜ao Endere¸camento – Armazenamento
Durante a participa¸c˜ao de um mesmo n´o n numa mesma DHT d, o n´umero adequado de n´os virtuais das duas esp´ecies, no quadro dessa participa¸c˜ao – Ve
(d, n) e Va
(d, n) –, poder´a variar, de forma independente. Em consequˆencia, o n´umero total de n´os virtuais das duas esp´ecies, para a DHT d – Ve
(d) e Va
(d) –, evoluir´a tamb´em de forma independente. Todavia, essa evolu¸c˜ao est´a condicionada por certos invariantes, c.f. se descreve de seguida. A express˜ao 3.20 para o n´umero global de entradas de uma DHT sob o modelo M4 ´e:
H = 2L com L = ceil(log2[V × Hmin(v)])
Considerando a existˆencia de n´os virtuais de duas esp´ecies, da express˜ao anterior resulta He
(d) = 2Le(d) com Le(d) = ceil(log2[Ve(d) × Hmin(v)]) (5.1)
Ha
(d) = 2La(d) com La(d) = ceil(log2[Va(d) × Hmin(v)]) (5.2)
Ora, uma vez que aquilo que se pretende ´e suportar, de forma desacoplada, o endere¸ca- mento e o armazenamento das entradas de uma mesma DHT, ent˜ao ´e ´obvio que He
(d) e Ha
(d) tˆem que ser iguais; mas, para que tal aconte¸ca, Ve
(d) e Va
(d) n˜ao tˆem de ser iguais, pois existem intervalos de varia¸c˜ao de Ve
(d) e Va
(d) ao longo dos quais He
(d) e Ha
(d) coincidem; mais especificamente, essa coincidˆencia verifica-se desde que Ve
(d) e Va
(d) per- ten¸cam ao mesmo intervalo delimitado por duas potˆencias de 2 consecutivas; ao longo desse intervalo, Ve
(d) e Va
(d) podem evoluir independentemente; se um desses valores ul- trapassar as fronteiras do intervalo actual, ent˜ao o outro ter´a de ser aumentado/diminu´ıdo (apenas) o suficiente para transitarem conjuntamente para o pr´oximo intervalo; este raci- oc´ınio ´e aplicado tamb´em durante a defini¸c˜ao dos valores iniciais de Ve
(d) e Va
(d). A tabela 5.1 apresenta um invariante que traduz a interdependˆencia entre o n´umero de entradas de uma DHT e o de n´os virtuais de cada esp´ecie. O invariante ´e o primeiro de um conjunto de outros (que ser˜ao apresentados na sec¸c˜ao 5.8), cuja valida¸c˜ao permanente garante a consistˆencia das rela¸c˜oes entre os v´arios componentes da arquitectura Domus.
I0 : H(d) == 2L e (d)== 2La (d) ( com Le (d) = ceil[log2(Ve(d) × Hmin(v))] e L a (d) = ceil[log2(Va(d) × Hmin(v))] )
– o n´umero de entradas da DHT deve coincidir para as duas esp´ecies de n´os virtuais
Tabela 5.1: Invariante Base da Dissocia¸c˜ao Endere¸camento - Armazenamento.
5.5.1.1 Significado do N´umero de N´os Virtuais
Como referimos na sec¸c˜ao 3.5.2, o n´umero de n´os virtuais de uma DHT, ou dos seus n´os/servi¸cos, pode ter v´arias leituras e resultar de l´ogicas diversas, desde que associadas ao suporte de uma distribui¸c˜ao eventualmente heterog´enea da DHT, e acompanhadas de crit´erios para a defini¸c˜ao do n´umero global e individual de n´os virtuais. Analisemos, ent˜ao, algumas das possibilidades que fazem sentido, no contexto da arquitectura Domus: