1 / 59

Declarative Overlay

Declarative Overlay. Alunos: Ailton Sergio Bonifacio - Doutorando Caio Ruan Nichele - Mestrando Diogo Andrade - Graduando   E-mail: {ailtons, caio, da06}@c3sl.ufpr.br. Professor: Eduardo Almeida. Maio/2010. UFPR / Departamento de Informática. Linguagem Declarativa Exemplo: PROLOG

kevin-blake
Télécharger la présentation

Declarative Overlay

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Declarative Overlay Alunos:Ailton Sergio Bonifacio - Doutorando Caio Ruan Nichele - Mestrando Diogo Andrade - Graduando   E-mail: {ailtons, caio, da06}@c3sl.ufpr.br Professor: Eduardo Almeida Maio/2010 UFPR / Departamento de Informática

  2. Linguagem Declarativa Exemplo: PROLOG Rede Overlay Overlay Declarativa P2 Questões em Aberto Trabalhos Futuros Conclusão Roteiro

  3. Linguagem Declarativa • Um programa é “declarativo” se ele descreve como é algo, ao invés de como criá-lo. • Uma abordagem diferente da tradicional linguagem de programação imperativa, tais como Fortran, C e Java, que exigem do programador um específico algoritmo para ser executado. • A linguagem declarativa descreve ao computador um conjunto de condições específicas, deixando ao computador decidir como processar as informações de melhor modo.

  4. Linguagem Declarativa • Um programa é “Declarativo” se está escrito em uma linguagem de programação funcional ou linguagem de programação lógica. • A linguagem declarativa permite ao programador se concentrar na lógica do algoritmo, isto é, sua preocupação está em definir critérios, e não decidir ações.

  5. Linguagem Declarativa – Características • Modelo de computação baseado num sistema onde as relações são específicas em termos de características dos dados de entrada; • Composta por conjuntos de definições ou equações que descrevem as relações que especificam o que deve ser computado, e não como ser computado; • Não existe ordem específica para execução; • Valores podem ser utilizados como expressões e definições.

  6. PROLOG • Linguagem baseada em um conjunto de conceitos: • casamento de padrões; • estruturação em forma de árvore; • backtracking automático. • Prolog é uma linguagem de programação que utiliza o modelo declarativo, com lógica matemática; • É uma linguagem especialmente associada com a inteligência artificial e semântica computacional; • Apresenta uma semântica declarativa inerente à lógica.

  7. PROLOG • Conciliar o uso da lógica como uma linguagem declarativa de representação do conhecimento com a representação procedimental do conhecimento; • Suporta código recursivo e iterativo para a descrição de processos e problemas; • Permite associar o processo de especificação ao processo de codificação de programas; • Utiliza uma base de dados de fatos e de relações lógicas (regras) que exprimem o domínio relacional do problema a resolver.

  8. PROLOG • PROLOG é mais direcionada ao conhecimento, menos direcionada aos algoritmos; • PROLOG não possui estruturas de controle como do-while, repeat-until, if-then-else, for, case ou switch como os encontrados em outras linguagens; • Em PROLOG utiliza-se métodos lógicos para declarar como o programa atinge seu objetivo; • A força do PROLOG reside em sua capacidade de Busca e Casamento de Padrões.

  9. PROLOG • Permite a obtenção de respostas alternativas, uma vez que várias soluções diante da base de dados podem ser encontradas;

  10. PROLOG: conceitos • Átomos • As constantes de texto são introduzidas por meio de átomos. Um átomo é uma seqüência constituída de letras e números, mas iniciando com uma letra minúscula. • Ex. joaquim, 'quem é você?' , guarda-roupa • Números • Um número é uma seqüência de dígitos, permitindo também os sinais de . (para números reais), - (número negativo) e e (notação científica). • Ex. 814, 54.876 • Variáveis • Variáveis são declaradas da mesma forma que átomos, porém iniciando com uma letra maiúscula. • Ex. Minha-var, Teste

  11. PROLOG: conceitos • Termo Composto • É a única forma de se expressar estruturas de dados complexas em Prolog; • Consiste de uma cabeça e parâmetros listados entre parênteses e separados por vírgulas. • Ex. suc(suc(suc(0))) • Predicado • É a construção usada para declarar algo a respeito de objetos. Em Prolog, a declaração é representada por um átomo e é seguida pelos objetos, que devem ser colocados entre parênteses e estar separados uns dos outros por vírgulas. • Ex. robô(joão) , homem(silvestre)

  12. PROLOG: conceitos • Frases • Consultas à base de dados de fatos • casado(pedro,maria). • casado(carlos,ana). • ?- casado(carlos,maria). • ?- casado(carlos,ana). • Fatos • gosta (josé, maria)

  13. PROLOG: conceitos • Regras • São utilizadas para construir relações entre fatos, explicitando as dependências entre eles. Ao contrário dos fatos, que são incondicionais, as regras especificam coisas que podem ser verdadeiras se algumas condições forem satisfeitas. • Ex. gosta (joão, X) :- gosta (X, cachaça).

  14. PROLOG: conceitos • Dizemos que dois fatos (ou um fato e uma questão) se unificam (são iguais) se: • seus predicados são os mesmos, • eles possuem o mesmo número de argumentos e, • os argumentos são iguais. • o PROLOG encontra um fato que se iguala a questão, ele retorna "YES", indicando que a questão tem resposta verdadeira; caso contrário, ele retorna "NO".

  15. PROLOG - exemplo • Programa: factorial (0,1). factorial (N,F) :- N>0, N1 is N-1, Factorial (N1,F1), F is N*F1. • Consulta: ?- factorial(3,W).

  16. PROLOG - exemplo Estrutura de Árvores

  17. Exemplo: Concatenandolistasa e b list procedure cat(list a, list b) { list t = list u = copylist(a); while (t.tail != nil) t = t.tail; t.tail = b; return u; } Em uma Linguagem Imperativa cat(a,b)  if b = nil then a else cons(head(a), cat(tail(a),b)) Em uma Linguagem Funcional cat([], Z, Z). cat([H|T], L, [H|Z]) :- cat(T, L, Z). Em uma Linguagem Declarativa

  18. Overlay Internet Overlays: Visão Geral • “Overlay”: componente de roteamento e encaminhamento de mensagens de qualquer sistema distribuído não trivial

  19. Overlays - Exemplos e Aplicações • Redes Overlay são amplamente utilizadas atualmente: • Roteamento e encaminhamento em sistemas distribuídos de larga escala; • Fornecer novas funcionalidades sobre infra-estruturas existentes. • Alguns exemplos: • Entrega de pacotes: Multicast, RON; • Entrega de conteúdo: CDNs, P2P file sharing, DHTs; • Sistemas empresarias: MS Exchange. Rede Overlay é uma parte integrante de muitos sistemas distribuídos de larga escala.

  20. Overlay: Problema • Não é trivial projetar, construir e implantar uma rede overlay: • Processo Iterativo de Projeto: • Propriedades desejáveis  Protocolos e algoritmos distribuídos  Simulação  Implementação  Implantação  Repita… • Cada iteração toma muito tempo e utiliza uma diversidade de conhecimento.

  21. Esforços para inovação da internet • Evolução: Redes Overlay • Comercial (Akamai, VPN, servidores MS Exchange) • P2P (compartilhamento de arquivos, telefonia) • Pesquisas (PlanetLab) • Revolução: • Programa 1NSF Future Internet Design (FIND) • Iniciativa 2NSF Global Environment for Network Investigations (GENI) 1 http://www.nets-find.net/2 http://www.geni.net/ Faltam: ferramentas de software que podem acelerar significativamente a inovação da Internet

  22. Overlay Declarativa • Tornar o desenvolvimento de redes mais acessível para os desenvolvedores de aplicações distribuídas • Ferramenta para prototipagem rápida de novas redes overlay • Especificar redes overlay em alto nível • Tradução automática para especificação executável • Ocultar tudo que não se quer tocar • Visa uma performance de bom desempenho • Foca na aceleração do processo iterativo de design • Permite ajuste tardio da implementação • Fazer para os sistemas de redes o que o SQL fez para os modelos de bancos de dados relacionais

  23. Overlay Declarativa: A razão • O conjunto de tabelas de roteamento em uma rede representa uma estrutura distribuída de dados • A estrutura de dados é caracterizada por um conjunto de propriedades ideais que definem a rede • Pensando em termos de estrutura e não de protocolo • Roteamento é o processo de manutenção destas propriedades a despeito de mudança dos fatos fundamentais • Falhas, mudanças de topologia, carga, políticas...

  24. Duas direções: • Expressão declarativa de protocolos de roteamento da internet • Loo et. al., ACM SIGCOMM 2005 • Implementação Declarativa de Redes Overlay • Loo et. al., ACM SOSP 2005 • O foco deste seminário

  25. Overlay Declarativa: P2 • Utiliza uma linguagem lógica declarativa - Overlog • Baseada em Datalog • O foco é sobre modelos de algoritmos e protocolos, e não a implementação. • Analisa e executa as especificações utilizando uma arquitetura de fluxo de dados para a construção e manutenção de redes overlay • Objetivo: Expressar redes overlay de uma forma altamente compacta e reusável

  26. P2: Roteamento como Processamento de Consultas • Em termos de banco de dados, a tabela de roteamento é uma visão sobre as mudanças de estado e condições da rede; • Implementação de uma engine genérica de protocolo de roteamento como um processador de consultas; • Utilização de um framework de fluxo de dados em tempo de execução para a manutenção das overlays; • Elementos de Fluxo de Dados fornecem um modelo de implementação para consultas.

  27. Nodo Tradicional de uma rede Overlay Traditional Overlay Node Packets Out Packets In Overlay Program Fonte: Implementing Declarative Overlays - Boon Thau Loo - SOSP2005

  28. Overlay description: declarative query language Runtime dataflows maintain network state Overlay description: dataflow scripting language Planner Nodo de uma rede Overlay P2 Packets Out Packets In Overlay Program Fonte: Implementing Declarative Overlays - Boon Thau Loo - SOSP2005 P2 Query Processor

  29. Vantagens da Abordagem P2 • Linguagem de consulta declarativa • Expressão concisa e de alto nível • Estaticamente verificável (terminações, corretude) • Facilidade de modificação • Framework unificador para implementação • Otimizações automáticas • Nível de consulta e fluxo de dados (dataflows)

  30. Modelo de Dados • Dados Relacionais: tuplas e tabelas relacionais • Dois tipos de tabelas: • Armazenadas: • E.g. neighbor(Src,Dst), forward(Src,Dst,NxtHop) • Fluxos (streams) transientes: • Mensagens da rede: message (Rcvr, Dst) • Eventos baseados em tempo: periodic (NodeID,10)

  31. Framework do Dataflow • Gráficos do Fluxo de Dados • Em C++ • Similar ao Click1: • Elementos de fluxo (mux, demux, queues) • Elementos da rede (cc, retry, rate limitation) • Além disso: • Operadores relacionais (junções, seleções, projeções e agregação) 1 Click Modular Router Project - http://read.cs.ucla.edu/click/faq

  32. Network Specifications as Queries NetworkProtocols P2 Declarative Networking System P2 Declarative Networking System Query Planner Dataflow Engine Dataflow Fonte: http://p2.cs.berkeley.edu

  33. Exemplo: Roteamento do Anel • Cada nó tem um endereço (i.e. endereço IP) e um identificador (randômico) • Cada objeto tem um identificador • Nodos e objetos são ordenados dentro do anel por seus identificadores • Objetos são “servidos” por seu nodo sucessor • Cada nodo conhece seu sucessor no anel • Para encontrar o objeto K, caminha-se ao redor do anel até localizar o nodo sucessor imediato K’s

  34. Exemplo: Roteamento do Anel • Como encontrar o nodo responsável pela chave k? • n.lookup(k) if k in (n, n.successor) return n.successor else return n.successor. lookup(k)

  35. n.lookup(k) if k in (n, n.successor) return n.successor else return n.successor. lookup(k) • Tuplas do estado do Nodo • node(NAddr, N) • successor(NAddr, Succ, SAddr) • Tuplas dos eventos transientes • lookup ( Addr, Req, K ) • response( Addr, K, Owner ) Estado do Anel

  36. send response( Req, K, SAddr ) to Req where lookup( NAddr, Req, K ) @ NAddr and node ( NAddr, N ), and succ ( NAddr, Succ, SAddr ), and K in ( N, Succ ], • n.lookup(k) if k in (n, n.successor) return n.successor else return n.successor. lookup(k) • Node state tuples • node(NAddr, N) • successor(NAddr, Succ, SAddr) • Transient event tuples • lookup ( Addr, Req, K ) • response( Addr, K, Owner ) Pseudocódigo como uma Query

  37. send response( Req, K, SAddr ) to Req where lookup( NAddr, Req, K ) @ NAddr and node ( NAddr, N ), and succ ( NAddr, Succ, SAddr ), and K in ( N, Succ ], send lookup( Req, K, SAddr ) to SAddr where lookup( NAddr, Req, K ) @ Naddr and node ( NAddr, N ), and succ ( NAddr, Succ, SAddr ), and K not in ( N, Succ ], • n.lookup(k) if k in (n, n.successor) return n.successor else return n.successor. lookup(k) • Node state tuples • node(NAddr, N) • successor(NAddr, Succ, SAddr) • Transient event tuples • lookup ( Addr, Req, K ) • response( Addr, K, Owner ) Pseudocódigo como uma Query

  38. Implementação:Do modelo de consultas (query) para o Dataflow • Problema tradicional em bancos de dados • Transformar a lógica em álgebra relacional • Junções, projeções, seleções, agregações, etc • Implementar os elementos como gráfico de dataflow • C.f. Click, PIER, etc. • Fluxo de tuplas através de graphb • Executar este gráfico para manter a rede overlay

  39. Da Query para o Dataflow send response( Req, K, SAddr ) to Reqwhere lookup( NAddr, Req, K ) @ NAddr & node ( NAddr, N )& succ ( NAddr, Succ, SAddr ) & K in ( N, Succ ] send lookup( Req, K, SAddr ) to SAddrwhere lookup( NAddr, Req, K ) @ Naddr & node ( NAddr, N )& succ ( NAddr, Succ, SAddr ) & K not in ( N, Succ ]

  40. Da Query para o Dataflow send response( Req, K, SAddr ) to Reqwhere lookup( NAddr, Req, K ) @ NAddr & node ( NAddr, N )& succ ( NAddr, Succ, SAddr ) & K in ( N, Succ ] send lookup( Req, K, SAddr ) to SAddrwhere lookup( NAddr, Req, K ) @ Naddr & node ( NAddr, N )& succ ( NAddr, Succ, SAddr ) & K not in ( N, Succ ]

  41. Da Query para o Dataflow send response( Req, K, SAddr ) to Reqwhere lookup( NAddr, Req, K ) @ NAddr & node ( NAddr, N )& succ ( NAddr, Succ, SAddr ) & K in ( N, Succ ] send lookup( Req, K, SAddr ) to SAddrwhere lookup( NAddr, Req, K ) @ Naddr & node ( NAddr, N )& succ ( NAddr, Succ, SAddr ) & K not in ( N, Succ ]

  42. Da Query para o Dataflow send response( Req, K, SAddr ) to Reqwhere lookup( NAddr, Req, K ) @ NAddr & node ( NAddr, N )& succ ( NAddr, Succ, SAddr ) & K in ( N, Succ ] send lookup( Req, K, SAddr ) to SAddrwhere lookup( NAddr, Req, K ) @ Naddr & node ( NAddr, N )& succ ( NAddr, Succ, SAddr ) & K not in ( N, Succ ]

  43. Da Query para o Dataflow send response( Req, K, SAddr ) to Reqwhere lookup( NAddr, Req, K ) @ NAddr & node ( NAddr, N )& succ ( NAddr, Succ, SAddr ) & K in ( N, Succ ] send lookup( Req, K, SAddr ) to SAddrwhere lookup( NAddr, Req, K ) @ Naddr & node ( NAddr, N )& succ ( NAddr, Succ, SAddr ) & K not in ( N, Succ ]

  44. Da Query para o Dataflow send response( Req, K, SAddr ) to Reqwhere lookup( NAddr, Req, K ) @ NAddr & node ( NAddr, N )& succ ( NAddr, Succ, SAddr ) & K in ( N, Succ ] send lookup( Req, K, SAddr ) to SAddrwhere lookup( NAddr, Req, K ) @ Naddr & node ( NAddr, N )& succ ( NAddr, Succ, SAddr ) & K not in ( N, Succ ]

  45. Da Query para o Dataflow send response( Req, K, SAddr ) to Reqwhere lookup( NAddr, Req, K ) @ NAddr & node ( NAddr, N )& succ ( NAddr, Succ, SAddr ) & K in ( N, Succ ] send lookup( Req, K, SAddr ) to SAddrwhere lookup( NAddr, Req, K ) @ Naddr & node ( NAddr, N )& succ ( NAddr, Succ, SAddr ) & K not in ( N, Succ ]

  46. Da Query para o Dataflow send response( Req, K, SAddr ) to Reqwhere lookup( NAddr, Req, K ) @ NAddr & node ( NAddr, N )& succ ( NAddr, Succ, SAddr ) & K in ( N, Succ ] send lookup( Req, K, SAddr ) to SAddrwhere lookup( NAddr, Req, K ) @ Naddr & node ( NAddr, N )& succ ( NAddr, Succ, SAddr ) & K not in ( N, Succ ]

  47. lookup Strand 1 response node succ lookup Strand 2 lookup Da Query para o Dataflow • Um strand por subconsulta • A ordem do Strand é indiferente • Strands podem ser executados em paralelo

  48. Strand 1 U lookup R D x P Strand 2 lookup Sched ... C R x C ... C T x C Q u e ... u e Q u e u e D e m u U x T D node succ ... x P Da Query para o Dataflow

  49. P2 1. Sistema Distribuído especificado em uma linguagem de consulta Descrição da Rede Overlay 2. Compilado dentro de gráfico otimizado de elementos dataflow 3. Gráfico executado diretamente para manter as tabelas de roteamento e o estado da rede overlay Packets in Packets out

  50. P2 - Estado atual • Implementação do Chord em P2 • DHT popular • Complexa rede overlay • Manutenção dinâmica • Como se sabe que funciona? • Mesmas propriedades de alto nível • Logarítmica de diâmetro e estado • Roteamento consistente • Restrições de propriedades como consultas adicionais • Desempenho comparável as implementações tradicionais

More Related