Você está na página 1de 12

3o Grupo

Mildo Álvaro
Orisvaldo Pontazia
Sualé Mussa
Vieira Baptista

Licenciatura em Informática
Tipos de Arquitectura dos Sistemas Distribuídos
4o Ano

Universidade Licungo
Quelimane
2021
3o Grupo
Mildo Álvaro
OrisvaldoPontazia
SualéMussa
Vieira Baptista

Licenciatura em Informática
Tipos de Arquitectura dos Sistemas Distribuídos
4o Ano

Trabalho de carácter avaliativo a


ser entregue no Departamento de
Ciências e Tecnologias, na cadeira
de Sistemas Distribuídos,
leccionada pelo,

Dr. Armando Cherequejanhe

Universidade Licungo
Quelimane
2022
Índice
1. Introdução............................................................................................................................4

2. Tipos de Arquitecturas dos Sistemas Distribuídos..............................................................5

2.1. Arquitecturas Centralizadas.........................................................................................5

2.1.1. Camadas de aplicação...........................................................................................6

2.1.2. Arquitecturas multidivididas.................................................................................7

2.2. Arquitectura Descentralizadas......................................................................................7

2.2.1. Arquitecturas peer-to-peer estruturadas................................................................8

2.2.2. Arquitecturas peer-to-peer não estruturadas.........................................................9

2.2.3. Superpares (Superpeers).......................................................................................9

2.3. Arquitectura Híbrida....................................................................................................9

2.3.1. Sistemas de servidor de Borda............................................................................10

2.3.2. Sistemas distribuídos colaborativos....................................................................10

3. Conclusão..........................................................................................................................10

4. Referências Bibliográficas.................................................................................................12
1. Introdução

Os sistemas de computação estão passando por uma revolução. Desde 1945, quando começou
a era moderna dos computadores, até aproximadamente 1985, os computadores eram grandes
e caros. Mesmo os minicomputadores estavam no mínimo dezenas de milhares de dólares
cada. O resultado é que a maioria das organizações tinha apenas alguns poucos computadores
e, na falta de um modo de conectá-los, eles funcionavam independentemente uns dos outros.

Contudo, mais ou menos a partir de meados da década de 1980, dois avanços tecnológicos
começaram a mudar essa situação. O primeiro foi o desenvolvimento de micro –
processadores de grande capacidade. De início, eram máquinas de 8 bits, mas logo se
tornaram comuns CPUs de 16, 32 e 64 bits. Muitas dessas CPUs tinham a capacidade de
computação de um mainframe, isto é, um grande computador central, mas por uma fracção do
preço dele.

A quantidade de melhorias que ocorreu na tecnologia de computadores nos últimos 50 anos é


verdadeiramente assombrosa e totalmente sem precedentes em outros sectores. De uma
máquina que custava dez milhões de dólares e executada uma instrução por segundo,
chegamos a máquinas que custam mil dólares e podem executar um bilhão de instruções por
segundo, um ganho preço/desempenho de 1013. O segundo desenvolvimento foi a invenção de
redes de computadores de alta velocidade. Redes locais, ou LANs (Local-area networks),
permitem que centenas de máquinas localizadas dentro de um edifício sejam conectadas de
modo tal que pequenas quantidades de informação possam ser transferidas entre máquinas em
alguns microssegundos. Maiores quantidades de dados podem ser movimentadas entre
máquinas a taxas de 100 milhões de bits/s. Redes de longa distância, ou WANs (Wide-area
networks), permitem que milhões de máquinas no mundo inteiro se conectem a velocidades
que variam de 64 Kbits/s a gigabits por segundo.

O resultado dessas tecnologias é que, actualmente, não somente é viável, mas também fácil,
montar sistemas de computação compostos por grandes quantidades de computadores
conectados por uma rede de alta velocidade. Esses sistemas costumam ser denominados redes
de computadores ou sistemas distribuídos, em comparação com sistemas centralizados (ou
sistemas monoprocessadores) anteriores, que consistem em um único computador, seus
periféricos e alguns terminais remotos.

4
2. Tipos de Arquitecturas dos Sistemas Distribuídos

Decidir a respeito de componentes de software, sua interacção e sua colaboração leva a um


exemplo de uma arquitectura de software também denominado arquitectura de sistemas
(Bassetal., 2003). As arquitecturas de sistemas distribuídos podem ser: Centralizados,
Descentralizados e por fim os Híbridos.

2.1. Arquitecturas Centralizadas

Arquitecturas centralizadas baseiam-se no modelo de cliente-servidor básico. Apesar da falta


de consenso sobre muitas questões de sistemas distribuídos, há uma delas com a qual muitos
pesquisadores e praticantes concordam: pensar em termos de clientes que requisitam serviços
de servidores nos ajuda a entender a gerenciar a complexibilidade de sistemas distribuídos.

No modelo cliente-servidor básico, processos em um sistema distribuído são divididos em


dois grupos, com possível sobreposição. Um servidor é um processo que implementa um
serviço específico por exemplo, um serviço de sistema de arquivo ou um serviço de banco de
dados.

Um cliente é um processo de requisita um serviço de um servidor enviando-lhe uma


requisição e, na sequência, esperando pela resposta do servidor. Essa interacção cliente-
servidor, também conhecida como comportamento de requisição-resposta.

A comunicação entre um cliente e um servidor pode ser implementada por meio de um


protocolo simples sem conexão quando a rede subjacente for razoavelmente confiável, como
acontece em muitas redes locais. Nesses casos, quando um cliente requisita u serviço, ele
simplesmente empacota uma mensagem para o servidor, identificando o serviço que quer,
junto com os dados de entrada necessários. Então a mensagem é enviada ao servidor. Por sua

5
vez, o servidor sempre vai esperar pela chegada de uma requisição e, em seguida, a proseará e
empacotará os resultados em uma mensagem de resposta que é enviada ao cliente.

Usar um protocolo sem conexão tem a óbvia vantagem e eficiência. Contanto que as
mensagens não se percam nem sejam corrompidas. De uma forma geral, o servidor usa a
mesma conexão para enviar a mensagem de resposta, após o que a conexão é encerrada. O
problema é que estabelecer e encerrar uma conexão custa relativamente caro, em especial
quando as mensagens de requisição e resposta forem pequenas.

2.1.1. Camadas de aplicação

Normalmente possui certas camadas que comunicam-se umas com as outras. Considerando
muitas aplicações e a sua escalabilidade:

 Nível de Interface de Usuário


 Nível de Processamento
 Nível de Dados

No nível de interface do usuário contém tudo que é necessário para fazer interface
directamente com o usuário, como gerenciamento de exibição. O nível de processamento
normalmente contém as aplicações. O nível de dados gerência os dados propriamente ditos
sobre os quais está sendo executada alguma acção. Em geral, clientes implementam o nível de
interface de usuário. Esse nível consiste em programas que permitam aos usuários finais
interagir com aplicações. Há considerável diferença entre os níveis de sofisticação de
programas de interface de usuário.

O programa de interface de usuário mais simples nada mais é do que uma tela baseada em
caracteres.A interface normalmente é usada em ambientes de mainframe. Nos casos em que o
mainframe controla toda a interacção, incluindo teclados e monitor, mal podemos falar em
ambiente cliente servidor. O terminal de usuário realiza algum processamento local, como
acoar teclas accionadas ou suportar interfaces do tipo formulário nas quais deve-se editar uma
entrada completa antes de enviá-la ao computador principal.

A máquina cliente oferece no mínimo um visor gráfico no qual são usados menus pop-up ou
pull-down com controles de tela, muitos dos quais manipulados por meio de um mousse em
vez de pelo teclado. Entre os exemplos típicos dessas interfaces estão as interfaces X-

6
Windows utilizadas em ambientes Unix e interfaces mais antigas desenvolvidas para PCs MS-
DOS e Macintoshes da Apple.

Interfaces de usuários modernos oferecem consideravelmente mais funcionalidade,


permitindo que aplicações compartilhem uma única janela gráfica e usem essa janela para
permutar dados por meio de acções de usuários. Um dos exemplos é: para apagar um arquivo,
emgeral é possível arrastar o ícone que representa esse arquivo até um ícone que representa
uma lata de lixo. Da mesma maneira. Muitos editores de texto permitem a um usuário
transferir texto de um documento para uma outra posição usando apenas o mouse.

Muitas aplicações cliente-servidor podem ser construídas de acordo com três partes
diferentes: uma parte que manipula a interacção com o usuário, uma parte que age sobre um
banco de dados ou sistema de arquivos e uma parte intermediaria que, em geral, contém
funcionalidade central de uma aplicação. Essa parte intermediáriaestá localizada logicamente
no nível de processamento. Ao contrário de interfaces de usuário e banco de dados, não há
muitos aspectos comuns no nível de processamento.

2.1.2. Arquitecturas multidivididas

A distinção entre três níveis lógicas, sugere várias possibilidades para a distribuição física de
uma aplicação cliente-servidor por várias máquinas. A organização mais simples é ter só dois
tipos de máquinas:

 Uma máquina cliente que contém apenas os programas que implementam o nível
(parte do nível) de interface de usuário.
 Uma máquina do servidor que contém o resto, ou seja, os programas que
implementam o nível de processo e de dados.

Nessa organização, tudo é manipulado pelo servidor, ao passo que, em essência, o cliente
nada mais é do que um terminal burro, possivelmente com uma interface gráfica bonita.

2.2. Arquitectura Descentralizadas

Arquitecturas cliente-servidor multidivididas são uma consequência directa da divisão de


aplicações em uma interface de usuário em componentes de processamento e em um nível de
dados. As diferentes divisões correspondem directamente à organização lógica das aplicações.
Em muitos ambientes de negócios, processamento distribuído equivale a organizar uma
aplicação cliente-servidor como uma arquitectura muitidivididas. Este tipo de distribuição é
7
denominado distribuição vertical. O aspecto característico da distribuição vertical é que ela é
obtida ao se colocar componentes logicamente diferentes em máquinas diferentes. O termo
está relacionado ao conceito de fragmentação vertical como utlizada em bancos de dados
relacionais distribuídos, nos quais significa que as tabelas são subdivididas em colunas e, na
sequência, distribuídas por várias máquinas (Oszu e Valduriez, 1999).

Na perspectiva de gerenciamento de sistema, ter uma distribuição vertical pode ajudar:


funções são subdivididas lógica e fisicamente por várias máquinas, e cada máquina é
projectada para um grupo específico de funções. Contudo, a distribuição vertical é apenas
um dos modos de organizar aplicações cliente-servidor. Em arquitecturas modernas,
muitas vezes é a distribuição dos clientes e dos servidores que conta, utilizando a
distribuição horizontal.

Neste tipo de distribuição, um cliente ou servidor pode ser fisicamente subdividido em


partes logicamente equivalentes, mas cada parte está operando em sua própria porção do
conjunto completo de dados, o que equilibra a carga. De uma perspectiva de alto nível, os
processos que constituem um sistema peer-to-peer são todos iguais, o que significa que as
funções que precisam ser realizadas são representadas por todo processo que constitui o
sistema distribuído. Como consequência, grande parte da interacção entre processos é
simétrico: cada processo agirá como um cliente e um servidor ao mesmo tempo (o que
também se denomina agir como servente).

Dado esse comportamento simétrico, arquitecturas peer-to-peer se desenvolvem em torno


da questão de como organizar os processos em uma rede de sobreposição, isto é, uma rede
na qual osnós são formados pelos processos e os enlaces representam os canais de
comunicação possíveis (que usualmente são realizados como conexões TCP). Em geral,
um processo não pode se comunicar directamente com outro processo arbitrário, mas deve
enviar mensagens por meio dos canais de comunicação disponíveis.

2.2.1. Arquitecturas peer-to-peer estruturadas

Em uma arquitectura peer-to-peer estruturada, a rede de sobreposição é construída com a


utilização de um procedimento determinístico. O procedimento mais usado é, de longe,
organizar os processos por meio de uma tabela de hash distribuída (DistriibutedHashTable -
DHT). Em um sistema baseado em DHT, os itens de dados recebem uma chave aleatória,
como umidentificador de 128 bits ou 160 bits, de um grande espaço de identificadores. Da
8
mesma maneira, os nós do sistemas também recebem um número aleatório do mesmo espaço
de identificadores. Portanto, o ponto crucial de todo sistema baseado em DHT é implementar
um esquema eficiente e determinístico que mapeie exclusivamente a chave de um item de
dado para o identificador de um nó tendo como base somente alguma distância métrica
(Balakrishnametal., 2003). O mais importante é que, ao consultar um item de dado, o
endereço de rede do nó responsável por aquele dado, o endereço de rede do nó responsável
por aquele item de dado é retornado. Isso se consegue roteando uma requisição para um item
de dado até o nó responsável.

2.2.2. Arquitecturas peer-to-peer não estruturadas

Sitemaspeer-to-peer não estruturados dependem, em grande parte, de algoritmos aleatórios


para construir uma rede de sobreposição. A ideia principal é que cada nó mantenha uma lista
de vizinhos, mas que essa lista seja construída de modo mais ou menos aleatórios. Da mesma
maneira, admite-se que itens de dados sejam colocados aleatoriamente em nós. Por
consequência, quando u nó precisa localizar um item de dado específico, a única coisa que ele
efectivamente pode fazer é inundar rede com uma consulta de busca (Risson e Moors, 2006).

Uma das metas de muitos sistemaspeer-to-peer não estruturados é construir uma rede de
sobreposição parecida com um gráfico aleatório. O modelo básico é que cada nó mantenha
uma lista de c vizinhos na qual, de preferência, cada um dos vizinhos represente um nó vivo
escolhido aleatoriamente no conjunto de nós vigente no momento. A lista de vizinhos também
é denominada visão parcial.

2.2.3. Superpares (Superpeers)

Deve-se notar que localizar itens de dados relevantes em sistemas peer-to-peer não
estruturados pode se tornar problemático à medida que a rede cresce. A razão para esse
problema de escalabilidade é simples: como não há nenhum modo determinístico para rotear
uma requisição de pesquisa até um item de dado específico, em essência, a única técnica à
qual um nó pode recorrer é enviar a requisição a todos os nós. Há outras situações em que é
sensato abandonar a natureza simétrica dos sistemas peer-to-peer.

2.3. Arquitectura Híbrida

Focaliza-se as arquitecturas cliente-servidor e varias arquitecturas peer-to-peer. Muitos


sistemas distribuídos combinam aspectos arquitectónicos.
9
2.3.1. Sistemas de servidor de Borda

Uma classe importante de sistemas distribuídos organizada segundo uma arquitectura híbrida
é formada por sistema de servidor de borda. Esses sistemas são disponibilizados na Internet
onde servidores são colocados “na borda” da rede. Essa borda é formada pela fronteira entre
as redes corporativas e a internet propriamente dita.

2.3.2. Sistemas distribuídos colaborativos

Estruturas híbridas são disponibilizadas notavelmente em sistemas distribuídas colaborativos.


A questão principal em muitos sistemas é conseguir dar a partida, para o que muitas vezes é
disponibilizado em esquema cliente-servidor tradicional. Tão longeum nó se junte ao sistema,
ele pode usar um esquema totalmente descentralizado para colaboração.

10
3. Conclusão

Entende-se um sistema distribuído como um conjunto de computadores independentes que se


apresentam a seus usuários como um sistema único e coerente. Essa definição normalmente
possui aspectos importantes. Um desses aspectos é que um sistema distribuído consiste em
componentes (computadores) autónomos. E o segundo aspecto é que os usuários, sejam
pessoas ou programas, acham que estão tratando com o único sistema.

11
4. Referências Bibliográficas

TANEENBAUM, Andrew S. STEEN, MaartenVan. Sistema Distribuídos: Princípios e


paradigma. 2a. ed. São Paulo. 2007.

BASSL. etal. Software ArchitectureinPratice. Reading, MA: Addision-Wesley, 2. Ed.,2003.

BALAKRISHNAMetal.Lookingup Data in P2P System. Commun. ACM, (46)2:43-48,


Fevereiro 2003.

OSZU, T e VALDURIEZ, P. PrinciplesofDistributedDatabasesSystem. UpperSaddleRiver.


Nj: Prentice Hall, 2. Ed. 1999.

Risson, J e Moors, T.SurveyofReserchtowardsRobustPeer-to-Peer Networks: SerchMethods.


Comp. Netw. (50). 2006.

12

Você também pode gostar