Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
1 Introduo.................................................................................................................................................. 3
1.1 Caractersticas .................................................................................................................................... 4
1.1.1 Heterogeneidade ......................................................................................................................... 4
1.1.2 Segurana .................................................................................................................................... 4
1.1.3 Escalabilidade ............................................................................................................................. 4
1.1.4 Tolerncia a Falhas ..................................................................................................................... 4
1.1.5 Concorrncia ............................................................................................................................... 4
1.1.6 Transparncia .............................................................................................................................. 5
1.1.7 Flexibilidade ............................................................................................................................... 5
1.1.8 Confiabilidade............................................................................................................................. 5
1.1.9 Desempenho ............................................................................................................................... 5
1.2 Elementos bsicos de um SD ............................................................................................................. 6
1.2.1 Sistema de Nomes ....................................................................................................................... 6
1.2.2 Comunicao .............................................................................................................................. 6
1.2.4 Alocao de carga de trabalho .................................................................................................... 7
1.2.5 Manuteno de consistncia ....................................................................................................... 7
2 Modelos de Sistemas ................................................................................................................................. 8
2.1 Modelos de arquitetura ....................................................................................................................... 8
2.1.1 Elementos arquitetnicos ............................................................................................................ 8
2.1.2 Camadas de software ................................................................................................................ 10
2.1.3 Comunicao entre processos ................................................................................................... 11
2.1.4 Comunicao sncrona e assncrona ......................................................................................... 11
2.1.5 Comunicao em Grupo ........................................................................................................... 11
2.2 Modelos Fundamentais .................................................................................................................... 12
2.2.1 Modelo de Integrao ............................................................................................................... 12
2.2.2 Modelo de falha ........................................................................................................................ 12
2.2.3 Modelo de segurana ................................................................................................................ 13
3 Padres de Projetos Middleware ............................................................................................................. 14
3.1 Requestor ......................................................................................................................................... 14
3.2 Cliente Proxy ................................................................................................................................... 15
3.3 Invoker ............................................................................................................................................. 16
3.4 Client Request Handler .................................................................................................................... 17
3.5 Server Request Handler.................................................................................................................... 18
3.6 Marshaller ........................................................................................................................................ 19
3.7 Interface Description ........................................................................................................................ 20
3.8 Remoting Error ................................................................................................................................ 21
REFERENCIAS .............................................................................................................................................. 21
1 Introduo
Segundo Tanembaum,A. Um sistema distribudo um conjunto de computadores independentes
entre si que se apresenta a seus usurios como um sistema nico e coerente
Segundo Coulouris,G. Coleo de computadores autnomos interligados atravs de uma rede de
computadores e equipamentos com software que permita o compartilhamento dos recursos do sistema:
hardware, software e dados
Definimos um sistema distribudo como sendo aquele no qual os componentes de hardware ou
software, localizados em computadores interligados em rede, se comunicam e coordenam suas aes apenas
passando mensagens entre si. O compartilhamento de recursos um forte motivo para a construo de
sistemas distribudos. Os recursos podem ser gerenciados por servidores e acessados por clientes. Os
computadores conectados por meio de uma rede podem estar separados por qualquer distncia. Eles podem
estar em continentes separados, no mesmo prdio ou na mesma sala. A definio de SD tem as seguintes
consequncias importantes:
Concorrncia: em uma rede de computadores, a execuo concorrente de computadores a norma.
Posso fazer meu trabalho em meu computador, enquanto voc faz o seu em sua mquina, compartilhando
recursos como pginas web ou arquivos, quando necessrio.
Inexistncia de relgio global: quando os programas precisam cooperar, eles coordenam suas
aes trocando mensagens.
Falhas independentes: cada componente do sistema pode falhar independentemente, deixando os
outros ainda em funcionamento.
Como exemplo de sistemas distribudos tempos a internet, que atravs de um protocolo de
comunicao relativamente simples, possvel realizar trocas de arquivos como msica, vdeo e demais
tipos de dados com computadores localizados em vrias partes do planeta. Temos tambm os processadores
multincleo, basicamente distribuem as tarefas entre os vrios ncleos, o que dinamiza o processamento.
Temos tambm, rede de telefonia celular, rede de computadores em uma fbrica ou um grande banco com
muitas agncias, cada qual com computadores e caixas eletrnicos.
Os desafios advindos da construo de sistemas distribudos so a heterogeneidade de seus
componentes, ser um sistema aberto, o que permite que componentes sejam adicionados ou substitudos, a
segurana, a escalabilidade a capacidade de funcionar bem quando o nmero de usurios aumenta o
tratamento de falhas, a concorrncia de componentes e a transparncia.
Vantagens:
Economia: aproveita maquinas potencialmente ociosas, mais barato ter vrios processadores
interconectados do que ter um supercomputador;
Velocidade: a capacidade de interconectar processadores possibilita que se obtenham
performances que apenas um sistema composto capaz de atingir;
Distribuio inerente: mquinas espacialmente separadas;
Confiabilidade: se uma mquina falha, o sistema como um todo pode ainda sobreviver;
Crescimento incremental: poder computacional adicionado em incrementos;
Elasticidade.
Desvantagens:
1.1 Caractersticas
1.1.1 Heterogeneidade
Principio da computao que permite hardware e software acessarem servios e executarem aplicativos por
meio de um conjunto heterogneo de computadores e redes. A heterogeneidade (isto , variedade de
diferena) se aplica aos seguintes aspectos:
Redes;
Hardware de Computadores;
Sistemas Operacionais;
Linguagens de Programao;
Implementao de diferentes desenvolvedores.
1.1.2 Segurana
A segurana de recursos de informao tem trs componentes: confiabilidade (proteo contra exposio
para pessoas no autorizadas), integridade (proteo contra alterao ou dano) e disponibilidade (proteo
contra interferncia com os meios de acesso aos recursos).
1.1.3 Escalabilidade
Um sistema dito escalvel se permanece eficiente quando h um aumento significativo no nmero de
recursos e no nmero de usurios. A internet um exemplo de um sistema distribudo no qual o nmero de
computadores e servios vem aumentando substancialmente. O projeto de sistemas distribudos, escalveis,
apresenta os seguintes desafios:
Controlar o custo dos recursos fsicos: medida que a demanda por um recurso aumenta, deve ser
possvel, a um custo razovel, ampliar o sistema para atend-la;
Controlar a parda de desempenho: gerenciamento de um conjunto de dados, cujo tamanho
proporcional ao nmero de usurios ou recursos presentes no sistema;
Impedir que os recursos de softwares esgotem-se;
Evitar gargalos de desempenho.
Recuperao de falhas: a recuperao envolve projetar software de modo que o estado dos dados
permanentes possa ser recuperado ou retrocedido, aps a falha de um servidor;
Redundncia: os servios podem se tornar tolerantes a falhas com o uso de componentes
redundantes. Exemplo: um BD pode ser replicado em vrios servidores, para garantir que os dados
permaneam acessveis aps a falha de qualquer servidor.
1.1.5 Concorrncia
Alteraes feitas por um cliente no devem interferir nas operaes de outros clientes, mesmo que esses
clientes estejam manipulando o mesmo arquivo. Essas operaes devem ser sincronizadas de tal maneira
que seus dados permaneam consistentes. Isso pode ser obtido atravs de tcnicas padro, como semforos,
que so disponveis na maioria dos SOs.
1.1.6 Transparncia
A transparncia definida como sendo a ocultao, para um usurio final ou para um programador de
aplicativos, da separao dos componentes em um SD de modo que o sistema seja percebido como um
todo, em vez de uma coleo de componentes independentes. Esconder do usurio e do programador de
aplicaes a separao de componentes em um SD, tal que este seja visto como um sistema centralizado.
Transparncia de acesso: permite que os recursos locais e remotos sejam acessados com o uso de
operaes idnticas;
Transparncia de localizao: permite que os recursos sejam acessados sem o conhecimento de
sua localizao fsica ou na rede;
Transparncia de concorrncia: permite que vrios processos operem concorrentemente, usando
recursos compartilhados sem interferncia entre eles;
Transparncia de replicao: permite que vrias instncias dos recursos sejam usadas para
aumentar a confiabilidade e o desempenho, sem conhecimento das rplicas por parte dos usurios
ou dos programadores de aplicativos;
Transparncia de falhas: permite a ocultao de falhas, possibilitando que usurios e programas
aplicativos concluam suas tarefas, a despeito da falha de componentes de HW e SW;
Transparncia de mobilidade: permite a movimentao de recursos e clientes dentro de um
sistema, sem afetar a operao de usurios ou programas;
Transparncia de desempenho: permite que o sistema seja reconfigurado para melhorar o
desempenho medida que as cargas variam;
Transparncia de escalabilidade: permite que o sistema e os aplicativos se expandam em escala
sem alterar a estrutura do sistema ou os algoritmos de aplicativo.
1.1.7 Flexibilidade
Com a grande quantidade de processadores trabalhando em conjunto devem existir mecanismos para
permitir adaptaes dinmicas durante a execuo do sistema. Quase sempre ocorrer situaes no
previstas gerando quebras no fluxo do sistema e o SD deve ser capaz de contornar isso de forma simples,
tambm deve ser fcil a incluso ou excluso de processadores do sistema sem que para isso seja
necessrio modificar todos os componentes ou parar o funcionamento do SD.
Ncleo monoltico: inclui gerenciamento de arquivos, diretrios e processos
Micro-ncleo:
1.1.8 Confiabilidade
Os SD devem possuir a capacidade, pelo menos em tese, de que se uma de suas mquinas parar de
funcionar uma outra mquina dever assumir os servios que a mquina que parou fornecia. Alguns
aspectos relacionados a confiabilidade devem ser levados em considerao como:
1.1.9 Desempenho
Em geral, espera-se que uma aplicao distribuda apresente um desempenho melhor que aquele atribudo
a um sistema centralizado. O desempenho uma grandeza que pode ser avaliada de diferentes formas
dependendo do tipo de aplicao, uma vez este fator desempenho pode estar associado a diferentes
conceitos ou aspectos.
1.1.9.1 Mtricas de desempenho;
Tempo de resposta do servidor;
Throughput (tarefas / tempo);
Utilizao do sistema;
Quantidade consumida da capacidade da rede.
Um sistema com mltiplos processadores fracamente acoplados pode obter um desempenho que seria
impossvel em um sistema com um processador, uma vez que podem reunir uma quantidade superior de
processadores do que um sistema fortemente acoplado, mas raramente N processadores tem o
desempenho de N vezes maior que um processador (escalabilidade), uma vez que depende de troca de
mensagens.
Por outro lado, um sistema com N processadores custa menos que um processador com N vezes mais
velocidade, especialmente quando possvel aproveitar mquinas potencialmente ociosas e realizar
tarefas em paralelo, aumentando o throughput do sistema.
1.2 Elementos bsicos de um SD
1.2.1 Sistema de Nomes
Em sistemas distribudos, so usados nomes para fazer referncia a uma ampla variedade de recursos,
como computadores, servios, objetos remotos e arquivos, assim como usurios. A atribuio de nomes
um problema facilmente desprezado, mais com certeza fundamental no projeto de sistemas distribudos.
Os processos no podem compartilhar recursos em particular a no ser que possam atribuir nomes a eles
de forma consistente. Gerencia tabelas de nomes e funes do sistema. um elemento fundamental em
um Sistema Distribudo. As mquinas chamadas servidores de nome de domnio permitem estabelecer a
correspondncia entre o nome de domnio e o endereo IP das mquinas de uma rede, o mecanismo que
consiste em encontrar o endereo IP que corresponde ao nome da mquina que se quer conectar.
1.2.2 Comunicao
O sucesso de um bom SD est na forma em que o sistema se comunica e transita suas mensagens tendo o
desempenho/confiabilidade.
2 Modelos de Sistemas
Cada modelo destinado a fornecer uma descrio abstrata e simplificada, mas consistente, de um aspecto
relevante do projeto de um sistema distribudo. So divididos entre modelos fsicos, modelos de arquitetura
e modelos fundamentais.
Objetos: os objetos foram introduzidos para permitir e estimular o uso de estratgias orientadas a
objetos nos sistemas distribudos (incluindo o projeto orientado a objeto e as linguagens de
programao orientadas a objeto). Os objetos so acessados por meio de interfaces, com uma
linguagem de definio de interface (IDL) associada fornecendo uma especificao dos mtodos
definidos nesse objeto.
Componentes: os componentes se parecem com objetos, pois oferecem abstraes voltadas ao
problema para a construo de sistemas distribudos e tambm so acessados por meio de
interfaces. A principal diferena que os componentes especificam um contrato mais completo
para a construo do sistema. Essa estratgia mais contratual estimula e permite o
desenvolvimento de componentes por terceiros e tambm promove uma abordagem de
composio mais pura para a construo de sistemas distribudos, por remover dependncias
ocultas.
Servio Web: so intimamente relacionados aos objetos e aos componentes, novamente adotando
uma estratgia baseada no encapsulamento de comportamento e no acesso por meio de interfaces.
Enquanto os objetos e componentes so usados para o desenvolvimento de aplicaes fortemente
acopladas, os servios web podem ser implementados por diferentes provedores e usar diferentes
tecnologias.
Tornar explcitas todas as suposies relevantes sobre os sistemas que estamos modelando
Fazer generalizaes a respeito do que possvel ou impossvel
Latncia: o atraso entre o envio de uma mensagem por um processo e seu recebimento por outro
processo.
Largura de banda: a quantidade total de informao que pode ser transmitida sobre uma rede de
um dado tempo.
Jitter: variao em tempo para entregar uma srie de mensagens.
Falhas por omisso: se referem aos casos em que um processo ou canal de comunicao deixa de
executar as aes que deveria. Por exemplo: falhas por omisso de processo ou na comunicao.
Falhas arbitrrias: aquela em que ele omite arbitrariamente passos desejados do processamento
ou efetua processamento indesejado. Portanto, s falhas arbitrrias no podem ser detectadas
verificando-se se o processo responde s invocaes, pois ele poderia omitir arbitrariamente a
resposta.
Falhas de temporizao: so aplicveis aos sistemas distribudos sncronos em que limites so
estabelecidos para o tempo de execuo do processo, para o tempo de entrega de mensagens e para
a taxa de desvio do relgio.
Canais de comunicao devem ser seguros quanto a escuta secreta e interferncia de contedo
Servidores devem poder verificar a identidade de seus clientes
Clientes devem poder verificar a autenticidade de servidores
A identidade do originador de uma mensagem deve poder ser verificada aps o envio da mensagem
Criptografia para permitir que um par de processos possa estabelecer um canal de comunicao
seguro baseado em uma chave.
Servio de autenticao para permitir que clientes e servidores possam fornecer, uns aos outros,
evidncias convincentes de suas identidades.
3.3 Invoker
O Requestor envia pedidos atravs da rede, contendo o ID do objeto remoto, nome da operao, parmetros
da operao, bem como outras informaes contextuais. O Invoker l os pedidos e demarshals
(desempacota) para obter o objeto com o ID em procura e o nome da operao. Em seguida, ele procura o
objeto local correto e sua implementao na operao, tal como descrito pela invocao remota, por fim
invoca-o.
O Invoker est localizado no lado do servidor dentro do processo do servidor de aplicao. Dependendo do
configurado Configuration Group, um ou mais instancias Invoker existem, j que ambos os conceitos so
relacionados. Um Server Request Handler associado trata do nvel mais baixo de comunicao. Isto inclui
a recepo de mensagens remotas, gerenciamento de threads, agrupamento de ligaes, bem como envio
de receptores.
Quando um pedido de mensagem foi recebido totalmente pelo Server Request Handler, o mesmo entrega a
invocao, contida na mensagem, para o Invoker. No caso de mltiplas solicitaes, a mensagem deve
conter informaes suficientes para permitir que o Server Request Handler entre em contato com o Invoker
correto. A mensagem portanto deve conter informaes sobre o Invoker, tal como nome do Invoker, ou ID.
Se necessrio, o ID Ivoker deve fazer parte do Absolute Object Reference.
Se ainda no tiver feito, o Invoker desempacota ainda mais a mensagem de solicitao para identificar o
objeto remoto alvo, o nome e os parmetros de operao. O verdadeiro demarshaling tratado por um
separador padro, o Marshaller.
Caso o objeto remoto no puder ser encontrado pelo Invoker, o Invoker pode delegar despachar a um
Location Forwarder. O Location Forwarder pode ser capaz de delegar para um objeto remoto em outro
servidor de aplicao. Essas abordagens so utilizadas nos casos em que objetos remotos foram movidos,
ou quando a carga equilibrada em vrios objetos remotos.
O Invoker no lado do servidor e o Requestor no lado do cliente tem que ser compatvel em respeito as
mensagens trocadas entre si. O Requestor tem que colocar todas as informaes exigidas pelo Invoker em
uma mensagem de solicitao, e o Invoker tem que enviar a resposta.
Usando um Invoker em vez de conexes de rede direta para objetos remotos reduz o nmero de entidades
endereveis de rede necessris. Ele tambm permite que o Server Request Handler eficientemente
compartilhe conexes para servidores que hospedam vrios objetos remotos.
No caso de chamadas sncronas, o Client Request Handler tem que esperar o resultado da chamada.
Ou seja, ele bloqueado at que o resultado tenha chagado.
Para chamadas assncronas o Requestor e Client Request Handler tem que seguir um dos padres
de assncrona. No caso de um Result CallBack ou Pool Object respectivamente, ele despacha o
resultado para um objeto callback Poll Object respectivamente, em vez de entregar o resultado de
volta para a invocao do cliente sobre a pilha de chamadas.
Quando so lanados eventos timeouts, o Client Request Handler informa ao Requestor sobre tais eventos.
Para este efeito, o Cliente Request Handler registra para um timeout quando a invocao enviada para um
objeto remoto. Se a resposta no chegar dentro do perodo timeout, o Client Request Handler recebe o
evento de timeout e informa ao Requestor. Dependendo da configurao pode tentar , novamente, o envio
da uma invocao antes de levantar o erro Remoting Error. O Client Request Handler tambm deve detectar
outras condies de erro, tal como uma rede disponvel ou servidor de aplicao. Neste caso, ele tem que
levantar um Remoting Error e encaminhar para o Requestor.
Para muitas tarefas, Client e Server Client Handler tem que trabalhar em conjunto, especialmente para as
extenses de manipulao da solicitao como Invocation Interceptors, Invocation Constexts, Protocol
Plug-ins, ou outros servios. O Client Request Handler normalmente compartilhado entre mltiplos
Requestors. Cliente Request Handler esconde a conexo e a manipulao de mensagens complexas dos
Requestors.
3.6 Marshaller
Use Marshallers compativeis no lado do cliente e servidor que serialize as informaes invocadas.
Dependendo do ambiente, a serializao pode ser fornecida pelos prprios tipos de dados. As referncias a
objetos remotos so serializados como Absolute Object References. Um Marshaller converte invocaes
remotas em fluxos de bytes. Ele fornece um mecanismo genrico que no especifico para qualquer
determinado tipo de objeto remoto.
O Requestor, Invoker e Request Handlers usam o Marshaller para recuperar as informaes de invocao
contidas no fluxo da mensagem de byte. Para os tipos de dados complexos Marshaller l recursivamente
sua hierarquia de tipos. Identidades dos objetos so tratadas como tipos de dados especiais, mas so
empacotados de uma maneira similar aos tipos de dados complexos. As referncias a outros objetos remotos
so convertidas em Absolute Object References.
Objeto local que contm muitos elementos de dados usados pelo objeto remoto invocado no deve ser
referenciado remotamente, mas empacotado por valor, porque consultando os dados nesses objetos
remotamente provavelmente requerem uma srie de invocaes remotas subsequentes, desperdiando rede
e baixo desempenho. Um formato de transporte genrico necessrio para transportar algum tipo de dados
atravs da rede. A serializao de um tipo complexo pode ser realizada de vrias formas:
A linguagem de programao pode fornecer um tipo genrico, para facilitar a serializao. Este
o caso das linguagens Java ou .NET que podem usar Reflection para serializao estrutural dos
tipos.
As ferramentas podem ser usadas para gerar o cdigo de serializao diretamente a partir da
Interface Description, supondo que a estrutura de tais tipos est expressa na Interface Description.
Os desenvolvedores podem ter que fornecer funcionalidades de serializao. Neste caso, o
desenvolvedor geralmente tem de implementar uma interface adequada que declara operaes de
serializao e desserializao.
O formato concreto dos dados dentro de um fluxo de bytes depende do middleware de objetos distribudos
usado. Tudo um fluxo de bytes quando so transportados para toda a rede. Para representar estruturas de
dados complexas, aconselhvel a utilizao de um formato estruturado, como XML e CDR.
Um formato de marshaling genrico nunca pode ser o ideal para todas as estruturas de dados ou cenrios.
Dependendo do caso de uso, alguns formatos de serializao so melhores que outros. XML ideal para
vrios casos, mas muito ineficiente no que diz respeito ao uso de largura de banda para alguns domnios,
tais como o domnio de sistemas embarcados. CDR um formato binrio e padronizado, o que significa
que muitas ferramentas esto disponveis para seu uso.
Em Middleware de objetos distribudos que suporta mais de uma linguagem de programao, as Interface
Description devem ser disponibilizada em uma sintaxe independente da linguagem de programao. Isso
requer ferramentas que traduzam a Interface Description em diferentes linguagens. Interface Description
so um meio importante para a construo de sistemas distribudos interoperveis. O objeto middleware
distribudo fornece ligao de uma lngua, alm das descries de interfaces, para definir regras de
converso de genricas para/de uma linguagem de programao.
REFERENCIAS
Sistemas Distribudos - Conceitos e Projeto - 5 Ed. 2013 - George Coulouris, Tim Kindberg, Jean
Dollimore
Sistemas Distribudos - Princpios e Paradgmas - 2 Ed. 2008 - Tanenbaum, AndrewVan Steen, Maarten
Silberchatz, Abraham. Operation System Concepts. 5 eth AddisonWesley. November 1998.