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
![Page 1: Programação de Sistemas Distribuídos - Aula 02](https://reader033.fdocumentos.tips/reader033/viewer/2022051318/588472ae1a28ab5e248b4ddd/html5/thumbnails/1.jpg)
ANHANGUERA – 2016.2
PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOSAULA 02 – INTRODUÇÃO
Prof. Thomás da [email protected]
![Page 2: Programação de Sistemas Distribuídos - Aula 02](https://reader033.fdocumentos.tips/reader033/viewer/2022051318/588472ae1a28ab5e248b4ddd/html5/thumbnails/2.jpg)
PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
INTRODUÇÃO
INTRODUÇÃO
![Page 3: Programação de Sistemas Distribuídos - Aula 02](https://reader033.fdocumentos.tips/reader033/viewer/2022051318/588472ae1a28ab5e248b4ddd/html5/thumbnails/3.jpg)
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
![Page 4: Programação de Sistemas Distribuídos - Aula 02](https://reader033.fdocumentos.tips/reader033/viewer/2022051318/588472ae1a28ab5e248b4ddd/html5/thumbnails/4.jpg)
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
![Page 5: Programação de Sistemas Distribuídos - Aula 02](https://reader033.fdocumentos.tips/reader033/viewer/2022051318/588472ae1a28ab5e248b4ddd/html5/thumbnails/5.jpg)
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
![Page 6: Programação de Sistemas Distribuídos - Aula 02](https://reader033.fdocumentos.tips/reader033/viewer/2022051318/588472ae1a28ab5e248b4ddd/html5/thumbnails/6.jpg)
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
![Page 7: Programação de Sistemas Distribuídos - Aula 02](https://reader033.fdocumentos.tips/reader033/viewer/2022051318/588472ae1a28ab5e248b4ddd/html5/thumbnails/7.jpg)
PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
Sistema Distribuído
INTRODUÇÃO
![Page 8: Programação de Sistemas Distribuídos - Aula 02](https://reader033.fdocumentos.tips/reader033/viewer/2022051318/588472ae1a28ab5e248b4ddd/html5/thumbnails/8.jpg)
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
![Page 9: Programação de Sistemas Distribuídos - Aula 02](https://reader033.fdocumentos.tips/reader033/viewer/2022051318/588472ae1a28ab5e248b4ddd/html5/thumbnails/9.jpg)
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
![Page 10: Programação de Sistemas Distribuídos - Aula 02](https://reader033.fdocumentos.tips/reader033/viewer/2022051318/588472ae1a28ab5e248b4ddd/html5/thumbnails/10.jpg)
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
![Page 11: Programação de Sistemas Distribuídos - Aula 02](https://reader033.fdocumentos.tips/reader033/viewer/2022051318/588472ae1a28ab5e248b4ddd/html5/thumbnails/11.jpg)
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
![Page 12: Programação de Sistemas Distribuídos - Aula 02](https://reader033.fdocumentos.tips/reader033/viewer/2022051318/588472ae1a28ab5e248b4ddd/html5/thumbnails/12.jpg)
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
![Page 13: Programação de Sistemas Distribuídos - Aula 02](https://reader033.fdocumentos.tips/reader033/viewer/2022051318/588472ae1a28ab5e248b4ddd/html5/thumbnails/13.jpg)
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.
![Page 14: Programação de Sistemas Distribuídos - Aula 02](https://reader033.fdocumentos.tips/reader033/viewer/2022051318/588472ae1a28ab5e248b4ddd/html5/thumbnails/14.jpg)
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
![Page 15: Programação de Sistemas Distribuídos - Aula 02](https://reader033.fdocumentos.tips/reader033/viewer/2022051318/588472ae1a28ab5e248b4ddd/html5/thumbnails/15.jpg)
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.
![Page 16: Programação de Sistemas Distribuídos - Aula 02](https://reader033.fdocumentos.tips/reader033/viewer/2022051318/588472ae1a28ab5e248b4ddd/html5/thumbnails/16.jpg)
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.
![Page 17: Programação de Sistemas Distribuídos - Aula 02](https://reader033.fdocumentos.tips/reader033/viewer/2022051318/588472ae1a28ab5e248b4ddd/html5/thumbnails/17.jpg)
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.
![Page 18: Programação de Sistemas Distribuídos - Aula 02](https://reader033.fdocumentos.tips/reader033/viewer/2022051318/588472ae1a28ab5e248b4ddd/html5/thumbnails/18.jpg)
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.
![Page 19: Programação de Sistemas Distribuídos - Aula 02](https://reader033.fdocumentos.tips/reader033/viewer/2022051318/588472ae1a28ab5e248b4ddd/html5/thumbnails/19.jpg)
PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
SISTEMAS EMPRESARIAIS
INTRODUÇÃO
![Page 20: Programação de Sistemas Distribuídos - Aula 02](https://reader033.fdocumentos.tips/reader033/viewer/2022051318/588472ae1a28ab5e248b4ddd/html5/thumbnails/20.jpg)
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).
![Page 21: Programação de Sistemas Distribuídos - Aula 02](https://reader033.fdocumentos.tips/reader033/viewer/2022051318/588472ae1a28ab5e248b4ddd/html5/thumbnails/21.jpg)
PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
ESB
INTRODUÇÃO
![Page 22: Programação de Sistemas Distribuídos - Aula 02](https://reader033.fdocumentos.tips/reader033/viewer/2022051318/588472ae1a28ab5e248b4ddd/html5/thumbnails/22.jpg)
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
![Page 23: Programação de Sistemas Distribuídos - Aula 02](https://reader033.fdocumentos.tips/reader033/viewer/2022051318/588472ae1a28ab5e248b4ddd/html5/thumbnails/23.jpg)
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
![Page 24: Programação de Sistemas Distribuídos - Aula 02](https://reader033.fdocumentos.tips/reader033/viewer/2022051318/588472ae1a28ab5e248b4ddd/html5/thumbnails/24.jpg)
PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
Integração de Aplicações Empresariais
INTRODUÇÃO
![Page 25: Programação de Sistemas Distribuídos - Aula 02](https://reader033.fdocumentos.tips/reader033/viewer/2022051318/588472ae1a28ab5e248b4ddd/html5/thumbnails/25.jpg)
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
![Page 26: Programação de Sistemas Distribuídos - Aula 02](https://reader033.fdocumentos.tips/reader033/viewer/2022051318/588472ae1a28ab5e248b4ddd/html5/thumbnails/26.jpg)
PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
Integração de Aplicações Empresariais
INTRODUÇÃO
![Page 27: Programação de Sistemas Distribuídos - Aula 02](https://reader033.fdocumentos.tips/reader033/viewer/2022051318/588472ae1a28ab5e248b4ddd/html5/thumbnails/27.jpg)
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
![Page 28: Programação de Sistemas Distribuídos - Aula 02](https://reader033.fdocumentos.tips/reader033/viewer/2022051318/588472ae1a28ab5e248b4ddd/html5/thumbnails/28.jpg)
PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
Integração de Aplicações Empresariais
INTRODUÇÃO
![Page 29: Programação de Sistemas Distribuídos - Aula 02](https://reader033.fdocumentos.tips/reader033/viewer/2022051318/588472ae1a28ab5e248b4ddd/html5/thumbnails/29.jpg)
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
![Page 30: Programação de Sistemas Distribuídos - Aula 02](https://reader033.fdocumentos.tips/reader033/viewer/2022051318/588472ae1a28ab5e248b4ddd/html5/thumbnails/30.jpg)
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.
![Page 31: Programação de Sistemas Distribuídos - Aula 02](https://reader033.fdocumentos.tips/reader033/viewer/2022051318/588472ae1a28ab5e248b4ddd/html5/thumbnails/31.jpg)
Obrigado !!!
ANHANGUERA – 2016.2