Buscar

Arquitetura Cliente Servidor

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

ENGENHARIA DA COMPUTAÇÃO
		
SISTEMAS DISTRIBUÍDOS
Arquitetura Cliente/Servidor
O modelo cliente-servidor (Client/Server Model), em computação, é uma estrutura de aplicação distribuída que distribui as tarefas e cargas de trabalho entre os fornecedores de um recurso ou serviço, designados como servidores, e os requerentes dos serviços, designados como clientes.
Geralmente os clientes e servidores comunicam através de uma rede de computadores em computadores distintos, mas tanto o cliente quanto o servidor podem residir no mesmo computador.
Um servidor é um host que está executando um ou mais serviços ou programas que compartilham recursos com os clientes. Um cliente não compartilha qualquer de seus recursos, mas solicita um conteúdo ou função do servidor. Os clientes iniciam sessões de comunicação com os servidores que aguardam requisições de entrada.
O modelo cliente-servidor foi desenvolvido na Xerox PARC durante os anos 70. Este modelo é actualmente o predominante nas redes informáticas. E-mail, a World Wide Web e redes de impressão são exemplos comuns deste modelo.
Um diagrama de rede de computadores (incluindo dispositivos móveis) de clientes comunicando com um servidor através da Internet. Tanto os clientes como o servidor são os nós (pontos de comunicação) na rede. A organização dos nós de uma rede designa-se por topologia de rede.
Descrição
A característica do modelo cliente-servidor, descreve a relação de programas numa aplicação. O componente de servidor fornece uma função ou serviço a um ou mais clientes, que iniciam os pedidos de serviço.
Funcionalidades como a troca de e-mail, acesso à internet ou acesso a um banco de dados, são construídos com base no modelo cliente-servidor. Por exemplo, um navegador web é um programa cliente, em execução no computador do usuário, que acede às informações armazenadas num servidor web na internet. 
O modelo cliente-servidor, tornou-se uma das ideias centrais de computação de rede. Muitos aplicativos de negócios, escritos hoje, utilizam o modelo cliente-servidor. O termo também tem sido utilizado para distinguir a computação distribuída por computadores dispersos da "computação" monolítica centralizada em mainframe.
Cada instância de software do cliente pode enviar requisições a vários servidores. Por sua vez, os servidores podem aceitar esses pedidos, processá-los e retornar as informações solicitadas para o cliente. Embora este conceito possa ser aplicado por uma variedade de razões e para diversos tipos de aplicações, a arquitetura permanece fundamentalmente a mesma.
Tipos de Modelos Cliente/Servidor
Após vários modelos estudados de cliente-servidor caracterizou-se chamar tecnicamente de arquitetura multicamada, inspirado nas camadas no Modelo OSI, o processo de dividir a arquitetura de cliente-servidor em várias camadas lógicas facilitando o processo de programação distribuída, existe desde o modelo mais simples de duas camadas, e o mais utilizado atualmente que é o modelo de três camadas que é paralelo ao modelo de arquitetura de software denominado MVC (Model-View-Controller).
Características Cliente
Inicia pedidos para servidores;
Espera por respostas;
Recebe respostas;
Conecta-se a um pequeno número de servidores de uma só vez ;
Normalmente interage diretamente com os servidores através de seu software aplicação especifico, que lhe possibilita a comunicação com o servidor;
Utiliza recursos da rede.
Características Servidor
Sempre espera por um pedido de um cliente;
Atende os pedidos e, em seguida, responde aos clientes com os dados solicitados;
Podem se conectar com outros servidores para atender uma solicitação específica do cliente; jamais podem se comunicar.
Fornece recursos de rede.
Normalmente interage diretamente com os usuários finais através de qualquer interface com o usuário
Estrutura o sistema.
Vantagens
Na maioria dos casos, a arquitetura cliente-servidor permite que os papéis e responsabilidades de um sistema de computação possam ser distribuídos entre vários computadores independentes que são conhecidos por si só através de uma rede. Isso cria uma vantagem adicional para essa arquitetura: maior facilidade de manutenção. Por exemplo, é possível substituir, reparar, atualizar ou mesmo realocar um servidor de seus clientes;
 Todos os dados são armazenados nos servidores, que geralmente possuem controles de segurança muito maiores do que a maioria dos clientes. Os servidores podem controlar melhor o acesso a recursos;
Como o armazenamento de dados é centralizado, as atualizações dos dados são muito mais fáceis
 de administrar em comparação com o paradigma P2P. Em uma arquitetura P2P, atualizações de dados podem precisar ser distribuídas e aplicadas a cada nó na rede, o que consome tempo e é passível de erro, já que pode haver milhares ou mesmo milhões de nós
Muitas tecnologias avançadas de cliente-servidor estão disponíveis e foram projetadas para garantir a segurança, facilidade de interface do usuário e facilidade de uso;
Funciona com vários clientes diferentes de capacidades diferentes.
Desvantagens
Clientes podem solicitar serviços, mas não podem oferecê-los para outros clientes, sobrecarregando o servidor, pois quanto mais clientes, mais informações que irão demandar mais banda.
Um servidor poderá ficar sobrecarregado caso receba mais solicitações simultâneas dos clientes do que pode suportar;
Este modelo não possui a robustez de uma rede baseada em P2P. Na arquitetura cliente-servidor, se um servidor crítico falha, os pedidos dos clientes não poderão ser cumpridos. Já nas redes P2P, os recursos são normalmente distribuídos entre vários nós. Mesmo se uma ou mais máquinas falharem no momento de download de um arquivo, por exemplo, as demais ainda terão os dados necessários para completar a referida operação.
Protocolos de transporte e aplicações de rede
Os protocolos do nível de transporte fornecem serviços que garantem uma transferência confiável de dados e aplicativos entre computadores (ou outros equipamentos) remotos. Os programas na camada de aplicação usam os protocolos de transporte para contactar outras aplicações. Para isso, a aplicação interage com o software do protocolo  antes de ser feito o contacto. 
Existem duas formas para que se estabeleça uma ligação cliente-servidor: enquanto uma delas é orientada à conexão, a outra não é. O TCP, por exemplo, é um protocolo de transporte orientado à conexão em que o cliente estabelece uma conexão com o servidor e ambos trocam múltiplas mensagens de tamanhos variados, sendo a aplicação do cliente quem termina a sessão. Já o protocolo UDP não é orientado à conexão, nele o cliente constrói uma mensagem e a envia num pacote UDP para o servidor, que responde sem estabelecer uma conexão permanente com o cliente.
Arquitetura P2P
Introdução
As redes Peer-to-Peer (P2P) atraem muita atenção da comunidade de Rede de computadores, apesar de haver uma discordância à respeito do seu significado. A tecnologia P2P promete alterar o futuro das redes, porém seu conceito já existe há muitos anos. Cresce também as questões de interesse cultural, como no caso do Napster, apesar das políticas de livre arquitetura de rede. Aparentemente esses paradoxos apenas acrescentam mais misticismo que ronda o assunto P2P.
Vantagens
A facilidade na conexão, porque é mínimo o impedimento de conexão que existe para esse tipo de rede, pois sendo diferente de sistemas que são inteiramente centralizados não precisa de uma instalação ou administração específica. Tem um conteúdo diversificado, porque conforme vai aumentando as estações que são ligadas a internet, as redes P2P também vão crescendo e pelo conteúdo que está incluso nelas, os recursos que são compartilhados estão sempre crescendo e se diversificando. Contém segurança no compartilhamento, porque o tipo de rede P2P está menos sujeita a falhas ou erros de compartilhamentos ou ataques intencionais, pois procede de sistemas já distribuídos,
que formam um ambiente para trocas de dados ideais para longo prazo [carece de fontes]. Há confiabilidade na rede, pois se tiver problema em algum peer o sistema não para totalmente, então, fazendo uso de recursos ou conteúdos existentes os demais podem continuar se mantendo atuantes. E a disponibilidade no uso dos recursos: se um peer não estiver fazendo uso de recurso especial, este pode deixar disponível os seus recursos para outros peers e assim aumentar a capacidade no processamento da rede.
Desvantagens
Ocorrer ambiguidade em suas descrições. Algumas das desvantagens são: a redundância, por causa do tamanho das redes não é comum realizar duas buscas e adquirir o mesmo resultado, mas é possível; o tempo de resposta, porque pode variar com o aumento da rede e porque se houver um longo tempo para o retorno, corre o risco de perder a informação buscada; a perda de conteúdo, porque se um peer tem a facilidade de entrar e sair da rede, então, um conteúdo compartilhado pode deixar de existir na rede; e, por fim, o desempenho que é especial para trabalhar com um grande número de peers conectados. Se ocorrer desse número ser baixa a rede perde seu desempenho, porque as buscas e os recursos serão limitados.
Arquitetura de Objetos Distribuídos
Introdução
Na programação distribuída usando a arquitetura cliente-servidor, clientes e servidores podem ser implementados usando qualquer paradigma de programação. Assim, é possível que um serviço específico seja executado por um método de algum objeto. No entanto, mesmo que o cliente também tenha sido desenvolvido orientação a objetos, na comunicação entre o cliente e o servidor esse paradigma deve ser esquecido, devendo ser utilizado algum protocolo pré-estabelecido de troca de mensagens para a solicitação e resposta ao serviço.
O conceito básico que suporta plataformas de objetos distribuídos é o conceito de arquiteturas de objetos. Essencialmente, uma arquitetura orientada a objetos estabelece as regras, diretrizes e convenções definindo como as aplicações podem se comunicar e inter-operar. Dessa forma, o foco da arquitetura não é em como a implementação é realizada, mas sim na infra-estrutura e na interface entre os componentes da arquitetura.
Vantagens
Vários processos podem operar ao mesmo tempo em diferentes computadores na rede. Esses processos podem (mas não precisam) se comunicar uns com os outros durante sua operação normal.
São escalonáveis de modo que as capacidades de um sistema possam ser ampliada pela adição de novos recursos. Na prática, a ligação em rede pode limitar a escalabilidade se muitos computadores forem adicionados.
Permite o compartilhamento de hardware e software, como discos, impressoras, arquivos e compiladores, que estão associados aos diferentes computadores em uma rede.
Sistemas distribuídos são geralmente sistemas abertos, o que significa que são projetados com base em protocolos-padrão que permite a compatibilidade entre diferentes equipamento e softwares.
„ A disponibilidade de muitos computadores e o potencial de duplicação de informações influenciam na tolerância a falhas de hardware e software. Agora, quando a rede falha
Por essas vantagens os sistemas distribuídos substituíram os antigos das décadas de 1980 e 1990.
Desvantagens
São mais complexos que os centralizados. São mais difíceis de se compreender e testar.
O sistema pode ser acessado a partir de vários computadores diferentes, e o tráfego na rede pode estar sujeito a interceptações.
Os computadores podem ser de tipos diferentes e podem operar em versões diferentes de SO . Defeitos em uma máquina podem se propagar a outras máquinas.
„ São imprevisíveis em suas respostas. A resposta depende da carga total do sistema, sua organização e a carga de rede. E isso pode mudar de uma hora para outra.
Referências 
pt.wikipedia.org/wiki/Peer-to-peer
compartilhamentodearquivoss.wordpress.com/category/vantagens-e-desvantagens-do-modelo-p2p/
pt.slideshare.net/DanielArndtAlves/conceitos-basicos-de-objetos-distribuidos
pt.wikipedia.org/wiki/Cliente-servidor

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais