Sistemas Distribuídos: Conceitos e Arquiteturas
Classificado em Computação
Escrito em em português com um tamanho de 6,35 KB.
Sistemas Distribuídos: Máquinas autônomas trabalhando em conjunto.
Características: Máquinas autônomas, comunicação por troca de mensagens, independência de falhas, ausência da sincronização de relógios.
Vantagens: Sistemas, pessoas e dados distribuídos, compartilhamento de recursos, crescimento incremental, aumento do desempenho e confiabilidade.
Desvantagens: Falhas, sincronização, segurança (pode implicar em desempenho, etc.).
Middleware: Conjunto de computadores que se apresentam ao usuário como um único sistema.
Middleware de comunicação: Abstração das bibliotecas e protocolos de comunicação.
Exemplos: RPC (chamada de procedimento remoto), RMI (invocação de método remoto), SOAP (RPC web).
Tipos de Sistemas Distribuídos: Sistemas de Informação, Sistemas de Computação (cluster, nuvem e grade), sistemas pervasivos.
Sistemas de Informação: Diversas aplicações empresariais individuais integradas em uma única aplicação.
Sistemas de Computação:
- Cluster: Popular, preço acessível, homogêneo, rede local, programação paralela.
- Grade: Heterogêneo, processamento e cálculos em redes distantes, normalmente interligados por VPN.
- Nuvem: Utilização das capacidades de armazenamento e cálculo na internet, princípios da computação em grade, heterogeneidade.
Técnicas de Extensibilidade:
- Distribuição: Dividir dados e cálculos entre máquinas.
- Replicação: Fazer cópias disponíveis em várias máquinas.
- Caching: Permitir que processos clientes acessem cópias locais.
Tipos de Transparência:
- Acesso: Oculta diferenças na apresentação de dados e o modo de acesso (ex: SOs diferentes).
- Localização: Oculta o lugar onde o recurso está localizado (ex: sites).
- Migração: Oculta que um recurso pode ser movido para outra localização (ex: migração de servidor).
- Realocação: Oculta que um recurso pode ser movido para outra localização enquanto em uso (ex: uso do notebook em rede wireless).
- Replicação: Oculta que um recurso é replicado (ex: replicação de dados entre site de produção e contingência).
- Concorrência: Oculta que um recurso pode ser compartilhado por usuários concorrentes (ex: acesso à mesma tabela no BD).
- Falha: Oculta falha e recuperação do recurso (ex: try and catch (mascaramento), computação em cluster).
Concorrência (recurso único) x Paralelismo (recurso compartilhado)
Threads (programa em múltiplos fluxos) x Processos (programa em fluxo único)
Thread: Extends threads ou implements Runnable. Método run em comum. Método start aloca recursos e chama o método run.
Escalonador: Organiza a execução da thread.
Redes de Sensores: Dispositivos para obter informações do ambiente. Com cooperação (BD distribuído). Sem cooperação (BD centralizado).
Socket: É um conector, ou seja, mediador de comunicação entre componentes (cliente X servidor). Cliente possui input stream que recebe output stream do servidor e tem output stream que transfere tudo para o input stream do servidor.
Arquiteturas de Sistemas Distribuídos:
- Vertical: Arquitetura em camadas (ex: RPC), arquitetura em objetos (ex: RMI), arquitetura orientada a eventos (ex: webservice).
- Espaço de dados compartilhados: Componentes publicam em espaço de dados compartilhados (ex: servidor web).
- Horizontal: (ex: Redes P2P).
Redes P2P:
- Principal característica: Usuário pode realizar função de cliente e servidor ao mesmo tempo.
- Principal objetivo: Transmissão de arquivos.
- Arquitetura:
- Centralizada: Servidor central controla peers.
- Descentralizada: Não há elemento central, flood/inundação da rede.
- Híbrida: Composta por diversos super nós.
Protocolos P2P:
- SSL: Protege as informações transmitidas. Arquivos ficam invisíveis exceto para o destinatário, à prova de adulteração, integridade dos dados.
- IPSEC: Protege o pacote transmitido na rede. Largamente utilizado em VPNs. Segurança vem do IP da estação ou do seu certificado.
- PKI: Túnel de comunicação. Impede a interceptação. Padrão de criptografia e-commerce na internet.
Exemplos:
public class THREAD {
public static void main (String[]args) {
GeraPDF gerapdf = new GeraPDF();
Thread threadDoPdf=new Thread(gerapdf);
threadDoPdf.start();
}
}
class GeraPDF implements Runnable {
public void run(){}
}
Socket – Servidor
public class S {
public static void main (String[]args) throws IOException{
ServerSocket servidor = new ServerSocket(12345);
Socket cliente = servidor.accept();
Scanner teclado = new Scanner(cliente.getInputStream());
while(teclado.hasNextLine()){
System.out.println(teclado.nextLine());
}
cliente.close();
servidor.close();
}
}
Socket – Cliente
public class C {
public static void main(String[]args) throws UnknownHostException, IOException{
Socket cliente = new Socket"localhos",12345);
PrintStream saida = new PrintStream(cliente.getOutputStream());
Scanner teclado = new Scanner(System.in);
while (teclado.hasNextLine()){
saida.println(teclado.nextLine());
}
saida.close();
teclado.close();
}
}