Sistemas Distribuídos (SD)
- Thiago Marinho                      - O que é SD?
- Willian                             - Vantagens
                   Vão falar Sobre:
- Gabriel                             - Desvantagens
- Silvio                              - IDL Stub/Skeleton
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
Programando SD
- RPC
- RMI
- CORBA
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!
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);
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
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
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
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.
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
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.
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.
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.
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.
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.
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"));.

Apresentação Sistemas Distribuídos - Conceito

  • 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
  • 3.
  • 4.
    RPC RPC (Remote ProcedureCall) 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 é umasoluçã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 RequestBroker 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 usoSD 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 usoSD 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 seusar 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 - InterfaceDescription 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 ORMI 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 EmJVM 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 exemploa 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çãoe 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 oobjeto 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 instanciamentodo 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"));.