• Nenhum resultado encontrado

Distributed Systems Principles and Paradigms

N/A
N/A
Protected

Academic year: 2021

Share "Distributed Systems Principles and Paradigms"

Copied!
39
0
0

Texto

(1)

Distributed Systems

Principles and Paradigms

Maarten van Steen

VU Amsterdam, Dept. Computer Science (Traduc¸ ˜ao e Adaptac¸ ˜ao Ricardo Anido - IC/Unicamp)

(2)

Conte ´udo

Cap´ıtulo 01: Introduc¸ ˜ao 02: Arquiteturas 03: Processos 04: Comunicac¸ ˜ao 05: Nomeac¸ ˜ao 06: Sincronizac¸ ˜ao

07: Consist ˆencia & Replicac¸ ˜ao 08: Toler ˆancia a Falhas 09: Securanc¸a

10: Distribuic¸ ˜ao de Sistemas Baseados em Objetos 11: Sistemas de Arquivos Distribu´ıdos

12: Sistemas Distribu´ıdos Baseados na Web

13: Sistemas Distribu´ıdos Baseados em Coordenac¸ ˜ao

(3)

Processsos 3.1 Processos

Introduc¸ ˜ao a Threads

Ideia b ´asica

Construirprocessadores virtuaisem software, usando processadores f´ısicos:

Processador: prov ˆe um conjunto de instruc¸ ˜oes e mecanismos para executar

uma s ´erie dessas instruc¸ ˜oes

Thread: Um processador m´ınimo em software em cujocontextouma s ´erie

de instruc¸ ˜oes s ˜ao executadas. Salvar o contexto de uma thread implica parar a execuc¸ ˜ao corrente e salvar todos os dados necess ´arios para retomar a execuc¸ ˜ao posteriormente.

Processo: Um processador em software em que uma ou mais threads

podem ser executadas. Executar uma thread significa executar uma s ´erie de instruc¸ ˜oes no contexto dessa thread.

(4)

Processsos 3.1 Processos

Troca de contexto

Contextos

Contexto de processador: Conjunto m´ınimo de valores armazenados nos registros de um processador, usados para execuc¸ ˜ao de uma sequ ˆencia de instruc¸ ˜oes (apontador de pilha, apontador de programa, registradores gerais, etc.)

Contexto de Thread: Conjunto m´ınimo de valores armazenados em registradores e mem ´oria, usados para execuc¸ ˜ao de uma sequ ˆencia de instruc¸ ˜oes (contexto de processador, estado da pilha, etc.)

Contexto de Processo: Conjunto m´ınimo de valores armazenados em registradores e mem ´oria, usados para execuc¸ ˜ao de uma sequ ˆencia de instruc¸ ˜oes (contexto de thread, registradores de ger ˆencia de mem ´oria (MMU), etc.)

(5)

Processsos 3.1 Processos

Troca de contexto

Contextos

Contexto de processador: Conjunto m´ınimo de valores armazenados nos registros de um processador, usados para execuc¸ ˜ao de uma sequ ˆencia de instruc¸ ˜oes (apontador de pilha, apontador de programa, registradores gerais, etc.)

Contexto de Thread: Conjunto m´ınimo de valores armazenados em registradores e mem ´oria, usados para execuc¸ ˜ao de uma sequ ˆencia de instruc¸ ˜oes (contexto de processador, estado da pilha, etc.)

Contexto de Processo: Conjunto m´ınimo de valores armazenados em registradores e mem ´oria, usados para execuc¸ ˜ao de uma sequ ˆencia de instruc¸ ˜oes (contexto de thread, registradores de ger ˆencia de mem ´oria (MMU), etc.)

(6)

Processsos 3.1 Processos

Troca de contexto

Contextos

Contexto de processador: Conjunto m´ınimo de valores armazenados nos registros de um processador, usados para execuc¸ ˜ao de uma sequ ˆencia de instruc¸ ˜oes (apontador de pilha, apontador de programa, registradores gerais, etc.)

Contexto de Thread: Conjunto m´ınimo de valores armazenados em registradores e mem ´oria, usados para execuc¸ ˜ao de uma sequ ˆencia de instruc¸ ˜oes (contexto de processador, estado da pilha, etc.)

Contexto de Processo: Conjunto m´ınimo de valores armazenados em registradores e mem ´oria, usados para execuc¸ ˜ao de uma sequ ˆencia de instruc¸ ˜oes (contexto de thread, registradores de ger ˆencia de mem ´oria (MMU), etc.)

(7)

Processsos 3.1 Processos

Troca de contexto

Observac¸ ˜oes

1 Threads compartilham o mesmo espac¸o de enderec¸amento. Troca de contexto pode ser feita independente do systema operacional, em c ´odigo de usu ´ario.

2 Troca de processos ´e geralmente mais cara, envolve chamada de sistema.

3 Criar de destruir threads ´e muito mais barato do que criar e destruir processos.

(8)

Processsos 3.1 Processos

Threads e Sistemas Operacionais

Ponto principal

Kernel de OS deve prover threads, ou threads devem ser implementadas em bilbiotecas em n´ıvel de usu ´ario?

Soluc¸ ˜ao em espac¸o de usu ´ario

Todas as operac¸ ˜oes podem ser completamente realizadasdentro de um ´unico processo⇒ implementac¸ ˜oes podem ser muito eficientes.

Todosos servic¸os disponibilizados pelo kernel s ˜ao feitosem nome do processo em que a thread reside⇒ se o kernel decide bloquear uma thread, todo o processo ser ´a bloqueado (todas as outras threads desse processo ser ˜ao bloqueadas).

Threads s ˜ao usadas quando h ´a muitos eventos externos: threads bloqueiam com base em eventos⇒ se o kernel n ˜ao distingue threads, como pode sinalizar eventos para uma determinada thread?

(9)

Processsos 3.1 Processos

Threads e Sistemas Operacionais

Soluc¸ ˜ao no Kernel

Ideia ´e que kernel contenha implementac¸ ˜ao de threads; todos os servic¸os de thread feitos a partir de chamadas a sistemas

Operac¸ ˜oes que bloqueiam uma thread n ˜ao s ˜ao mais problema:kernel pode escolher outra threaddentro do mesmo processo.

Tratamento de eventos externos ´e simpleskernel(que captura todos os eventos)escolhe a thread associada ao evento.

O problema ´eperda de desempenhodevido ao fato de overhead introduzido por chamadas de systema.

Conclus ˜ao

Seria ideal ter um sistema de threads h´ıbrido, implementado em n´ıvel de usu ´ario e de kernel.

(10)

Processsos 3.1 Processos

Threads Solaris

Ideia b ´asica

Introduziu uma abordagem em dois n´ıveis: processos lightweightque podem executar threads de usu ´ario.

Lightweight process Thread Kernel space User space LWP executing a thread Thread state Nota

Este conceito foi abandonado; hoje em dia implementac¸ ˜ao ´e no n´ıvel de usu ´ario (como em java) ou no n´ıvel de kernel.

(11)

Processsos 3.1 Processos

Threads e Sistemas Distribu´ıdos

Cliente Web Multithreaded

Escondendo lat ˆencias de rede:

Navegador Web percorre p ´agina HTML, e descobre quemais arquivos devem ser buscados.

Cada arquivo ´e buscado usando uma thread separada, cada uma executando uma requisi ˜ao HTTP (bloqueante).

`

A medida que arquivos chegam, navegador mostra na tela. Multiplas chamadas request-reply para outras m ´aquinas (RPC)

Cliente executa v ´arias chamadas ao mesmo tempo, cada uma usando uma thread distinta.

Espera at ´e que todos os resultados sejam retornados.

Nota: se chamadas s ˜ao para servidores diferentes, podemos ter uma melhora de desempenho (speed-up)linear.

(12)

Processsos 3.1 Processos

Threads e Sistemas Distribu´ıdos

Melhora de desempenho

Criar thread ´emuitomais barato do que criar processo.

Servidor com uma ´unica thread inibe escalabilidade mesmo em caso simples desistema com m ´ultiplos processadores.

Em clientes: esconder lat ˆencia de redereagindo a pr ´oxima requisic¸ ˜ao enquanto anterior n ˜ao ´e respondida.

Melhor estrutura

Maioria de servidores t ˆem demanda alta de E/S. Uso de modelo simples e bem-conhecido dechamadas bloqueantessimplifica estrutura geral. Programas com m ´ultiplas thread tendem a sermenores e mais f ´aceis de entender e depurardevido aofluxo simplificado de controle.

(13)

Processsos 3.2 Virtualizac¸ ˜ao

Virtualizac¸ ˜ao

Observac¸ ˜ao

Virtualizac¸ ˜aotem se tornado cada vez mais importante: Hardwaremuda mais rapidamentedo que software Facilidade deportabilidadee migrac¸ ˜ao de c ´odigo Isolamentode componentes falhos ou invadidos

(14)

Processsos 3.2 Virtualizac¸ ˜ao

Arquitetura de VMs

Observac¸ ˜ao

Virtualizac¸ ˜ao pode ser realizada em n´ıveis distintos, dependendo fortemente dasinterfacesoferecidas pelos v ´arios componentes:

(15)

Processsos 3.2 Virtualizac¸ ˜ao

VMs de processo x VMs de arquitetura

Runtime system Runtime system Hardware Operating system Hardware Operating system Operating system Operating system Applications

Virtual machine monitor

(a) (b)

Runtime system Application

VM de Processos:Um programa compilado para um c ´odigo intermedi ´ario (port ´avel), que ´e executado em um sistema de execuc¸ ˜ao (Exemplo: Java VM).

VM de Arquitetura: Uma camada de software que imita uma arquitetura de hardware (conjunto de instruc¸ ˜oes + interfaces de dispositivos) ⇒ um sistema operacional completo e suas

aplicac¸ ˜oes podem ser providos (Exemplo: VMware, VirtualBox).

(16)

Processsos 3.2 Virtualizac¸ ˜ao

VM de arquitetura e sistemas operacionais

Na pr ´atica

H ´a v ´arios exemplos de VMs rodando em cima de sistemas operacionais.

Executamtraduc¸ ˜ao bin ´aria: durante execuc¸ ˜ao de uma aplicac¸ ˜ao ou sistema operacional, traduz intruc¸ ˜oes da m ´aquina virtual para o repert ´orio da m ´aquina real.

Cuidado comac¸ ˜oes sens´ıveis:chamadas a sistema,instruc¸ ˜oes privilegiadas.

Ac¸ ˜oes sens´ıveis s ˜ao trocadas por chamadas ao sistema da VM.

(17)

Processsos 3.3 Clientes

Clientes: Interfaces de usu ´ario

Ess ˆencia

A maior parte de software no lado do cliente ´e focado em interfaces (gr ´aficas) de usu ´ario.

X kernel Device drivers Application Xlib Xlib interface X protocol

Terminal (includes display keyboard, mouse, etc.) Application server

Application server User's terminal

(18)

Processsos 3.3 Clientes

Clientes: Interfaces de usu ´ario

Documentos compostos

Interface de usu ´ario ´e application-aware ⇒ comunicac¸ ˜ao entre aplicativos:

drag-and-drop: mover objetos na tela para invocar interac¸ ˜ao com outros aplicativos.

edic¸ ˜ao in-place:integrar v ´arios aplicativos no n´ıvel de interface de usu ´arios (por exemplo, processamento de texto + facilidades de desenho)

(19)

Processsos 3.3 Clientes

Software “Client-Side’

Geralmente implementados para transpar ˆencia de distribuic¸ ˜ao

transpar ˆencia de acesso: “stubs” client-side para RPCs

transpar ˆencia de localidade/migrac¸ ˜ao: deixar o software client-side manter (ou descobrir) localidade do servic¸o

transpar ˆencia de replicac¸ ˜ao: invocac¸ ˜oes m ´ultiplas tratadas por “stub” no cliente: Client machine

Replicated request

Server 1 Server 2 Server 3

Client side handles request replication Client appl. Server appl Server appl Server appl

transpar ˆencia de falhas: frequentemente podem ser colocadas somente no cliente (tentativa de mascarar falhas do servidor ou de comunicac¸ ˜ao).

(20)

Processsos 3.4 Servers

Servidores: Organizac¸ ˜ao Geral

Modelo B ´asico

Um servidor ´e um processo que espera por chegadas de requisic¸ ˜oes de servic¸os em enderec¸os de transporte espec´ıficos. Na pr ´atica, h ´a um mapeamento um-para-um entre uma porta e um servic¸o.

ftp-data 20 File Transfer [Default Data] ftp 21 File Transfer [Control] telnet 23 Telnet

24 any private mail system smtp 25 Simple Mail Transfer login 49 Login Host Protocol sunrpc 111 SUN RPC (portmapper) courier 530 Xerox RPC

(21)

Processsos 3.4 Servers

Servidores: Organizac¸ ˜ao Geral

Tipos de servidores

Superservidores: Servidores que escutam em v ´arias portas, i.e., prov ˆem v ´arios servic¸os independentes. Na pr ´atica, quando uma requisic¸ ˜ao de servic¸o chega, iniciam um subprocesso para tratar da requisic¸ ˜ao (UNIX inetd, internet service deamon)

Servidores Iterativos vs. servidores concorrentes: Servidores iterativos podem tratar de apenas um cliente por vez, em contraste com servidores concorrentes.

(22)

Processsos 3.4 Servers

Comunicac¸ ˜ao fora-de-banda

Ponto

´

E poss´ıvelinterromperum servidor depois que ele aceitou (ou est ´a prestes a aceitar) uma requisic¸ ˜ao de servic¸o?

Soluc¸ ˜ao 1

Use uma porta separada para dados urgentes:

Servidor tem uma porta separada para mensagens urgentes para o processo/thread.

Mensagem urgente chega ⇒requisic¸ ˜ao associada ´e suspensa.

Nota: exige que o S.O. tenhasuporte escalonamento baseado em

prioridades. Soluc¸ ˜ao 2

Uso de comunicac¸ ˜ao fora-de-banda da camada de transporte: Exemplo: TCP permite mensagens urgentes na mesma conex ˜ao

(23)

Processsos 3.4 Servers

Comunicac¸ ˜ao fora-de-banda

Ponto

´

E poss´ıvelinterromperum servidor depois que ele aceitou (ou est ´a prestes a aceitar) uma requisic¸ ˜ao de servic¸o?

Soluc¸ ˜ao 1

Use uma porta separada para dados urgentes:

Servidor tem uma porta separada para mensagens urgentes para o processo/thread.

Mensagem urgente chega ⇒requisic¸ ˜ao associada ´e suspensa.

Nota: exige que o S.O. tenhasuporte escalonamento baseado em prioridades.

Soluc¸ ˜ao 2

Uso de comunicac¸ ˜ao fora-de-banda da camada de transporte: Exemplo: TCP permite mensagens urgentes na mesma conex ˜ao

(24)

Processsos 3.4 Servers

Comunicac¸ ˜ao fora-de-banda

Ponto

´

E poss´ıvelinterromperum servidor depois que ele aceitou (ou est ´a prestes a aceitar) uma requisic¸ ˜ao de servic¸o?

Soluc¸ ˜ao 1

Use uma porta separada para dados urgentes:

Servidor tem uma porta separada para mensagens urgentes para o processo/thread.

Mensagem urgente chega ⇒requisic¸ ˜ao associada ´e suspensa.

Nota: exige que o S.O. tenhasuporte escalonamento baseado em prioridades.

Soluc¸ ˜ao 2

Uso de comunicac¸ ˜ao fora-de-banda da camada de transporte: Exemplo: TCP permite mensagens urgentes na mesma conex ˜ao

(25)

Processsos 3.4 Servers

Servidores e Estado

Servidores sem estado (stateless)

Nunca precisam manter informac¸ ˜aoprecisasobre o cliente ap ´os tratar uma requisic¸ ˜ao:

N ˜ao lembram se um arquivo foi aberto (simplesmente fecham o arquivo ap ´os acesso)

N ˜ao prometem invalidar cache de cliente N ˜ao mant ´em quem s ˜ao os clientes Consequ ˆencias

Clientes e servidores s ˜aocompletamente independentes

Inconsist ˆencias de estadodevido a falhas (crash) no cliente ou servidor

s ˜ao reduzidas

Poss´ıvelperda de desempenhodevido, p.ex., servidor n ˜ao poder

antecipar comportamento do cliente (exemplo, prefetching de blocos de arquivos)

(26)

Processsos 3.4 Servers

Servidores e Estado

Servidores sem estado (stateless)

Nunca precisam manter informac¸ ˜aoprecisasobre o cliente ap ´os tratar uma requisic¸ ˜ao:

N ˜ao lembram se um arquivo foi aberto (simplesmente fecham o arquivo ap ´os acesso)

N ˜ao prometem invalidar cache de cliente N ˜ao mant ´em quem s ˜ao os clientes Consequ ˆencias

Clientes e servidores s ˜aocompletamente independentes

Inconsist ˆencias de estadodevido a falhas (crash) no cliente ou servidor

s ˜ao reduzidas

Poss´ıvelperda de desempenhodevido, p.ex., servidor n ˜ao poder antecipar comportamento do cliente (exemplo, prefetching de blocos de arquivos)

(27)

Processsos 3.4 Servers

Servidores e Estado

Question

Comunicac¸ ˜ao orientada a conex ˜ao “casa” com projeto stateless?

(28)

Processsos 3.4 Servers

Servidores e Estado

Servidores Stateful

Mant ´em estado de clientes:

Registra que arquivo foi aberto (pre-fetching pode ser feito) Sabe que dados o cliente tem no cache, e permite que clientes mantenham c ´opias locais de dados compartilhados

Observac¸ ˜ao

Odesempenho de servidores stateful pode ser excelente, desde que

clientes possam manter c ´opias locais. Confiabilidade n ˜ao ´e um grande

problema.

(29)

Processsos 3.4 Servers

Servidores e Estado

Servidores Stateful

Mant ´em estado de clientes:

Registra que arquivo foi aberto (pre-fetching pode ser feito) Sabe que dados o cliente tem no cache, e permite que clientes mantenham c ´opias locais de dados compartilhados

Observac¸ ˜ao

Odesempenho de servidores stateful pode ser excelente, desde que clientes possam manter c ´opias locais. Confiabilidade n ˜ao ´e um grande problema.

(30)

Processsos 3.4 Servers

Clusters de servidores: tr ˆes n´ıveis (tiers) distintos

Logical switch (possibly multiple)

Application/compute servers Distributed file/database

system

Client requests

Dispatched request

First tier Second tier Third tier

Elemento crucial

O primeiro n´ıvel ´e em geral respons ´avel por passar requisic¸ ˜oes para o servidor apropriado.

(31)

Processsos 3.4 Servers

Tratamento de requisic¸ ˜oes

Observac¸ ˜ao

Fazer o primeiro n´ıvel tratar todas as comunicac¸ ˜oes do/para o cluster pode levar agargalo.

Soluc¸ ˜ao

V ´arias, mas uma popular ´eTCP-handoff

Switch Client

Server

Server Request (handed off)Request

Response Logically a

single TCP connection

(32)

Processsos 3.5 Migrac¸ ˜ao de C ´odigo

Migrac¸ ˜ao de C ´odigo

Abordagem para migrac¸ ˜ao de c ´odigo Migrac¸ ˜ao e recursos locais

Migrac¸ ˜ao e sistemas heterog ˆeneos

(33)

Processsos 3.5 Migrac¸ ˜ao de C ´odigo

Migrac¸ ˜ao de C ´odigo: um pouco de contexto

Before execution After execution Client Server Client Server

(34)

Processsos 3.5 Migrac¸ ˜ao de C ´odigo

Mobilidade Forte e Fraca

Componentes de objetos

Code segment: cont ´em o c ´odigo Data segment: cont ´em o estado

Execution state: cont ´em o contexto da thread executando o objeto

(35)

Processsos 3.5 Migrac¸ ˜ao de C ´odigo

Mobilidade Forte e Fraca

Mobilidade Fraca

Mover apenas segmentos de c ´odigo e dados (e reinicia execuc¸ ˜ao): Relativamente simples, se c ´odigo ´e port ´avel

Distinguecode shipping(push) decode fetching(pull)

Mobilidade Forte

Mover componente, incluindo estado de execuc¸ ˜ao

Migrac¸ ˜ao: mover objeto inteiro de uma m ´aquina para outra Cloning: iniciar um clone, e coloc ´a-lo no mesmo estado de execuc¸ ˜ao

(36)

Processsos 3.5 Migrac¸ ˜ao de C ´odigo

Gerenciando recursos locais

Problema

Um objeto usa recursos locais que podem ou n ˜ao estar dispon´ıveis na m ´aquina alvo.

Ligac¸ ˜ao recurso-m ´aquina (Tipos de recursos)

Fixo: recurso n ˜ao pode ser migrado, como hardware local (p. ex. de criptografia)

Colado (Fastened): recurso pode ser movido, mas custa caro Descolado (Unattached): recurso pode ser facilmente migrado junto com objeto (p. ex. cache)

(37)

Processsos 3.5 Migrac¸ ˜ao de C ´odigo

Gerenciando recursos locais

Ligac¸ ˜ao processo-recurso

Por identificador: o processo requer uma inst ˆancia espec´ıfica do recurso (p.ex. um banco de dados espec´ıfico)

Por valor: o processo requer o valor de um recurso (p.ex. um conjunto de entradas do cache)

Por tipo: o processo requer apenas que um recurso de tipo espec´ıfico seja dispon´ıvel (p.ex. uma tela colorida)

(38)

Processsos 3.5 Migrac¸ ˜ao de C ´odigo

Gerenciando recursos locais

Descolado Colado Fixo

ID MV (or GR) GR (or MV) GR

Valor CP (or MV, GR) GR (or CP) GR

Tipo RB (or MV, GR) RB (or GR, CP) RB (or GR)

GR = Estabelecer refer ˆencia global MV = Mover o recurso

CP = Copiar o valor do recurso

RB = Re-ligar a um recurso dispon´ıvel localmente

(39)

Processsos 3.5 Migrac¸ ˜ao de C ´odigo

Migrac¸ ˜ao em sistemas heterog ˆeneos

Problema principal

A m ´aqunia alvo pode n ˜ao seradequada para executar o c ´odigo migrado

A definic¸ ˜ao de contexto de processo/thread/processador ´e altamente dependente do hardware local, sistema operacional e sistema de execuc¸ ˜ao

´

Unica soluc¸ ˜ao

Usar umam ´aquina abstrataque ´e implementada em plataformas diferentes:

Linguagens interpretadas, efetivamente tendo sua pr ´opria VM VM Virtuais (como discutido anteriormente)

Referências

Documentos relacionados

Por último, temos o vídeo que está sendo exibido dentro do celular, que é segurado e comentado por alguém, e compartilhado e comentado no perfil de BolsoWoman no Twitter. No

Ao iniciarmos mais um ano de serviço na expansão do Reino de Deus servindo aos nossos Missionários que estão no Campo devemos ter em nós grande expectativa do quê Ele realizará em

Dessa maneira, os resultados desta tese são uma síntese que propõe o uso de índices não convencionais de conforto térmico, utilizando o Índice de Temperatura de Globo Negro e

São considerados custos e despesas ambientais, o valor dos insumos, mão- de-obra, amortização de equipamentos e instalações necessários ao processo de preservação, proteção

O Fundo pretende atingir seu objetivo investindo no mínimo 95% de seu patrimônio em cotas de Fundo de Investimento de Renda Fixa, que possuam como política de investimento

Local de realização da avaliação: Centro de Aperfeiçoamento dos Profissionais da Educação - EAPE , endereço : SGAS 907 - Brasília/DF. Estamos à disposição

grandiflora por estaquia, foram avaliados dois ambientes (viveiro e ambiente / condições de ocorrência natural), assim como o efeito do hormônio de enraizamento, o ácido

A avaliação dos diferentes métodos de preparação da superfície já impressa para a extrusão de uma nova camada na impressão tridimensional por deposição fundida