Apresentação Sistemas Distribuídos - Conceito

16
Sistemas Distribuídos (SD) Sistemas Distribuídos (SD) - Thiago Marinho - Willian - Gabriel - Silvio - O que é SD? - Vantagens - Desvantagens - IDL Stub/Skeleton Vão falar Sobre:

description

Básico sobre conceito de Sistemas Distribuídos, RPC, RMI e Corba.

Transcript of Apresentação Sistemas Distribuídos - Conceito

Sistemas Distribuídos (SD)Sistemas Distribuídos (SD)

- Thiago Marinho- Willian- Gabriel- Silvio

- O que é SD?- Vantagens- Desvantagens- IDL Stub/Skeleton

Vão falar Sobre:

O que é Sistema Distribuído?O que é Sistema Distribuído?

““Um sistema distribuído é uma coleção de processadores fracamente Um sistema distribuído é uma coleção de processadores fracamente acoplados interconectados por uma rede de comunicação”acoplados interconectados por uma rede de comunicação”. Abraham Silberschatz, Peter Galvin, Greg Gagne, Sistemas Operacionais, Conceitos e Aplicações, Editora Campus.

"Coleção de computadores independentes que se apresenta ao "Coleção de computadores independentes que se apresenta ao usuário como um sistema único e consistente". usuário como um sistema único e consistente". Andrew Tanenbaum.

Conceitos: Conceitos:

““Definimos um sistema distribuído como sendo aquele no qual os Definimos um sistema distribuído como sendo aquele no qual os componentes de hardware ou software, localizados em computadores componentes de hardware ou software, localizados em computadores interligados em rede, se comunicam e coordena suas ações apenas interligados em rede, se comunicam e coordena suas ações apenas enviando mensagens entre si”enviando mensagens entre si”. Coulourus, G.; Dollimore, J.; Kindberg, T. Sistemas Distribuído Conceitos e Projeto

Programando SDProgramando SD

- RPC - RPC - RMI - RMI - CORBA- CORBA

RPCRPCRPC (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!

RMIRMIRMI é 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 // A aplicação remota contém o código com a regra de negócio que implementa essa chamada remota ao de negócio que implementa essa chamada remota ao método isPessoaRemote, informando um Objeto.método isPessoaRemote, informando um Objeto.

Ex: Boolean verifica = Ex: Boolean verifica = servidor.isPessoaRemote(Pessoa p1);servidor.isPessoaRemote(Pessoa p1);

CCommon ommon OObject bject RRequest equest BBroker roker AArchitecturerchitecture

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 SDVantagens 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 adicionados

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

Vantagens do uso SDVantagens do uso SD

Desvantagens de se usar SDDesvantagens 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 SkeletonO 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"));.