Podemos considerar tolerância a falha e a possibilidade de paralelismo como as propriedades fundamentais em um sistema distribuidos. ***Transparência: O uso de múltiplos processadores deve ser invisível para o usuário, ele é visto como um uniprocessador virtual. Expansibilidade: Sistemas distribuídos são capazes de crescimento incremental. Problemas de complexidade == Problemas do sistema -Interconexão: Módulos antes independentes são conectados -Interferência: Módulos funcionam razoávelmente quando isolados e de maneira indesejável quando combinados. -Propagção de efeito: "Efeito cascata" de falhas pode derubar um sistema. ***Localização: esconde onde o recurso está localizado. Ex.: Servidores de nomes contribuem para implementar a transparência, e os mesmos são executados no ambiente de suporte às aplicações distribuídas. – Exs: • Rmiregistry: JavaRMI • tnameserv: CORBA (JDK) ***Acesso: operações indenticas para acesso local e remoto Ex.:Stubs -> Forma de chamada remota semelhante a chamada local e também faz o tratamento de excessões no local. *** Sistemas de Arquivos Distribídos: Essencial -> Autênticação, controle de concorrência, controle de acesso. No caso desse sistema a complexidade fica ainda maior quando há requisitos de alta disponibilidade e com tolerância a falhas.Aspectos como mecanismos de localização de arquivo, coordenação de estado de servidor replicado, mecanismos de recuperação de falhas parciais etc. Exemplo -> Problema do escalonamento de trens, pois os passegeiros tem que trocar de trens para chegar aos seus destinos. ****Escalabilidade: O sistema continuará eficaz mesmo que aumente o número de usuários e recursos. Um dos grandes objetivos é controlar a perda de desenpenho. Exemplos das limitações de escalabilidade: -Serviços Centralizados -> Um servidor para todos usuários -Dados Centralizados -> Uma única lista telefônica on-line -Algoritmos Centralizados -> Roteamento baseado em informação completa ***SOD - Fortemente Acoplados: Tentam manter visão única e global dos recursos gerenciados ***SOR - Fracamente Acoplados: Cada um executa seu próprio sistema operacional ...Com a necessidade de dar uma maior transparência de distribuição foi que surgiu serviços adicionais --> middleware --SOD-- SO Multi-Processador:Alto desempenho manipulando muitos processadores, o número de CPU's deve ser transparente para a aplicação. -- Middleware -- É um conjunto reusável e expansível de funções e serviços que são necessários para as aplicações distribuídas funcinarem bem em um ambiente de rede. O middleware é visto como uma coleção de serviços que são fornecidos através de uma interface padrão API. • Simplificação da programação distribuída – Serviços • Integração de sistemas heterogêneos • Abstração do sistema de transporte Utiliza o protocolo IIOP para a comunicação entre clientes e servidores -- ORB -- O orb serve como um intermediário ("barramento") entre o cliente e o objeto, FORNECE as referências para os objetos-servidores • DNS é um exemplo de um sistema distribuído – altamente escalar – tolerante a falha • alta disponibilidade – transparente • cliente não sabe que outros servidores de nomes podem estar colaborando para atender a uma consulta sua