Programação de Sistemas Distribuídos - Aula 02
-
Upload
thomas-da-costa -
Category
Technology
-
view
300 -
download
0
Transcript of Programação de Sistemas Distribuídos - Aula 02
ANHANGUERA – 2016.2
PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOSAULA 02 – INTRODUÇÃO
Prof. Thomás da [email protected]
PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
INTRODUÇÃO
INTRODUÇÃO
PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
• São sistemas construídos em um único bloco ou em uma única unidade. Neste modelo o sistema é escrito como um todo, com isso podemos possuir um único ponto de falha, ou seja, se a aplicação parar de funcionar o sistema todo fica indisponível.
• Nos sistemas monolíticos podemos possuir uma separação lógica interna. No caso da linguagem Java a separação pode ser em pacotes ou em projetos.
• Neste modelo fica difícil a manutenção pois caso seja necessário uma atualização devemos parar o sistema como um todo causando indisponibilidade.
• Para sanar este tipo de problema foi pensando o modelo de sistemas distribuídos.
Sistemas MonolíticosDetalhes:
INTRODUÇÃO
PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
“Um sistema distribuído é um conjunto de computadores independentes que se apresenta a seus usuários como um sistema único e coerente”
Tanenbaum (2007)
Sistema DistribuídoO que é?:
INTRODUÇÃO
PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
Sistema Distribuído
INTRODUÇÃO
1960 - 1980 1980 - 2010 2010 - Atual
Mainframe Computing Client/Server Computing Cloud Computing
PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
• Usuário não tem conhecimento onde o sistema está fisicamente localizado.• Um sistema distribuído possui vários componentes.• Pode rodar em vários computadores em diferentes locais do mundo.• Possui simplicidade em sua escalabilidade• A maioria dos sistemas distribuídos utilizam de máquinas virtuais para
facilitar a instalação, configuração e expansão.• Deve possuir simplicidade em sua escalabilidade.• Além disso um sistema distribuído tem como objetivo compartilhar
recursos.
Sistema DistribuídoDetalhes:
INTRODUÇÃO
PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
Sistema Distribuído
INTRODUÇÃO
PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
• Uma das metas de um sistema distribuído é ser transparente, ocultando processos e recursos.
• Em um sistema distribuído devemos verificar a velocidade de como as informações são replicadas de um local para outro. Por exemplo as informações de um banco de dados.
• Deve possuir um meio de comunicação aberto, ou seja, protocolos de comunicação que são definidos por interfaces conhecido como IDL ou Interface Definition Language.
Sistema DistribuídoDetalhes:
INTRODUÇÃO
PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
Virtualização:• Nos dias atuais a maioria dos sistemas distribuídos utilizam-se de máquinas
virtuais.• As máquinas virtuais tornam a manutenção e a configuração mais simples.
Em alguns provedores a criação dos computadores é através de alguns cliques.
• Empresas pelo mundo utilizam de provedores de serviços virtualizados. O maior deles é a Amazon AWS.
INTRODUÇÃO
Sistema Distribuído
PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
Virtualização:• SaaS – Software as Service
• Aplicativos são oferecidos como serviços na qual o usuário pode utilizar pelo próprio browser sem a necessidade de instalação de algum software. Por exemplo: Gmail, OneDrive e etc.
• PaaS – Plataform as Service• São ferramentas para o uso de desenvolvimento de software. Por
exemplo: banco de dados, servidores de aplicações, servidores web e etc.
• IaaS - Infrastructure as a Service• Tem como principal objetivo oferecer serviços de infraestrutura como
computadores, storage entre outros. Possuem escalabilidade, flexibilidade e disponibilidade em seus serviços.
INTRODUÇÃO
Sistema Distribuído
PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
• Interoperabilidade é uma características essencial dentro de um sistema distribuído que é definido quando dois sistemas de tecnologias diferentes se comunicam de forma transparente.
• Alguns sistemas distribuídos devem possuir portabilidade para rodar em sistemas operacionais diferentes. A tecnologia que possui esse tipo de característica é o Java.
Sistema DistribuídoDetalhes:
INTRODUÇÃO
PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
É quando o sistema possui a característica de se expandir facilmente de acordo com o aumento de carga por ele processado. Por exemplo o aumento de usuários ou o aumento do processamento de uma determinada tarefa.
EscalabilidadeO que é?:
INTRODUÇÃO
PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
EscalabilidadeDetalhes:
INTRODUÇÃO
• Vertical• A expansão do sistema acontece em sua própria unidade de execução.
Por exemplo: expandir a memória de um computador, incluir mais uma instância do software que deve ser escalado.
• Horizontal• A expansão acontece fora de sua unidade de execução. Neste caso
podemos incluir um novo computador para trabalhar em paralelo e distribuir o processamento da unidade de execução original.
PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
É quando um sistema computacional é resistente a possíveis falhas de hardware e de software, mantendo a aplicação ou o conjuntos de aplicações o maior tempo possível online para seus utilizadores.
Alta DisponibilidadeO que é?:
INTRODUÇÃO
PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
Alta DisponibilidadeDetalhes:
INTRODUÇÃO
• Conhecido pela sigla HA (High-Availability).• Para possuir alta disponibilidade é necessário a utilização de mais de um
computador dentro da rede ou mais uma instância do mesmo software.• O sistema computacional deve possuir formas de garantir a disponibilidade
da aplicação caso ocorra uma falha.• Quando acontecer a falha o processamento da informação não pode ser
perdida.
PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
ReplicaçãoDetalhes:
INTRODUÇÃO
• Como em um sistema distribuído trabalhamos com vários computadores ou vários recursos, é necessário que as informações sejam consistentes em cada nó da aplicação.
• Para isso algumas aplicações possuem o processo de replicação de informações de acordo com a quantidade de nós configurados.
• Normalmente é uma configuração da aplicação ou do banco de dados utilizado.
PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
Tipos de Sistemas DistribuídosDetalhes:
INTRODUÇÃO
• Sistemas de computação em cluster:• É um conjunto de hardware e software conectados em uma rede de
alta velocidade para processamento de uma determinada aplicação. Neste formato os computadores do cluster possui o mesmo sistema operacional.
• É muito utilizado para programação em paralelo.• Sistemas de computação em grade:
• É composto por grupos de sistemas distribuídos onde cada um pode ser montado por hardware e softwares diferentes.
• Este modelo possui o formato canônico de trocas de informações.
PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
Cluster
INTRODUÇÃO
Escalabilidade
Desempenho
Disponibilidade
Balanceamento
Sistema de fácil expansão e configuração, tanto verticalmente como horizontalmente.
Possui alta performance para uma grande volume de processamento.
Sistema possui tolerância a falhas no hardware e no software.
Distribui a carga entre os nós dentro de um cluster melhorando o processamento e o acesso dos utilizadores.
PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
SISTEMAS EMPRESARIAIS
INTRODUÇÃO
PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
SOADetalhes:
INTRODUÇÃO
• Conhecido como Service-Oriented Architecture, ou Arquitetura Orientada a Serviços.
• De acordo com o Gartner Group é uma abordagem arquitetural corporativa que permite a criação de serviços de negócios interoperáveis que podem facilmente ser reutilizados e compartilhados dentro das aplicações de uma empresa.
• SOA é um conjunto de conceitos não é uma tecnologia.• Em uma arquitetura SOA os objetos são canônicos.• No modelo de arquitetura SOA existe o conceito do barramento que efetua
a comunicação dos serviços entre aplicações conhecido como ESB (Enterprise Service Bus).
PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
ESB
INTRODUÇÃO
PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
EAIDetalhes:• Conhecido como Enterprise Application Integration ou Integração de
Aplicações Empresariais.• É um conceito caracterizado pela integração de diferentes aplicações
independentes de suas tecnologias.• A integração acontece com as principais aplicações corporativas. Por
exemplo aplicações financeiras, recursos humanos, contas a pagar e receber.
INTRODUÇÃO
PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
Integração de Aplicações EmpresariaisDetalhes:• RPC - Remote Procedure Call ou Chamadas de Procedimento Remoto
• Tem como objetivo executar procedimentos em aplicações remotas localizadas em computadores dentro da mesma rede ou em redes diferentes.
• RMI - Remote Method Invocations ou Invocação de Método Remoto• É semelhante ao RPC mas efetua a execução de um método contido em
um objeto remoto.
• Os dois meios de comunicação são altamente acoplados pois precisam conhecer exatamente como efetuar a referência ao objeto ou aplicação remota.
INTRODUÇÃO
PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
Integração de Aplicações Empresariais
INTRODUÇÃO
PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
Integração de Aplicações EmpresariaisDetalhes:• MOM - Message-oriented Middleware
• Conhecido também como servidores de filas. Neste modelo as aplicações enviam mensagens para uma fila e outros sistemas consomem as mensagens. Este modelo é conhecido também como publicar/subscrever.
• Em Java, a API JMS (Java Mesage Service) efetua operações com servidores de fila.
• Existem vários desenvolvedores de servidores de fila no mercado: Apache ActiveMQ, RabbitMQ, Apache Kafka, IBM MQ entre outros.
INTRODUÇÃO
PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
Integração de Aplicações Empresariais
INTRODUÇÃO
PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
Integração de Aplicações EmpresariaisDetalhes:• WebServices
• É a troca de informações através de um protocolo conhecido como SOAP baseado em XML.
• Muito utilizado em aplicações corporativas e em aplicações que possuem o conceito do SOA.
• REST - Representational State Transfer• É uma forma de integração de sistema baseado no protocolo HTTP e
seus métodos de requisição (POST, PUT, DELETE, GET)• Simplifica a implementação de serviços em comparação com os
WebServices.• Suas informações e identificadores são compostas pelas URL.
INTRODUÇÃO
PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
Integração de Aplicações Empresariais
INTRODUÇÃO
PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
Resumo• Sistemas Monolíticos são construídos em um único bloco possuindo um
único ponto de falha.• Os sistemas distribuídos são transparentes para o usuários e não possuem
um único ponto de falha.• São facilmente escaláveis, possuem alto desempenho e alta disponibilidade.• Existem os sistemas de computação em cluster e em grade.• Algumas tecnologias ajudam a integração de aplicações empresariais como
RPC, RMI, MOM, REST e WebServices.
INTRODUÇÃO
ANHANGUERA – 2016.2
Referências
• TANENBAUM, Andrew S; STEEN, Maarten Van. Sistemas Distribuídos : Princípios e Paradigmas. 2ª ed. São Paulo: Pearson - Prentice Hall, 2008.
Obrigado !!!
ANHANGUERA – 2016.2