You are on page 1of 28

Arquiteturas

Programao de Sistemas Distribudos


Tecnologia em Sistema para Internet

Professor: Elielder Berwanger

Arquiteturas
Sistemas distribudos muitas vezes so complexas peas de software cujos componentes esto, por definio, espalhados por vrias mquinas. Para controlar sua complexidade, crucial que esses sistemas sejam organizados adequadamente. H diferentes modos de ver a organizao de um sistema distribudo, mas uma maneira bvia fazer uma distino entre a organizao lgica do conjunto de componentes de software e, por outro lado, a realizao fsica propriamente dita.

Arquiteturas
A organizao de sistemas distribudos trata, em grande parte, dos componentes de software que constituem o sistema. Essas arquiteturas de software nos dizem como os vrios componentes de software devem ser organizados e como devem interagir. A realizao efetiva de um sistema distribudo implica que especifiquemos e coloquemos componentes de software em mquinas reais. Para fazer isso, h diferentes opes. A especificao final de uma arquitetura de software tambm denominada arquitetura de sistema.

Arquiteturas
Como vimos anteriormente, uma meta importante de sistemas distribudos separar aplicaes das plataformas subjacentes provendo uma camada de middleware. Adotar tal camada uma deciso arquitetnica importante, e sua finalidade principal proporcionar transparncia de distribuio. Contudo, preciso fazer compromissos para conseguir transparncia, o que resulta em vrias tcnicas para tornar o middleware adaptativo.

Arquiteturas
Tambm pode se conseguir a adaptabilidade em sistemas distribudos fazendo o sistema monitorar seu prprio comportamento e tomar as providncias adequadas quando necessrio. Esse modo de ver as coisas resultou em uma classe que agora chamada de sistemas autonmicos. Esses sistemas distribudos so freqentemente organizados sob a forma de realimentaes de contato que formam um importante elemento arquitetnico durante o projeto de um sistema.

Estilos Arquitetnicos
Estilos arquitetnicos so formulados em termos de componentes, do modo como esses componentes esto conectados uns aos outros, dos dados trocados entre componentes e, por fim, da maneira como esses elementos so configurados em conjunto para formar um sistema. Um componente uma unidade modular com interfaces requeridas e fornecidas bem definidas que substituvel dentro de seu ambiente.

Estilos Arquitetnicos
A questo importante sobre um componente para sistemas distribudos que ele pode ser substitudo, contanto que respeitemos suas interfaces. Um conceito um pouco mais difcil de entender o de um conector que, em geral, descrito como um mecanismo que serve de mediador da comunicao ou da cooperao entre componentes. Por exemplo: um conector pode ser formado pelas facilidades para chamadas de procedimento (remotas), passagem de mensagem ou fluxos de dados.

Estilos Arquitetnicos
Usando componentes e conectores, podemos chegar a vrias configuraes que, por sua vez, foram classificadas em estilos arquitetnicos, sendo os mais importantes:
Arquiteturas em camadas Arquiteturas baseadas em objetos Arquiteturas centradas em dados Arquiteturas baseadas em eventos

Estilos Arquitetnicos Em camadas


A idia bsica para o estilo em camadas simples: Os componentes so organizados em camadas, e um componente na camada Li tem permisso de chamar componentes na camada subjacente Li-1, mas no o contrrio. Esse modelo tem sido amplamente adotado pela comunidade de redes. Uma observao fundamental que, em geral, o controle flui de camada para camada: requisies descem pela hierarquia, ao passo que resultados fluem para cima.

Camada N

Camada N-1 Fluxo de requisio Camada 2 Fluxo de resposta

Camada 1

Estilos Arquitetnicos - Baseada em objetos


Uma organizao bem mais solta seguida nas arquiteturas baseadas em objetos. Em essncia, cada objeto corresponde ao que definimos como componente, e esses componentes so conectados por meio de chamada de procedimento (remoto). Essa arquitetura de software se ajusta arquitetura de sistema cliente-servidor. As arquiteturas em camadas e baseadas em objetos ainda formam os estilos mais importantes para sistemas de software de grande porte. Cada objeto possui seu estado em sua instncia. Pode ser invocado remotamente, ou ser transportado.

Objeto

Objeto Objeto Chamada de mtodo Objeto Objeto

Estilos Arquitetnicos Centradas em dados


Se desenvolvem em torno da idia de que processos se comunicam por meio de um repositrio comum (passivo ou ativo). Pode-se argumentar que, para sistemas distribudos, essas arquiteturas so to importantes quanto as arquiteturas em camadas ou baseada em objetos. Por exemplo: foi desenvolvida uma profuso de aplicaes em rede que dependem de um sistema distribudo de arquivos compartilhados no qual praticamente toda a comunicao ocorre por meio de arquivos. Da mesma maneira, sistemas distribudos baseados na Web, so, em grande parte, centrados em dados: processos se comunicam por meio da utilizao de servios de dados baseados na Web.

Estilos Arquitetnicos Baseadas em eventos


Processos se comunicam, em essncia, por meio da propagao de eventos que, opcionalmente, tambm transportam dados. No caso de sistemas distribudos, a propagao de eventos tem sido associada, em geral, com o que denominamos sistemas publicar/subscrever. A idia bsica que processos publiquem eventos aps os quais o middleware assegura que somente os processos que se subscreveram para esses eventos os recebero. A principal vantagem que os processos so fracamente acoplado. Em princpio, eles no precisam se referir explicitamente uns aos outros, o que tambm conhecido como desacoplados no espao ou referencialmente desacoplados.

Componente Entrega de evento Barramento de eventos Publicar Componente

Componente

Arquitetura de Sistemas Centralizadas


Devemos pensar em termos de clientes que requisitam servios de servidores para nos ajudar a entender e gerenciar a complexidade de sistemas distribudos. No modelo cliente-servidor bsico, processos em um sistema distribudo so divididos em dois grupos, com possvel sobreposio. Um servidor um processo que implementa um servio especfico. Por exemplo: um servio de sistema de arquivo ou um servio de banco de dados. Um cliente um processo que requisita um servio de um servidor enviando-lhe uma requisio e, na seqncia, esperando pela resposta do servidor.

Cliente

Espera resultado

Requisio Servidor

Resposta

Fornece servio Tempo

Arquitetura de Sistemas Centralizadas


A comunicao entre um cliente e um servidor pode ser implementada por meio de um protocolo simples sem conexo quando a rede subjacente for razoavelmente confivel, como acontece em muitas redes locais. Nesses casos, quando um cliente requisita um servio, ele simplesmente empacota uma mensagem para o servidor, identificando o servio que quer, junto com os dados de entrada necessrios. Ento a mensagem enviada ao servidor. Por sua vez, o servidor sempre vais esperar pela chegada de uma requisio e, em seguida, a processar e empacotar os resultados em uma mensagem de resposta que enviada a cliente.

Arquiteturas de Sistemas Descentralizadas


Arquiteturas cliente-servidor multidivididas so uma conseqncia direta da diviso de aplicaes em uma interface de usurio em componentes de processamento e em um nvel de dados. As diferentes divises correspondem diretamente organizao lgica das aplicaes. Em muitos ambientes de negcios, processamento distribudo equivale a organizar uma aplicao cliente-servidor como uma arquitetura multidivididas. Esse tipo de distribuio denominado distribuio vertical, seu aspecto caracterstico que ela obtida ao se colocar componentes logicamente diferentes em mquinas diferentes. O termo est relacionado ao conceito de fragmentao vertical como utilizada em banco de dados relacionais distribudos, nos quais significa que as tabelas so subdivididas em colunas e, na seqncia, distribuda por vrias mquinas.

Arquiteturas de Sistemas Descentralizadas


Da perspectiva de gerenciamento de sistema, ter uma distribuio vertical pode ajudar: funes so subdivididas lgica e fisicamente por vrias mquinas, e cada mquina projetada para um grupo especfico de funes. Contudo, a distribuio vertical apenas um dos modos de organizar aplicaes cliente-servidor. Em arquiteturas modernas, muitas vezes a distribuio dos clientes e dos servidores que conta, qual nos referimos como distribuio horizontal. Nesse tipo de distribuio, um cliente ou servidor pode ser fisicamente subdividido em partes logicamente equivalentes, mas cada parte est operando em sua prpria poro do conjunto completo de dados, o que equilibra a carga (peerto-peer).

Arquiteturas de Sistemas Descentralizadas


De uma perspectiva de alto nvel, os processos que constituem um sistema peer-to-peer so todos iguais, o que significa que as funes que precisam ser realizadas so representadas por todo processo que constitui o sistema distribudo. Como conseqncia, grande parte de interao entre processos simtrica: cada processo agir como um cliente e um servidor ao mesmo tempo.

Arquiteturas de Sistemas Descentralizadas


Dado esse comportamento simtrico, arquiteturas peer-to-peer se desenvolvem em torno da questo de como organizar os processos em uma rede de sobreposio, isto , uma rede na qual os ns so formados pelos processos e os enlaces representam os canais de comunicao possvel.

Arquiteturas versus Middleware


O middleware forma uma camada entre aplicaes e plataformas distribudas. Uma finalidade importante proporcionar um grau de transparncia de distribuio, isto , ocultar das aplicaes, at certo ponto, a distribuio de dados, processamento e controle. O que se v comumente na prtica que, na realidade, sistemas de middleware seguem um estilo arquitetnico especfico. Por exemplo: muitas solues de middleware adotaram um estilo arquitetnico baseado em objetos, como o CORBA, outros, seguem o estilo baseado em eventos.

Arquiteturas versus Middleware


Moldar o middleware de acordo com um estilo arquitetnico especfico tem como benefcio a simplificao do projeto de aplicaes. Contudo uma bvia desvantagem que o middleware pode no mais ser o ideal para aquilo que um desenvolvedor de aplicao tinha em mente. No incio, CORBA oferecia somente objetos que podiam ser invocados por clientes remotos. Mais tarde, considerou-se que ter somente essa forma de interao era demasiadamente restritivo, portanto foram adicionados outros padres de interao como passagem de mensagens entre outros.

Arquiteturas versus Middleware


Alm disso, embora a inteno do middleware seja proporcionar transparncia de distribuio, o pensamento geral que solues especficas deveriam ser adaptveis a requisitos de aplicao. Uma soluo para esse problema fazer vrias verses de um sistema middleware no qual cada verso seja projetada para uma classe especfica. Uma abordagem em geral considerada melhor fazer sistemas de middleware de modo que sejam simples de configurar, adaptar e personalizar conforme necessrio para uma aplicao.

Arquiteturas versus Middleware Interceptadores


Um interceptador nada mais do que um constructo de software que interromper o fluxo de controle usual e permitir que seja executado um outro cdigo (especfico de aplicao). Fazer com que interceptadores sejam genricos pode exigir esforo substancial de implementao, e no fica claro se, em tais casos, a generalidade seria prefervel simplicidade e aplicabilidade restrita. oferecida ao objeto A uma interface local que exatamente a mesma oferecida pelo objeto B. A simplesmente chama o mtodo disponvel naquela interface. A chamada por A transformada em uma invocao a objeto genrico, possibilitada por meio de uma interface geral de invocao de objeto oferecida pelo middleware na mquina em que A reside. Por fim, a invocao a objeto genrico transformada em uma mensagem que enviada por meio de uma interface de rede de nvel de transporte como oferecida pelo sistema operacional local de A.

Arquiteturas versus Middleware Interceptadores


Aplicao cliente B.faz-alguma-coisa(valor) Apndice de aplicao Interceptador de nvel de requisio Chamada interceptada Chamada no interceptada

Middleware objeto Interceptador de nvel de mensagem send (B, faz-alguma-coisa(valor) S.O. local Para objeto B

Arquiteturas versus Middleware Interceptadores


O que os interceptadores realmente oferecem um meio de adaptar o middleware. A necessidade de adaptao resulta do fato de que o ambiente no qual as aplicaes distribudas so executadas est sempre mudando. As mudanas incluem as resultantes da mobilidade, uma forte varincia na qualidade de servio de redes, hardware defeituoso e esgotamento de bateria. Em vez de fazer com que as aplicaes sejam responsveis por reagir mudana, essa tarefa colocada no middleware.

You might also like