Distributed System L-7 (1034027)
Текст из файла
РаспределенныевычислительныесистемыЛекция №7:Определение местонахожденияраспределенных объектовАлексей В. Бурдаков, к.т.н.burdakov@usa.net6-1Мотивация• Важное свойство распределенной системы –прозрачность расположения• Пример системы с зашитым IP-адресом:•Невозможно перенести сервер на другой узел• Объектная ссылка – универсальный механизмадресации объектов• Каким образом получить объектную ссылку?•Именование (нахождение объектов по логическимименам - «белые страницы»)•Трейдинг (нахождение объектов по функциональным инефункциональным (качественным) характеристикам –«желтые страницы»)6-21План лекции• Именование объектов• Объектный трейдинг6-3Общие принципы именования• ОО ПО среднего слоя использует объектныессылки для адресации серверных объектов• Необходим способ получения таких ссылок• Имя (последовательность строк) могло бы бытьпривязано к объектной ссылке• По имени могла бы быть получена ссылка6-42Общие принципы именования• В распределенной системе может бытьмножество распределенных объектов• Серверные объекты могут иметь несколько имен• Это приводит к большому объему связок имяссылка в системе• Пространство имен д.б.
организованоиерархически для того, чтобы избежать:•Конфликты имен•Деградацию производительности при привязке иполучении ссылок• Иерархия м.б. достигнута с помощью контекстов6-5Контексты именованияUEFAQPRPremierMUn anitedternea1.Ka FCisersBochutdEnuthSo itedUnBVBFirselsChnManchesterUnitedternLauyerBalau2.gam1.
LigaLiEnglandCup rseWinnnyGerma6-63Общие принципы именования:композитные имена• Имена составлены из возможно более чемодного компонента• Используется для описания навигации черезнесколько контекстов именования• Пример:(“UEFA”, “England”, “Premier”, “Chelsea”)6-7Общие принципы именования:поведение сервера именования• Привязки имен к ссылкам управляютсясерверами имен• Не для каждого серверного объекта нужно имя• Серверные объекты могут иметь несколько имен• Серверы имен должны долговременно хранитьпривязку• Эффективное получение ссылок по именам• Серверы именования м.б. распределенными6-84Сервис именования CORBA• Поддерживает привязку имен CORBA кобъектным ссылкам• Имена сгруппированы по контекстам именования• Для одной объектной ссылки может бытьопределено несколько имен• Не все объектные ссылки нуждаются в именах6-9Архитектура сервиса имен6-105Имена CORBA• Имена составляются из простых имен• Простые имена представляют собой пары«значение-тип»• Атрибут «значение» используется дляразрешения имен• Атрибут «тип» (kind) используется дляпредоставления информации о роли объекта6-11IDL типы для именmodule CosNaming {typedef string Istring;struct NameComponent {Istring id;Istring kind;};typedef sequence <NameComponent>Name;...};6-126Интерфейсы IDL• Сервис именования определен двумя IDLинтерфейсами• NamingContext определяет привязки имен кобъектам и выдает информацию по привязке• BindingIterator определяет набор операций дляитераций по набору имен, определенных вконтексте именования6-13Интерфейс 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);};6-147Интерфейс BindingIteratorinterface BindingIterator {boolean next_one(out Binding b);boolean next_n(in unsigned long how_many,out BindingList bl);void destroy();}6-15Сценарии именования:привязка• Привязать команду Bielefeid к первой лиги, акоманду Frankfurt - отвязатьc:Clientroot: NamingContext1L:NamingContext1L=resolve("UEFA","Germany","1.
Liga")bind("Arm. Bielefeld", bielefeld)unbind("Eintr. Frankfurt")6-168Начало работы с сервисомимен• Как получить корневой контекст именования?• Интерфейс 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);}}6-17Сценарий именования:разрешение• Распечатать состав Дортмундской Боруссииc:Clientroot: Naming D:Namingdo:TeamContextContextD=resolve("UEFA","Germany")do=resolve("1.
Liga","BVB")print()6-189Сценарий именования:итерации• Распечатать все команды 1-й немецкой лигиc:Client1.Liga:Naming bi:BindingContextIteratort:Teamlist(0,bl,bi)t=next_one().valuename()t=next_one().valuename()t=next_one().valuename()...6-19Именование в СОМ: клички• Moniker – кличка• Поддержка привязки и разрешения имен• Пространство имен м.б. иерархическиструктурировано6-2010Именование в СОМ:интерфейс IMonikerinterface IMoniker : IPersistStream {HRESULT BindToObject([in] IBindCtx *pbc,[in, unique] IMoniker *pmkToLeft,[in] REFIID riid,[out, iid_is(riid)] void **ppv);...}6-21Создание мониторов:IParseDisplayName• Для того, чтобы быть поименованым, серверныйобъект должен реализовывать интерфейсIParseDisplayName• Создает объект-монитор разбирая внешнее(текстовое) имя, называемое отображаемымименемinterface IParseDisplayName {HRESULT MkParseDisplayName([in] IBindCtx *pbc,[in,string] const OLECHAR *pwszName,[out] ULONG *ppchEaten[out] IMoniker **ppmk);}6-2211Оценка• СОМ имеет внутренние и внешние имена (кличкии отображаемые имена), что усложняетименование• Именование СОМ переплетено с другимичастями спецификации СОМ (контейнеры)• Именование СОМ не прозрачно дляразработчиков серверных объектов, т.к.
онидолжны реализовывать IParseDisplayName6-23Именование в Java/RMI• Упрощенная версия именования в CORBA• Нет композитных имен• Ограничения по безопасности: привязки имен немогут быть созданы с удаленных узлов• На каждом узле д.б. реестр• Различные реестры должны быть интегрированыв федеративные пространства имен6-2412Именование в Java/RMI:реестрpackage 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;}6-25Именование в Java/RMI:использование реестра:LocateRegistryroot=getRegistry(“ns.fifa.org”)c:Clientroot:1L:BVB:E:do:TeamRegistry Registry Registry RegistryE=lookup("UEFA")D=lookup(“Germany”)1L=lookup(“1.
Liga”)BVB=lookup(“BVB”)print()6-2613Именование в Java/RMI:оценка• Отсутствие иерархии в именовании увеличиваеткол-во удаленных операций необходимых дляразрешения имен• Поиск корневого узла не всегда прозрачно вотношении размещения• Ограничения безопасности уничтожаетпрозрачность размещения6-27Именование: ограничения• Клиент должен знать имя сервера• Такой способ поиска нужных объектов неподходит, если клиент ищет сервис сопределенными функциями и качеством, но незнает имя сервиса6-2814План лекции• Именование объектов• Объектный трейдинг6-29Характеристикитрейдер-сервиса• Обнаружение объектов независимо от ихфизического расположения• Именование не приемлемо когда клиент:•Не знает имя сервиса•Существует несколько сервисов с одинаковымифункциями• Трейдер-сервис поддерживает обнаружениесерверов по функциональности и качествупредоставляемого сервиса• Именование Белые страницы• Трейдер-сервис Желтые страницы6-3015Характеристикитрейдер-сервисаTraderоспрза2:1:экспорт• Трейдер-сервис работает в качестве посредникамежду клиентом и сервером• Позволяет клиенту менять перспективу с «кто?»на «что?»3:выполнениеExporterImporter• Та же самая идея:•биржевой брокер6-31Характеристикитрейдер-сервиса• Общий язык между клиентом и сервером:•Тип сервиса•Качество сервиса• Сервер регистрирует сервис в трейдере• Клиент запрашивает трейдер:•получить сервис определенного типа•сервис определенного качества• Трейдер поддерживает:•сопоставление сервисов•«торговлю сервисами»6-3216Пример• Сервер «видео по требованию»СерверПровайдер“видео потреб.”MGMWarnerПользовательTraderIndependent6-33Процесс «трейдинга»• Сервер «видео по требованию»:Client:TraderMGM:VoDSWarner:VoDSexport()export()query()modify()download()6-3417Определение типа сервиса• Определение типа сервиса•функциональность, определенная сервисом•характеристика качества сервиса (QoS)• Функциональность определяется типом объекта• QoS определена свойствами:•имя свойства•тип свойства•значение свойства•режим работы•обязательный/не обязательный•только для чтения/модифицируемый6-35Пример: тип сервисаtypedef enum {VGA,SVGA,XGA} Resolution;service video_on_demand {interface VideoServer;readonly mandatory property float fee;readonly mandatory property Resolutionres;modifiable optional property floatbandwidth;}6-3618Определение ограничений• Импортер сервиса определяет желаемыекачества сервиса в качестве части запроса:• Пример:fee<10 AND res >=SGA AND bandwidth>=256• Трейдер выдает в качестве ответа на запростолько те сервисы, которые удовлетворяютограничениям6-37Политики трейдинга• В зависимости от ограничений и доступныхсервисов, большой набор предложений можетбыть возвращен в качестве результата• Политики трейдинга могут использоваться дляограничения количества найденных предложений•Указание максимального числа результатов•Ограничения по замещению сервисов•Ограничения по модифицируемым свойствам6-3819Федерации трейдеров• Масштабируемость приводит к необходимостисоздания федераций трейдеров• Трейдер, участвующий в федерации:•предлагает информацию о сервисах другим трейдерам•запрашивает других трейдеров в случае если он неможет удовлетворить запрос• Проблемы•непрерывный импорт•дублирование предложений6-39Граф процесса трейдингаT1query.hop_count=4def_follow_policy=alwaysmax_hop_count=5T2Предлож.
Характеристики
Тип файла PDF
PDF-формат наиболее широко используется для просмотра любого типа файлов на любом устройстве. В него можно сохранить документ, таблицы, презентацию, текст, чертежи, вычисления, графики и всё остальное, что можно показать на экране любого устройства. Именно его лучше всего использовать для печати.
Например, если Вам нужно распечатать чертёж из автокада, Вы сохраните чертёж на флешку, но будет ли автокад в пункте печати? А если будет, то нужная версия с нужными библиотеками? Именно для этого и нужен формат PDF - в нём точно будет показано верно вне зависимости от того, в какой программе создали PDF-файл и есть ли нужная программа для его просмотра.