Sistema Distribuído, o que é?
Os sistemas distribuídos são conjuntos de computadores ligados em rede, com software que permita a partilha de recursos e a coordenação de atividades, oferecendo idealmente um sistema integrado.
Desafios:
- Heterogeneidade
- Abertura
- Transparência
- Segurança
- Escala
- Tratamento de falhas
Heterogeneidade:
Diferentes tipos de Sistemas Operativos:
Diferentes tipos de rede;
Diferentes hardwares.
Abertura:
A abertura de um sistema determina o modo como pode ser estendido e reimplementado
- Sistemas abertos
Interfaces e modelo (incluindo protocolos de comunicação) conhecidos; Evolução controlada por organismos de normalização independentes ou consórcios industriais; Permite a interoperação de componentes com diferentes implementações
- Sistemas proprietários
Podem ser modificados pelo seu “dono”
Transparência:
A transparência (da distribuição) é a propriedade relativa a esconder ao utilizador e ao programador das aplicações a separação física dos elementos que compõem um sistema distribuído.
Segurança:
Necessidade de proteger os recursos e informação gerida num sistema distribuído.
- Manter o nível de confidencialidade exigido pelos utilizadores (proteção contra acessos não autorizados)
- Garantir a integridade dos dados (proteção contra alteração ou corrupção de dados ou programas)
- Manter a disponibilidade do sistema (proteção contra interferências com os meios de acesso aos recursos)
Escala:
A escala de um sistema tem várias facetas:
- recursos e utilizadores
- âmbito geográfico (rede local, país, mundo, …)
- âmbito administrativo (uma organização, inter-organizações)
Um sistema capaz de escalar (escalável) é um sistema que continua eficaz quando há um aumento significativo do número de recursos e utilizadores i.e., em que não é necessário alterar a implementação dos componentes e da forma de interação dos mesmos.
Tratamento de falhas
Num sistema distribuído, as falhas são geralmente parciais (num componente do sistema) e independentes. Um componente em falha pode induzir uma mudança de estado incorreta noutro componente, levando eventualmente o sistema a falhar, i.e., a ter um comportamento não de acordo com a sua especificação.
Exemplos de plataformas para sistemas distribuídos:
Hadoop — é uma plataforma de software em Java de computação distribuída voltada para clusters e processamento de grandes volumes de dados, com atenção a tolerância a falhas.
Spark — é um framework de código fonte aberto para computação distribuída. Spark provê uma interface para programação de clusters com paralelismo e tolerância a falhas.
Kafka — é uma plataforma open-source de processamento de streams desenvolvida pela Apache Software Foundation, escrita em Scala e Java. O projeto tem como objetivo fornecer uma plataforma unificada, de alta capacidade e baixa latência para tratamento de dados em tempo real.
Referências:
Afinal o que é um sistema distribuído? — Pplware (sapo.pt)