• Nenhum resultado encontrado

O paradigma de coordenac¸˜ao, enquanto modelo conceitual para aplicac¸˜oes, ´e uma proposta inte- ressante para o desenvolvimento de aplicac¸˜oes distribu´ıdas complexas. Este paradigma estipula que a atividade de programac¸˜ao em sistemas distribu´ıdos pode ser dividida em duas sub-atividades comple- mentares [103]: as computac¸˜oes executadas pelos processos da aplicac¸˜ao (algumas vezes chamados agentes), representando a manipulac¸˜ao dos dados da aplicac¸˜ao, e a coordenac¸˜ao, representando as interac¸˜oes entre estes processos. Assim, qualquer modelo de programac¸˜ao pode ser constru´ıdo a par- tir de um modelo de coordenac¸˜ao e um modelo de computac¸˜ao: a coordenac¸˜ao ´e o elemento que une as entidades ativas (computac¸˜oes) em uma aplicac¸˜ao.

Pode-se definir coordenac¸˜ao como a troca de informac¸˜oes (interac¸˜ao) entre agentes ativos coo- perantes de uma aplicac¸˜ao [61]. Um elemento central para o conceito de coordenac¸˜ao ´e o meio de coordenac¸˜ao. Este ´e representado pelos mecanismos de transporte utilizados pelos processos para que suas interac¸˜oes se efetivem. A figura 3.2 ilustra esta id´eia.

q

. . .

Meio de Coordenação

r

p

Figura 3.2: Processos interagem via seu meio de coordenac¸˜ao.

Formalmente, um modelo de coordenac¸˜ao pode ser definido como uma tupla hE, M, Li, em que E representa as entidades coordenadas, M o meio de coordenac¸˜ao e L as regras semˆanticas as quais o modelo adere [103]. Al´em destes elementos, a cada modelo de coordenac¸˜ao podemos associar uma ou mais linguagens de coordenac¸˜ao, que definem a sintaxe das informac¸˜oes trocadas entre as entidades durante as interac¸˜oes bem como os itens lingu´ısticos usados para realizar tais interac¸˜oes [101].

O conceito de coordenac¸˜ao est´a intimamente ligado a heterogeneidade das entidades coordenadas, importante caracter´ıstica dos sistemas abertos. A separac¸˜ao clara entre coordenac¸˜ao e computac¸˜ao permite que entidades com diferentes caracter´ısticas e capacidades possam interagir plenamente em um sistema computacional.

Existem quatro tipos b´asicos de modelos de coordenac¸˜ao [30], conforme apresentado na tabela 3.1.

Estes modelos s˜ao classificados a partir do grau de acoplamento temporal e espacial apresentado pelas entidades que interagem. O acoplamento temporal est´a relacionado com a sincronizac¸˜ao das

Tipo de Acoplamento Tempo

Acoplamento Acoplado Desacoplado

Espac¸o Acoplado Direta Quadro Negro

Desacoplado Orientada a Encontro Generativa

Tabela 3.1: Tipos de modelos de coordenac¸˜ao.

comunicac¸˜oes entre entidades durante as interac¸˜oes. Em um modelo acoplado temporalmente ´e pre- ciso que as entidades estejam engajadas em comunicac¸˜oes em um mesmo instante para que exista interac¸˜ao. O acoplamento espacial est´a relacionado com o fato de s´o existir comunicac¸˜ao entre en- tidades se estas conhecem a localizac¸˜ao de seus pares. Em um sistema acoplado espacialmente, as entidades devem conseguir enderec¸ar umas `as outras para que as interac¸˜oes acontec¸am. Os quatro modelos apresentados na tabela 3.1 s˜ao definidos da seguinte forma [30]:

• Direta: Este ´e o modelo de coordenac¸˜ao mais usado pelas aplicac¸˜oes distribu´ıdas atuais, nele as entidades se comunicam de forma direta, atrav´es de comunicac¸˜oes sincronizadas e explicita- mente enderec¸adas. Algumas concretizac¸˜oes deste modelo s˜ao as redes par a par (peer-to-peer), em que as entidades se comunicam diretamente, e cliente/servidor, em que entidades clientes re- quisitam servic¸os `a entidades diferenciadas denominadas servidores. Os sockets TCP/IP [106] e o modelo RMI do CORBA [100] s˜ao representantes deste modelo;

• Orientada a Encontro: O modelo de coordenac¸˜ao orientado a encontro permite que proces- sos se comuniquem atrav´es de encontros de forma espacialmente desacoplada. Encontros s˜ao canais p´ublicos ou listas de distribuic¸˜ao de eventos e mensagens, em que as entidades se re- gistram visando interac¸˜ao. Apesar da coordenac¸˜ao orientada a encontro prover comunicac¸˜ao desacoplada no espac¸o (j´a que as entidades n˜ao conhecem os enderec¸os umas das outras), ela n˜ao fornece desacoplamento temporal, pois as interac¸˜oes ocorrem de forma sincronizada: cada informac¸˜ao produzida no encontro ´e recebida por todas as entidades presentes no momento. Alguns exemplos de mecanismos de interac¸˜ao baseadas neste modelo s˜ao os servic¸os de even- tos e de filas de mensagens. Dentre os v´arios exemplos de implementac¸˜ao de modelos deste tipo podemos citar os servic¸os de eventos e notificac¸˜ao CORBA definidos pela OMG [100] e a especificac¸˜ao WS-Notification [65] para servic¸os web;

• Quadro Negro: No modelo baseado em quadro negro as entidades interagem atrav´es de espac¸os de dados compartilhados localizados em determinados n´os da rede. Este modelo ´e tem- poralmente desacoplado, j´a que as entidades comunicantes podem deixar e ler informac¸˜oes no quadro sempre que desejarem. Estas operac¸˜oes de escrita e leitura n˜ao necessariamente preci- sam ser feitas ao mesmo tempo, por´em o acoplamento espacial existe devido ao fato das entida- des precisarem identificar as informac¸˜oes deixadas no quadro tanto na leitura quanto na escrita. Como conseq¨uˆencia, os leitores do quadro devem conhecer os identificadores das informac¸˜oes deixadas no quadro negro para obtˆe-las. O modelo de coordenac¸˜ao baseado em quadro negro foi criado inicialmente para aplicac¸˜oes de inteligˆencia artificial e ainda hoje sua utilizac¸˜ao se d´a em maior parte neste contexto, sendo empregado principalmente para a coordenac¸˜ao de agentes

inteligentes. O modelo de computac¸˜ao distribu´ıda em que os processos se coordenam atrav´es de um banco de registradores compartilhados tamb´em pode ser visto como uma instˆancia deste tipo de coordenac¸˜ao, uma vez que estes s´o podem se comunicar se souberem os enderec¸os dos registradores usados para troca de informac¸˜oes;

• Generativa: A coordenac¸˜ao generativa faz uso de um espac¸o de mem´oria compartilhado (de forma an´aloga ao modelo de quadro negro) pelas entidades juntamente com mecanismos as- sociativos de acesso `as informac¸˜oes neste espac¸o [59]: a informac¸˜ao ´e organizada em tuplas e acessada de modo associativo atrav´es de casamento de padr˜oes. Os mecanismos associativos usados reforc¸am ainda mais o desacoplamento entre as entidades permitindo que estas possam se comunicar sem nem mesmo saber o formato exato das comunicac¸˜oes. A implementac¸˜ao ori- ginal deste modelo de coordenac¸˜ao foi realizada na linguagem LINDA[59], por´em, in´umeras extens˜oes e sistemas foram posteriormente propostos, sempre tirando proveito de sua flexibili- dade.

Mais recentemente, alguns autores adicionaram um novo tipo de desacoplamento aos j´a conhe- cidos desacoplamento temporal e espacial: o desacoplamento de bloqueio1 [55]. Nesta forma de desacoplamento, as primitivas utilizadas pelos processos para se coordenarem n˜ao s˜ao bloqueantes. Isto implica na inexistˆencia de sincronizac¸˜ao entre diferentes processos no sistema. Um exemplo de modelo de coordenac¸˜ao desacoplado no tempo, no espac¸o e no bloqueio ´e o Publisher/Subscriber [55]. As primitivas nele utilizadas para o envio de eventos s˜ao n˜ao bloqueantes e, uma vez um evento produzido, o produtor n˜ao espera at´e que os demais processos interessados recebam este evento. No caso do espac¸o de tuplas, o desacoplamento de bloqueio n˜ao existe, j´a que todas as primitivas de acesso ao espac¸o s˜ao bloqueantes (ver pr´oxima sec¸˜ao). No entanto, extens˜oes ao modelo b´asico, visando prover primitivas n˜ao bloqueantes para o espac¸o de tuplas (ex. [112]), tornam o modelo desacoplado tamb´em no bloqueio.

Uma outra taxonomia para a classificac¸˜ao de modelos de coordenac¸˜ao ´e proposta em [103]. Nela os modelos s˜ao divididos em orientados a dados e orientados a controle. A principal caracter´ıstica dos modelos orientados a dados ´e a existˆencia de um espac¸o de dados compartilhado entre as en- tidades, enquanto nos modelos orientados a controle as entidades interagem atrav´es de eventos co- municados entre elas. Aplicando essa definic¸˜ao aos modelos apresentados na tabela 3.1 temos que a coordenac¸˜ao direta e a orientada a encontros s˜ao modelos de coordenac¸˜ao orientados a controle enquanto a baseada em quadro negro e a generativa s˜ao orientadas a dados.

No contexto de sistemas abertos, em que entidades heterogˆeneas podem participar em momentos diversos das computac¸˜oes distribu´ıdas, o modelo generativo mostra-se o mais adequado. Em ambi- entes dinˆamicos, como redes ad hoc compostas de dispositivos m´oveis, ´e praticamente imposs´ıvel ter conhecimento completo e atualizado sobre as entidades comunicantes. Desta forma, um mecanismo de coordenac¸˜ao completamente desacoplado se mostra muito mais atraente. Al´em disso, algumas aplicac¸˜oes podem tirar proveito das propriedades de mem´oria associativa para lidar com a incerteza, dinamicidade e heterogeneidade da informac¸˜ao, a partir da combinac¸˜ao de padr˜oes entre tuplas.

1Evitamos utilizar a traduc¸˜ao direta do original, desacoplamento de sincronizac¸˜ao (synchronization decoupling), para