Buscar

DP - Sistemas Distribuidos

Prévia do material em texto

FIZO – Faculdade Integração Zona Oeste
SISTEMAS DISTRIBUÍDOS
TRABALHO DE DEPENDÊNCIA
FIZO – Faculdade Integração Zona Oeste
SISTEMAS DISTRIBUÍDOS
TRABALHO DE DEPENDÊNCIA
Curso: Redes de Computadores
Professor responsável: Antonio José Torreira de Matos
Aluno: Samuel Lopes
SUMÁRIO
Prefácio xi
1 Introdução 4
2 O Sistema Distribuído 5
3 Suas Características 6
 4 Arquitetura e Aspectos Operacionais 8
	4.1 Middleware com Base em Documentos 8
	4.2 Middleware baseado no sistema de arquivos 9
		4.2.1 Modelo Transferência 9
		4.2.2 Hierarquia de Diretórios 9
		4.2.3 Transparência de Nomeação 9
		4.2.4 Semântica do Compartilhamento de Arquivos 10
		4.2.5 AFS 10
	 4.3 Middleware baseado em Objetos Compartilhados 10
	4.4 Middleware com base em coordenação 10
		4.4.1 LINDA 10
		4.4.2 Publica/Inscreve 10
		4.4.3 JINI 11
5 Bancos de Dados Distribuídos 12
	5.1 CORBA 12
6 Bibliografia 14
- INTRODUÇÃO
Um Sistema Distribuído consiste de diversas camadas, protocolos específicos entre outras especialidades. Iremos discutir o funcionamento de um Sistema Distribuído, dando ênfase as suas qualidades e também mostrando as desvantagens em certos pontos. Sistemas Distribuídos na maioria das vezes são usados por todos os usuários do mundo que acessam, por exemplo, a internet, só que é invisível a olho nu e poucos sabem o que é ou o que estão acessando. Iremos aqui mostrar o funcionamento de uma boa parte desses sistemas e suas características. 
Um Sistema Distribuído trabalha com um modelo de referência para interconexão de sistemas abertos, modelo OSI, desenvolvido pela International Standards Organization, a ISO. Esse modelo é composto de 7 camadas, são elas: Camada Física, Camada de Enlace de Dados, Camada de Rede, Camada de Transporte, Camada de Sessão, Camada de Apresentação e a Camada de Aplicação. Esse modelo foi desenvolvido para facilitar o entendimento do tráfego de um dado, pois vendo pelo modelo e seguindo a ordem das camadas, podemos facilmente analisar o pacote, pois ele entra na camada Física e vai sendo “processado” até a camada de Aplicação.
Trabalhando especificamente em um Sistema Distribuído podemos dizer que o mesmo se define em 3 camadas, são elas: Camada Cliente, Camada Middleware e Camada Servidor. Simplificando podemos dizer que funciona assim, o Cliente pede a informação ao Servidor e essa conexão entre ambos é “mediada” pelo Middleware. Aqui dei um exemplo muito básico do que iremos ver no decorrer deste trabalho. Mas tudo isso será abordado de forma mais clara e objetiva no decorrer deste trabalho.
O Banco de Dados Distribuído também será abordado aqui, mostrando o funcionamento, sua história, seus prós e contras e etc.
2 - O SISTEMA DISTRIBUIDO
Um Sistema Distribuído é um conjunto de sistemas aonde diversos usuários acessam seus recursos através de um único “caminho”, tornando-se assim, um sistema só perante os olhos de quem o acessa. Um Sistema Distribuído pode também, ser composto por diversos computadores, sendo visto como um só para o usuário final. Podemos ter um sistema distribuído entre diversos computadores, aonde esses computadores têm cada um o seu papel fundamental para o funcionamento do sistema, compartilhando acessos, bancos de dados, balanceando a carga de acesso e transferência dos dados acessados e etc.
O Sistema Distribuído funciona como Cliente-Servidor, ou seja, o computador que acessa é o cliente, cliente das informações, e o computador que é acessado é o Servidor, servidor das informações.
Como exemplo de um Sistema Distribuído, temos a Internet, onde todos os usuários do mundo que acessam a WEB são clientes, que acessam diversos sistemas que são distribuídos por servidores. Esses servidores contém sites, programas, arquivos e etc que distribuem o seu conteúdo, suas informações com quem os acessa.
3 - SUAS CARACTERÍSTICAS
Um Sistema Distribuído tem diversas facilidades, sendo na maioria das vezes transparentes para o usuário do mesmo. Ou seja, o usuário faz o acesso a diversos módulos, locados em diversos servidores, mas só o faz por um único caminho. Pode ser um acesso via WEB ou até mesmo um programa, o usuário acessa o caminho que deseja e por ele se abrem diversas telas do sistema, essas telas são diferentes módulos alocados em diversos servidores, mas para o usuário é somente uma tela, cada informação fica armazenada em um servidor, um banco de dados por exemplo. Geralmente o banco de dados fica em um servidor, ou mais de um, dedicado somente ao seu funcionamento, mas o usuário quando acessa um determinado site e faz uma consulta não percebe esse detalhe.
Podemos citar algumas características básicas de um Sistema Distribuído(cliente-servidor), essas características são:
Um acesso remoto a um determinado servidor faz com o que o mesmo seja acessado, mas mesmo assim não pare de executar outros processos locais;
 Ao se estabelecer uma conexão é aberta uma sessão para o usuário que esta realizando a conexão, mas é invisível para o usuário;
O sistema mesmo sendo acessado em um servidor é processado localmente, ou seja, no computador do próprio usuário;
Pode-se acessar diversos serviços, mas em servidores diferentes;
É simples de ser manuseado pelo usuário, não exigindo um hardware especial e nem mesmo um sistema operacional avançado;
No servidor o programa é orientado especialmente para receber diversos acessos ao mesmo tempo;
Quando é feito o pedido de conexão o sistema inicializa automaticamente e continua sendo executado ao longo de diversas sessões;
O sistema é compartilhado no seu servidor para que diversos acessos sejam permitidos;
O servidor se comporta de modo passivo pelas conexões;
O servidor oferece um único serviço a diversos usuários;
O servidor, diferente do computador do usuário, exige um hardware especial e um sistema operacional avançado.
Quando falamos em servidor, não estamos falando exatamente de uma máquina, mas sim de um programa que serve os dados. Quando falamos de uma maquina com classe/potencial de servidor estamos falando de um computador que tem as exigências mínimas de memória, armazenamento, processamento e etc para armazenar um programa servidor. 
Um Sistema-Distribuído(cliente-servidor) tem suas vantagens, tais como:
Vantagenseconômicas, pois ao invés de termos um supercomputador podemos ter varias maquinas mais baratas e logo mais processadores;
Tolerância a falhas, pois tendo vários computador caso um apresente um mal funcionamento os outros podem assumir o seu serviço momentaneamente;
Pode ser facilmente incrementado novos computadores para aumentar o desempenho;
Flexibilidade, pois mesmo que não tenhamos em mente o ganho de desempenho, é melhor do que termos sistemas isolados;
Desvantagens;
São poucos os softwares de alto nível disponível para sistemas distribuídos;
A segurança jamais é 100%, facilitando os acessos indevidos;
É necessária uma rede que atenda as exigências do programa, o que nem sempre ocorre.
Analisando as vantagens e desvantagens citadas acima podemos perceber que para o bom funcionamento de um Sistema Distribuído temos que ter uma certa qualidade na nossa rede, seja interna(LAN) ou externa(internet). Mas também podemos perceber que não necessariamente há a necessidade de supercomputadores, mas sim de alguns bons(e baratos) computadores com um bom processamento.
4 - ARQUITETURA E ASPECTOS OPERACIONAIS
O que permite a um Sistema Distribuído conseguir uniformidade na presença de diferentes hardwares e sistemas operacionais é ter uma camada de software no topo do sistema operacional,ou seja, o Middleware é desenvolvido pelo próprio “programador”, então ele funciona de acordo com o sistema operacional e o banco de dados usado, por ele ser algo a parte do “sistema cliente”e do “sistema servidor” o chamamos de “camada”, mas isso é interpretativo, pois pode-se chamar de apenas Sistema ou de outro nome, mas aqui iremos estudar o middleware como se o mesmo fosse uma camada. O middleware é usado para isolar programas de aplicação dos detalhes da rede de banda larga subjacente. O Middleware equivale às camadas de aplicação, apresentação e sessão do modelo de camadas da Open Systems Interconnect (OSI). O Middleware é utilizado para isolar programas de aplicação dos detalhes do hardware subjacente e para facilitar seu desenvolvimento e distribuição transparente.
O middleware tem diversas camadas, agora iremos abordar algumas delas.
4.1 -MIDDLEWARE COM BASE EM DOCUMENTOS
Essa camada do middleware tem como base o acesso a documentos. Como exemplo, podemos citar a internet. A internet nada mais é que um acesso cliente-servidor, aonde o usuário ao acessar faz o papel de cliente e as páginas acessadas ou sites são os servidores. Ao clicar em uma pagina estamos fazendo um pedido de acesso a um determinado arquivo, o mesmo é encontrado no servidor e exibido na tela do computador, estamos assim usando um sistema distribuído cliente-servidor com base em documentos. Para que esse acesso via WEB se complete existem passos a serem seguidos, que são:
O navegador da internet pergunta ao DNS pelo determinado endereço IP;
O DNS verifica em seu banco de dados e fornece ao navegador o endereço IP solicitado;
É estabelecida uma conexão TCP com a porta 80 no endereço fornecido;
O computador envia uma requisição ao servidor WEB, perguntado pelo arquivo que deseja ser aberto;
O servidor WEB envia o arquivo para o computador;
A conexão TCP é liberada;
O navegador exibe na tela o arquivo solicitado e enviado pelo servidor WEB;
O navegador verifica a existência de imagens no arquivo e as exibe.
Esse foi um exemplo básico da base que forma o acesso a WEB, genericamente esse é o padrão usado. 
4.2 - MIDDLEWARE BASEADO NO SISTEMA DE ARQUIVOS
Usemos como exemplo aqui um modelo de sistema de arquivos para um sistema distribuído, isso significa que existe um único sistema de arquivos global, que é acessado por usuários do mundo todo, sendo possível ler e escrever em arquivos para os quais tenham autorização. A comunicação é realizada quando um processo escreve dados em um arquivo e o outro lê os mesmos dados de volta.
4.2.1 – MODELO DE TRANSFERÊNCIA
No Modelo de Transferência a primeira questão é sobre o modelo upload/download e o modelo de acesso remoto. No modelo upload/download o arquivo é copiado do servidor para o computador e acessado localmente. Ao fim do acesso o arquivo é colocado de volta no servidor. Já no modelo de acesso remoto o computador estabelece uma conexão com o servidor e acessa o arquivo por meio de uma sessão, ou seja, o arquivo é alterado diretamente no servidor e não localmente por meio de comandos. Quando alteramos o arquivo localmente temos a vantagem da eficiência, porém temos que ter espaço para armazenamento do mesmo, quando não há espaço em disco suficiente para o armazenamento é necessário que se faça a transferência por acesso remoto, mas caso o servidor seja somente para acesso remoto e vários usuários estejam acessando ele naquele o momento teremos problema na consistência dos dados.
4.2.2 – HIERARQUIA DE DIRETÓRIOS
Sobre a Hierarquia de Diretórios podemos dizer que nem tudo que um usuário vê o outro necessariamente ira ver da mesma maneira. Quando temos sistema que gerenciam múltiplos servidores de arquivos usamos o Remote Mounting(Montagem Remota), ele é flexível e direto para implementar, mas não faz com que o sistema se comporte como um único sistema de tempo compartilhado tradicional, quando em um sistema de tempo compartilhado tradicional, o sistema de arquivos para o mesmo para qualquer processo, o que o torna mais fácil de programar e compreender.
4.2.3 – TRANPARÊNCIA DE NOMEAÇÃO
Na Transparência de Nomeação temos a seguinte situação, temos um arquivo locado no servidor1/sistemasdistribuidos/dp esse caminho nos mostra que o arquivo dp esta localizado no diretório sistemasdistribuidos dentro do servidor1. Isso nos da uma transparência de localização, mas caso tenhamos um “atalho” para esse arquivo e o mesmo seja movido para um diretório com o mesmo nome porem no servidor2 já não conseguiremos acessá-lo. Isso porque o caminho-raíz não será mais o mesmo. Para corrigirmos isso é muito complicado porem é altamente aceitável, pois facilita a vida dos programadores e usuários.
4.2.4 – SEMÂNTICA DE COMPARTILHAMENTO DE ARQUIVOS
Com a Semântica do Compartilhamento de Arquivos temos que definir critérios de leitura e escrita do arquivo. Pois se um ou mais usuários estiverem acessando o mesmo arquivo ao mesmo tempo teremos divergência na atualização do mesmo, pois ao se alterar um arquivo o mesmo é atualizado(upload/download) e assim o arquivo poderia ser corrompido ou os dados atualizados por um seriam desfeitos caso outro usuário alterasse, esse tipo de acesso se chama semântica de sessão. Temos uma outra solução que é o de bloquear o arquivo para acessos simultâneos, assim quem for acessá-lo depois de ele já estar aberto por outro usuário teria que esperar o fechamento do arquivo pelo outro usuário para poder estar o executando, para isso podemos configurar o servidor para que envie mensagens tanto para quem o esta executando como para quem esta na fila para acesso.
4.2.5 – AFS
O AFS, Andrew File Sistem, tem como objetivo permitir que cada usuário possa acessar o máximo possível de um arquivo localmente evitando ao máximo a interação como restante do sistema.
4.3 - MIDDLEWARE BASEADO EM OBJETOS COMPARTILHADOS
Nesse paradigma usamos objetos ao invés de arquivos ou documentos. Objetos é uma coleção de variáveis empacotadas juntas a procedimentos de acesso, ou métodos. Os processos não acesso diretamente as variáveis, elas precisam de métodos para fazer isso.
Temos alguns métodos, como: CORBA e GLOBO. Mais adiante iremos abordar melhor o funcionamento de cada um deles.
4.4 - MIDDLEWARE COM BASE EM COORDENAÇÃO
4.4.1 - LINDA 
LINDA é um sistema moderno para comunicação e sincronização desenvolvido pela Universidade de Yale, nesse sistema os processos independentes se comunicam através de um espaço de tuplas abstrato. Uma tupla é constituída de um ou mais campos, sendo que cada um é um valor de algum tipo suportado pela linguagem-base. Diferentemente de objetos, as tuplas são dados puros, ou seja,não tem métodos associados.
4.4.2 - PUBLICA/INSCREVE 
Esse modelo foi inspirado no LINDA, ele trabalha com Broadcast aonde cada processo pode ser um produtor ou um consumidor de informação, ou ambos. Quando um produtor de informação tem uma nova informação ele difunde a informação, na forma de tupla, na rede, isso se chama publicação. Cada tupla contem uma linha hierárquica de assuntos com múltiplos campos separados por pontos. Os interessados em certa informação podem se inscrever em determinados assuntos, inclusive usando símbolos na linha de assunto.
4.4.3 - JINI 
O JINI tem como base centralizar a computação, seus dados na rede por meio de um dispositivo especifico e não em computadores. O JINI foi desenvolvido pela Sun Microsystems e sua instalação em rede não é complexo. Um sistema JINI trabalha com sistemas Java e seus códigos em JVM(Java Virtual Machine)
5 - BANCOS DE DADOS DISTRIBUÍDOS
Um importante componente dos sistemas distribuídos é o Banco de dados distribuído pois ele é o responsável pelo armazenamento e recuperação das informações de forma transparente para os clientes. Um banco de dados distribuído, deve ter como características: 
1. Autonomia para transações locais; 
2. Independência em relação a um site central; 
3. Tolerância a falhas (confiabilidade); 
4. Independência de localização; 
5. Independência de fragmentação (se os dados estiverem fragmentados em vários sites, isso deve ser imperceptível ao cliente); 
6. Independência de replicação; 
7. Processamento distribuído das consultas; 
8. Gerenciamento das transações distribuídas (two-phase commit, lock, etc.) 
9. Independência de hardware; 
10. Independência de Sistemas Operacional; 
11. Independência da rede; 
12. Independência do Gerenciador de Banco de Dados. 
Como se pode facilmente notar, é extremamente complexa a construção de Banco de Dados Distribuídos, considerando-se o gerenciamento de tal mistura de plataformas, Sistemas Operacionais, redes, etc. 
5.1 - CORBA
Desde 1989, o OMG (Object Management Group), que é um consórcio com mais de 700 fabricantes de plataforma, vendedores e usuários, vem especificando a arquitetura de um barramento de software, no qual objetos desenvolvidos ou fabricados por fornecedores diferentes, podem interoperar independentemente de Sistema Operacional, rede, plataforma de hardware, etc. Essa especificação tomou o nome de CORBA(Common Object Request Broker Architecture). Essa especificação descreve o que chamamos de barramento de software, o ORB que fornece a infra-estrutura para a computação distribuída. Recentemente, em 1994, o OMG aprovou a especificação CORBA 2.0 que inclui um protocolo de interoperabilidade chamado Internet Inter-Orb Protocol (IIOP). Esse protocolo deve rodar sobre o TCP/IP e é orientado a transações, além de ser escalável e robusto. A indústria tem apontado o IIOP como uma forte tendência para o desenvolvimento futuro de aplicações e produtos ligados à Internet. A especificação CORBA prevê o fornecimento de diversos serviços comuns orientados a objeto: 
1. Serviço de nomes: o que permite que objetos se localizem nas redes pelos nomes; 
2. Serviço de eventos: que permite que os objetos "assinem um canal de eventos" para serem informados de eventos específicos; 
3. Serviço de transações: que disciplina as transações, provendo o two-phase commit entre os objetos; 
4. Serviço de segurança: que provê autenticação, autorização, criptografia e funções de auditoria para proteger os dados e controlar o acesso às aplicações e aos serviços. 
Os serviços da especificação CORBA são fundamentais para muitas aplicações empresariais, especialmente nos tempos atuais em que a economia tende a se globalizar. 
 
6 - BIBLIOGRAFIA
Redes de Computadores e Internet, Douglas E. Comer, Ed. Bookman
Modern Operating Systems, Andrew S. Tanembaum, Ed. Prentice-Hall International
http://www.inf.ufrgs.br/
http://www.forumweb.com.br/foruns/index.php?showtopic=32000&mode=linear
http://www.dimap.ufrn.br/~motta/dim070/Aula03.pdf
http://www.inf.ufpr.br/bmuller/Especializacao/SistDistr-3.pdf
http://www.cin.ufpe.br/SitePesquisa/viewLinha.do;jsessionid=38210A92470879A59CCC564976925A92?id=24&area=6
http://www.lasid.ufba.br/eventos/wola99/resumos
� PAGE \* MERGEFORMAT �6�

Continue navegando