1. Sistemas Distribuídos (SD)
- Thiago Marinho - O que é SD?
- Willian - Vantagens
Vão falar Sobre:
- Gabriel - Desvantagens
- Silvio - IDL Stub/Skeleton
2. O que é Sistema Distribuído?
Conceitos:
“Um sistema distribuído é uma coleção de processadores fracamente
acoplados interconectados por uma rede de comunicação”. Abraham
comunicação”
Silberschatz, Peter Galvin, Greg Gagne, Sistemas Operacionais, Conceitos e Aplicações,
Editora Campus.
"Coleção de computadores independentes que se apresenta ao
usuário como um sistema único e consistente". Andrew Tanenbaum.
“Definimos um sistema distribuído como sendo aquele no qual os
componentes de hardware ou software, localizados em computadores
interligados em rede, se comunicam e coordena suas ações apenas
enviando mensagens entre si”. Coulourus, G.; Dollimore, J.; Kindberg, T. Sistemas
si”
Distribuído Conceitos e Projeto
4. RPC
RPC (Remote Procedure Call) em português
Chamada de Procedimento Remoto. É
muito utilizado em programas estruturais.
RPC, permite a passagem de funções
remotas, com parametros de tipo primitivo
(wrappers) como inteiros, characteres,
booleanos, não oferece recurso a chamada
a métodos de Objetos remotos. Utiliza-se
do modelo Cliente/Servidor, onde a
aplicação local, solicita um recurso de uma
outra aplicação distribuida em qualquer site,
os quais podem estabelecer uma conexão
TCP, os dados podem trafegar através do
protocolo UDP, para tal utiliza-se Stubs e
Skeletons, que são interfaces que permitem
essa comunicação. Não é Orientado a Objeto!
5. RMI
RMI é uma solução, só e somente só, entre aplicações distribuídas desenvolvidas na linguagem
Java. Sistema distribuído em Java é quando processos são executados em Máquinas
Virtuais Java (JVM) diferentes no mesmo computador ou em rede, ou até mesmo em outro
site. A forma que é feita a comunicação é similar ao RPC, porém RMI dá suporte a Objetos,
onde métodos remotos podem chamar Objetos, os Objetos são passados por referência ou
cópia de forma serial, e transparante ao programador, o qual faz declarações de
implementações de Interfaces (métodos) e implementa algumas classes como Remote,
RemoteException, Unicast,
Cria-se interface que geram Subs através
do rmic. Stub é a interface que esconde
a forma que é feita a IPC (comunicação
entre os processos) no que tange a forma
que é feita Rede, entre outros, o
programador faz a chamada do método
como se fosse feita numa aplicação local.
// A aplicação remota contém o código com a regra
de negócio que implementa essa chamada remota ao
método isPessoaRemote, informando um Objeto.
Ex: Boolean verifica =
servidor.isPessoaRemote(Pessoa p1);
6. Common Object Request Broker Architecture
Arquitetura comum intermediária para requisições
de objetos.
É um middleware - uma camada de software intermediária - que permite a
comunicação entre aplicações e servidor heterogêneas, em outras palavras é
um middleware orientado a compartilhamento de objetos. Por exemplo, um
programa C++ pode usar CORBA para acessar um serviço de banco de
dados escrito em COBOL, CORBA permite que aplicações escritas em
diferentes linguagens se comuniquem usando Interface Definition Language
(IDL) e um Object Request Broker (ORB). Uma IDL permite a um objeto
distribuido - como um banco de dados - descrever uma interface para os
serviços que fornece
7. Vantagens do uso SD
Concorrência: 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.
Escalabilidade: 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
8. Vantagens do uso SD
Tolerância a defeitos
• 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.
Entretanto, comparados aos sistemas que operam com
um único processador ou um cluster de processadores,
os sistemas distribuídos têm algumas desvantagens
9. Desvantagens de se usar SD
Complexidade: São mais complexos que os centralizados. São
mais difíceis de se compreender e testar.
Proteção: O sistema pode ser acessado a partir de vários
computadores diferentes, e o tráfego na rede pode estar sujeito
a interceptações.
Gerenciamento (esforço): 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.
Imprevisibilidade: 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.
10. IDL - Interface Description
Language
É uma linguagem de computador utilizada para
descrever a interface dos componentes de software.
A descrição provida pela IDL é independente de
qualquer linguagem de programação, por isso
possibilita a comunicação entre componentes
escritos em linguagens de programação diferentes.
As IDLs são normalmente utilizadas em software de
comunicação remota. Ela estabelece uma ponte
entre sistemas operacionais ou linguagem de
programação diferentes
11. Stub e Skeleton
O RMI utiliza para comunicação remota os métodos padrões: Stub e
Skeleton. Stub em um objeto remoto funciona semelhante a um
proxy para o objeto remoto. Quando um objeto chama um stub ele
fica responsável de enviar a chamada ao objeto remoto.
Quando um stub é invocado ele faz as seguintes ações:
- Iniciar uma conexão com o JVM remoto que contém os objetos
remotos;
- Escrever e transmitir os parâmetros para o JVM remoto;
- Esperar pelos resultados do método invocado;
- Ler as variáveis retornadas ou as exceções retornadas;
- Retornar o valor para o método que fez a chamada ao stub.
- O stub esconde a serialização dos parâmetros e da comunicação
em nível de rede para simplificar o mecanismo de realização de
chamada.
12. Stub e Skeleton
Em JVM remotos, cada objeto remoto deve possuir
um skeleton. O skeleton é responsável por enviar
a chamada ao objeto remoto.
Quando um skeleton é invocado ele faz as
seguintes ações:
- Ler os parâmetros enviados pelo o stub;
- Invocar o método no objeto remoto;
- Escrever e transmitir os resultados ao objeto que
executou a chamada.
13. Exemplo
• No exemplo a ser mostrado será utilizado um exemplo
utilizando o pacote JacORB.
• Na imagem a cima é mostrado a
interface que será
posteriormente implementada.
• Na imagem ao lado é mostrado a
classe serverImpl que
implementa a interface server
acima.
• Nela é implementado as
mensagens que o server dará ao
usuário que receberá as
mensagens digitadas para o
servidor.
14. Exemplo
Após a criação e implementação da interface
serão gerados o stub e o skeleton.
Para gerar o stub e o skeleton é necessário dar
um comando no compilador que está sendo
utilizado.
No exemplo mostrado o compilador utilizado
para criar o stub e o skeleton é o javaC.
15. Exemplo
Para que o objeto do tipo serverImpl possa
acesso remoto é preciso instanciá-lo em
método main de alguma outra classe e
iniciar o skeleton para isso.
16. Exemplo
Após o instanciamento do skeleton ao servidor é necessário vincular o
stub ao cliente e isso é feito na seguinte instrução:
((serverStub)s).bind("server", new URL("http://www.inf.fu-
berlin.de/~brose/ServiceLog"));.