Sistemas Distribuídos Localização de Objetos Distribuídos

48
Sistemas Distribuídos Sistemas Distribuídos Localização de Objetos Localização de Objetos Distribuídos Distribuídos Especialização em Redes de Especialização em Redes de Computadores Computadores Prof. Fábio M. Costa Prof. Fábio M. Costa Instituto de Informática - UFG Instituto de Informática - UFG

description

Sistemas Distribuídos Localização de Objetos Distribuídos. Especialização em Redes de Computadores Prof. Fábio M. Costa Instituto de Informática - UFG. Motivação. Evitar o uso de endereços físicos para a localização de componentes Nomeação - PowerPoint PPT Presentation

Transcript of Sistemas Distribuídos Localização de Objetos Distribuídos

Page 1: Sistemas Distribuídos Localização de Objetos Distribuídos

Sistemas DistribuídosSistemas Distribuídos

Localização de Objetos Localização de Objetos DistribuídosDistribuídos

Especialização em Redes de Especialização em Redes de ComputadoresComputadores

Prof. Fábio M. CostaProf. Fábio M. CostaInstituto de Informática - UFGInstituto de Informática - UFG

Page 2: Sistemas Distribuídos Localização de Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 2

Motivação• Evitar o uso de endereços físicos para a

localização de componentes• Nomeação

– Localização de componentes por meio de nomes externos

– Similar às páginas brancas de um catálogo telefônico

• Trading– Localização de componentes por meio de

características de serviço– Similar às páginas amarelas

Page 3: Sistemas Distribuídos Localização de Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 3

Visão Geral

• Nomeação de Objetos– Princípios– Serviço de Nomes de CORBA– COM Monikers– Java/RMI Registry

• Trading de Objetos– Princípios– Serviço de Trading de CORBA

Page 4: Sistemas Distribuídos Localização de Objetos Distribuídos

Nomeação

Page 5: Sistemas Distribuídos Localização de Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 5

Princípios Básicos

• Plataformas de middleware orientadas a objetos utilizam-se de referências de objetos para endereçar objetos servidores

• É necessária uma forma de obter tais referências de objetos sem a necessidade de suposições sobre localização física

• Um nome é uma seqüência de cadeias de caracteres que pode ser “ligada” a uma referência de objeto (name binding)

• Um nome pode ser resolvido para se obter a referência de objeto correspondente

Page 6: Sistemas Distribuídos Localização de Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 6

Princípios Básicos (cont.)• Pode haver muitos objetos servidores em um

sistema de objetos distribuídos• Objetos servidores podem ter vários nomes• Isto leva a um grande número de “ligações de

nomes”• O espaço de nomes deve ser organizado em uma

hierarquia para evitar– conflitos de nomes– baixo desempenho na resolução de nomes

• Esta hierarquia pode ser obtida através de contextos de nomes

Page 7: Sistemas Distribuídos Localização de Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 7

Princípios Básicos:Contextos de Nomes

Cup

Winners

1.FC

Ka

isers

laute

rn

Pre

mie

r First

M

an

Unite

d

Chelsea

QPR

South End

United

EnglandGermany

1. L

iga 2. Liga

BVB

Bayern Boch

um

Lautern

UEFA

Manchester

United

Page 8: Sistemas Distribuídos Localização de Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 8

Princípios Básicos:Nomes Compostos

• Nomes são compostos por possivelmente mais do que um componente (string)

• A seqüência de componentes de um nome descreve uma caminho através do grafo de contextos de nomes

• Exemplo:– (“UEFA”, “England”, “Premier”, “Chelsea”)

Page 9: Sistemas Distribuídos Localização de Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 9

Princípios Básicos:Servidor de Nomes

• “Ligações” de nomes (a referências de objetos) são administradas por servidores de nomes

• Nem todo objeto servidor precisa de um nome• Alguns objetos servidores podem ter vários nomes• Os servidores de nomes devem armazenar as

amarrações de nomes persistentemente• Os servidores de nomes devem ser “calibrados”

com vistas à eficiência na resolução de nomes• O próprio servidor de nomes pode ser distribuído

Page 10: Sistemas Distribuídos Localização de Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 10

O Serviço de Nomes de CORBA

• Suporta a ligação (binding) de nomes a referências de objetos CORBA

• Escopo de um nome: contexto de nomes• Múltiplos nomes podem ser definidos para

uma mesma referência de objeto• Nem todas as referências de objetos

precisam de nomes

Page 11: Sistemas Distribuídos Localização de Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 11

Nomes em CORBA

• Nomes são compostos por nomes simples• Nomes simples: pares valor-tipo• O atributo valor é usado para resolução de

nomes• O atributo tipo é usado para fornecer

informação a respeito do papel do objeto

Page 12: Sistemas Distribuídos Localização de Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 12

Tipos IDL para Nomesmodule CosNaming { typedef string Istring;

struct NameComponent { Istring id; Istring kind; }; typedef sequence <NameComponent> Name; ...};

Page 13: Sistemas Distribuídos Localização de Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 13

Interfaces IDL do Serviço de Nomes

• O Serviço de Nomes é especificado através de duas interfaces– NamingContext define operações para ligar

objetos a nomes e para a resolução de nomes– BindingIterator define operações para iterar

em um conjunto de nomes definido em um dado contexto de nomes

Page 14: Sistemas Distribuídos Localização de Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 14

Interface NamingContextinterface NamingContext { void bind(in Name n, in Object obj) raises (NotFound, ...); Object resolve(in Name n) raises (NotFound,CannotProceed,...); void unbind (in Name n) raises (NotFound, CannotProceed...); NamingContext new_context(); NamingContext bind_new_context(in Name n) raises (NotFound, ...) void list(in unsigned long how_many, out BindingList bl, out BindingIterator bi);};

Page 15: Sistemas Distribuídos Localização de Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 15

Interface BindingIterator

interface BindingIterator { boolean next_one(out Binding b); boolean next_n(in unsigned long how_many, out BindingList bl); void destroy();}

Page 16: Sistemas Distribuídos Localização de Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 16

Um Cenário para o Serviço de Nomes: Ligação

• Exemplo: Promover um time para a 1a. Divisão e rebaixar outro

1L=resolve("UEFA","Germany","1. Liga")

root: Namingroot: NamingContextContextc:Clientc:Client 1L:Naming1L:Naming

ContextContext

bind("Arm. Bielefeld", bielefeld)

unbind("Eintr. Frankfurt")

Page 17: Sistemas Distribuídos Localização de Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 17

Inicialização do Serviço de Nomes

– Como obter o Contexto de Nomes Raiz?– Através da Interface do ORB

module CORBA { interface ORB { typedef string ObjectId; typedef sequence <ObjectId> ObjectIdList; exception InvalidName{}; ObjectIdList list_initial_services(); Object resolve_initial_references (in ObjectId identifier) raises(InvalidName); }}

Page 18: Sistemas Distribuídos Localização de Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 18

Um Cenário para o Serviço de Nomes: Resolução

• Exemplo: Imprimir o elenco de um time

root: Namingroot: NamingContextContextc:Client

D=resolve("UEFA","Germany")

D:NamingD:NamingContextContext do:Teamdo:Team

do=resolve("1. Liga","BVB")

print()

Page 19: Sistemas Distribuídos Localização de Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 19

Cenário para o Serviço de Nomes: Iteração

• Imprimir os nomes de todos os times do campeonato

t:Teamc:Client 1.Liga:NamingContext

list(0,bl,bi)

bi:BindingIterator

t=next_one().valuename()t=next_one().valuename()

name()t=next_one().value

...

Page 20: Sistemas Distribuídos Localização de Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 20

O Serviço de Nomes em COM: Monikers

• Em COM, monikers são usados para “desacoplar os clientes dos algoritmos e da informação que são necessários para encontrar objetos servidores” [Don Box, 98]

• Suporta a ligação e resolução de nomes• O espaço de nomes pode ser estruturado

hierarquicamente

Page 21: Sistemas Distribuídos Localização de Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 21

O Serviço de Nomes em COM: Interface IMoniker

interface IMoniker : IPersistStream { HRESULT BindToObject([in] IBindCtx *pbc, [in, unique] IMoniker *pmkToLeft, [in] REFIID riid, [out, iid_is(riid)] void **ppv); ...}

Page 22: Sistemas Distribuídos Localização de Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 22

Criação de Monikers: Interface IParseDisplayName

• Para ser nomeável, objetos servidores precisam implementar esta interface

• Cria-se um objeto moniker a partir de um nome textual externo, chamado de display name

interface IParseDisplayName {HRESULT MkParseDisplayName([in] IBindCtx *pbc, [in,string] const OLECHAR *pwszName, [out] ULONG *ppchEaten [out] IMoniker **ppmk);}

Page 23: Sistemas Distribuídos Localização de Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 23

Avaliação

• COM suporta nomes internos (monikers) e nomes externos (display names)– Isto complica o esquema de nomes

• O Serviço de Nomes de COM é estreitamente ligado a outras partes da especificação de COM (containers)

• O Serviço de Nomes de COM não é transparente para os designers de objetos servidores, que precisam implementar a interface IParseDisplayName

Page 24: Sistemas Distribuídos Localização de Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 24

O Serviço de Nomes em RMI: RMI Registry

• Versão simplificada do Serviço de Nomes de CORBA

• Sem suporte para nomes compostos• Restrição de segurança: ligações de nomes

não podem ser criadas a partir de máquinas remotas

• Deve haver um registry em cada máquina• Diferentes registries devem estar integrados

dentro de um espaço de nomes federado

Page 25: Sistemas Distribuídos Localização de Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 25

RMI Registrypackage java.rmi.registry;public interface Registry extends java.rmi.Remote { public static final int REGISTRY_PORT = 1099; public java.rmi.Remote lookup(String name) throws java.rmi.RemoteException, java.rmi.NotBoundException, java.rmi.AccessException; public void bind(String name, java.rmi.Remote obj) throws java.rmi.RemoteException, java.rmi.AlreadyBoundException, java.rmi.AccessException; public void rebind(String name, java.rmi.Remote obj) throws java.rmi.RemoteException, java.rmi.AccessException; public void unbind(String name) throws java.rmi.RemoteException, java.rmi.NotBoundException, java.rmi.AccessException; public String[] list() throws java.rmi.RemoteException, java.rmi.AccessException;

Page 26: Sistemas Distribuídos Localização de Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 26

Usando o RMI Registry

c:Client:LocateRegistry

root:Registry do:Team

E=lookup("UEFA")

root=getRegistry(“ns.fifa.org”)

E: Registry

1L:Registry

BVB:Registry

BVB=lookup(“BVB”)

print()

D=lookup(“Germany”)

1L=lookup(“1. Liga”)

Page 27: Sistemas Distribuídos Localização de Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 27

Avaliação

• A ausência de nomes hierárquicos aumenta o número de operações remotas necessárias para a resolução de nomes

• A descoberta do registry raiz não é necessariamente transparente de localização

• A restrição de segurança quebra o conceito de transparência de localização

Page 28: Sistemas Distribuídos Localização de Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 28

Limitações de Serviços de Nomes

• Em todas as abordagens mencionadas:– Os clientes sempre devem identificar o servidor

específico por meio de um nome• Inapropriado se o cliente apenas deseja usar

um serviço com certas características e qualidade, mas não sabe em que servidor:– Comércio eletrônico– Vídeo sob demanda– Venda automática de bilhetes de cinema

Page 29: Sistemas Distribuídos Localização de Objetos Distribuídos

Trading

Page 30: Sistemas Distribuídos Localização de Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 30

Motivação

• Localização de objetos de maneira transparente de localização

• O uso de um serviço de nomes é simples, mas pode não ser apropriado quando:– clientes não conhecem os servidores– há múltiplos servidores para o mesmo serviço

• Trading oferece suporte para a localização de servidores com base na funcionalidade e qualidade de serviço

• Serviço de Nomes ↔ Páginas brancas• Trading ↔ Páginas Amarelas

Page 31: Sistemas Distribuídos Localização de Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 31

Características de um Serviço de Trading

• O Trader opera como um intermediador entre clientes e servidores (mas não no mesmo sentido que o ORB!)

• Permite ao cliente mudar de perspectiva– de “quem” para “o que”

• Análogo à idéia de um corretor de seguros

Exporter

Trader

Importer1:e

xpor

t 2:query

3:invoke

Page 32: Sistemas Distribuídos Localização de Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 32

Características de um Serviço de Trading (cont.)

• Linguagem comum entre cliente e servidor– Tipos de serviço– Qualidades de serviço

• Servidor se registra junto ao trader• Servidor define uma qualidade de serviço

(QoS) garantida– Definição estática de QoS– Definição dinâmica de QoS

Page 33: Sistemas Distribuídos Localização de Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 33

Características de um Serviço de Trading (cont.)

• Clientes consultam o trader para obter– um serviço de um certo tipo– com um certo nível de qualidade

• O trader oferece suporte para– comparação de tipos de serviço com as

propriedades especificadas– pesquisa por serviços

Page 34: Sistemas Distribuídos Localização de Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 34

Exemplo

• Serviço de vídeo-sob-demanda da Hongkong Telecom:

Trader

Video-on-demandprovider

MGM

WarnerUser

Server

Independent

Page 35: Sistemas Distribuídos Localização de Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 35

O Processo de Trading• Exemplo: servidor de vídeo-sob-demanda

:Client:Client :Trader:Trader MGM:VoDSMGM:VoDS Warner:VoDSWarner:VoDS

query()export()

export()

download()modify()

Page 36: Sistemas Distribuídos Localização de Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 36

Definição de Tipos de Serviço• Um tipo de serviço define:

– A funcionalidade provida por um serviço– As qualidades desta do serviço provido

• A funcionalidade é definida por meio de um tipo de objeto (interface)

• QoS é definida com base em propriedades– nome da propriedade– tipo da propriedade– valor da propriedade– modo da propriedade

• obrigatório / opcional• leitura apenas / modificável

Page 37: Sistemas Distribuídos Localização de Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 37

Exemplo de Tipo de Serviço

typedef enum {VGA,SVGA,XGA} Resolution;service video_on_demand { interface VideoServer; readonly mandatory property float fee; readonly mandatory property Resolution res; modifiable optional property float bandwidth;}

Page 38: Sistemas Distribuídos Localização de Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 38

Hierarquia de Tipos de Serviço

• Um tipo de objeto pode ter várias implementações com diferentes QoS

• O mesmo tipo de objeto pode ser usado em diferentes tipos de serviço

• Tipo de serviço S é um subtipo do tipo de serviço S´ sse– o tipo de objeto de S é idêntico ou é um subtipo do tipo

de objeto de S´– S tem pelo menos todas as propriedades definidas para S´

• Relação de sub-tipagem pode ser explorada pelo trader na busca por serviços de um determinado tipo

Page 39: Sistemas Distribuídos Localização de Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 39

Definição de Restrições

• O importador (cliente) define, como parte da consulta ao trader, as qualidades de serviço desejáveis

• Exemplo:– custo<10 AND res>=SVGA AND bandewidth>=256

• Em uma consulta, o trader considera apenas aquelas ofertas de serviço que obedeçam à restrição

Page 40: Sistemas Distribuídos Localização de Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 40

Políticas de Trading

• Dependendo das restrições e dos serviços disponíveis, um grande conjunto de ofertas pode ser retornado por uma consulta

• Políticas de trading são usadas para restringir o tamanho da lista de ofertas de serviço retornadas– Especificação de um limite máximo– Restrição sobre a substituição de serviço (por subtipos)– Restrição sobre as propriedades modificáveis (as quais

podem ser alteradas no período entre a busca do serviço e seu efetivo uso através de requisições do cliente)

Page 41: Sistemas Distribuídos Localização de Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 41

Federação de Traders

• Demanda por escalabilidade• Um trader participando de uma federação:

– oferece para os demais traders os serviços sobre os quais ele tem conhecimento

– encaminha para outros traders consultas para serviços sobre os quais não tem conhecimento

• Problemas– importações de serviços podem não terminar– duplicação de ofertas

Page 42: Sistemas Distribuídos Localização de Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 42

Grafo de TradingT1

T2 T3

T4

query.hop_count=4

def_follow_policy=always

max_hop_count=5

query.hop_count=0Service OfferTrader AttributeLink

max_hop_count=1

Page 43: Sistemas Distribuídos Localização de Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 43

O Serviço de Trading de CORBA

Application Objects

CORBAfacilities

CORBAservices

DomainInterfaces

Object Request Broker

ObjectTrader

Page 44: Sistemas Distribuídos Localização de Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 44

Interfaces do Serviço de Trading de CORBA

TraderComponents Support Attributes ImportAttributesLinkAttributes

list_offers()…

export()withdraw()modify()

RegisterLink

add_link()remove_link()describe_link()modify_link()

Lookup

query()

Admin

Page 45: Sistemas Distribuídos Localização de Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 45

Definindo Qualidade de Serviço

typedef Istring PropertyName;typedef sequence<PropertyName> PropertyNameSeq;typedef any PropertyValue;struct Property { PropertyName name; PropertyValue value;};typedef sequence<Property> PropertySeq;enum HowManyProps {none, some, all}union SpecifiedProps switch (HowManyProps) { case some : PropertyNameSeq prop_names;};

Page 46: Sistemas Distribuídos Localização de Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 46

Interface do Trader para Exportadores de Serviços

interface Register { OfferId export(in Object reference, in ServiceTypeName type, in PropertySeq properties) raises(...); OfferId withdraw(in OfferId id) raises(...);

void modify(in OfferId id, in PropertyNameSeq del_list, in PropertySeq modify_list) raises (...);};

Page 47: Sistemas Distribuídos Localização de Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 47

Interface do Trader para Importadores de Serviços

interface Lookup { void query(in ServiceTypeName type, in Constraint const, in Preference pref, in PolicySeq policies, in SpecifiedProps desired_props, in unsigned long how_many, out OfferSeq offers, out OfferIterator offer_itr, out PolicyNameSeq Limits_applied) raises (...);};

Page 48: Sistemas Distribuídos Localização de Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 48

Pontos-Chave

• Objetos distribuídos podem ser localizados por meio de um serviço de nomes ou de trading

• Um serviço de nomes liga nomes (conhecidos externamente) a referências de objetos oferece suporte para resolução de nomes para revelar a referência de objeto ligada

• Trading oferece suporte para a localização de objetos com base na funcionalidade que os mesmos oferecem, bem como na qualidade que garantem