Tez No İndirme Tez Künye Durumu
126662 Bu tezin, veri tabanı üzerinden yayınlanma izni bulunmamaktadır. Yayınlanma izni olmayan tezlerin basılı kopyalarına Üniversite kütüphaneniz aracılığıyla (TÜBESS üzerinden) erişebilirsiniz.
Dağıtılmış nesneye dayalı sistemler için dağıtılmış bileşik nesne modeli / Distributed composite object model for distributed object based system
Yazar:GÜRAY YILMAZ
Danışman: DOÇ. DR. TAKUHİ NADİA ERDOĞAN
Yer Bilgisi: İstanbul Teknik Üniversitesi / Fen Bilimleri Enstitüsü / İnşaat Mühendisliği Ana Bilim Dalı
Konu:Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrol = Computer Engineering and Computer Science and Control
Dizin:Dağıtık sistemler = Distributed systems ; Dağıtılmış bileşik nesne modeli = Distributed composite object model ; İnternet = Internet
Onaylandı
Doktora
Türkçe
2002
190 s.
DAĞITILMIŞ NESNEYE DAYALI SİSTEMLER İÇİN DAĞITILMIŞ BİLEŞİK NESNE MODELİ ÖZET Dağıtılmış sistemler bilgisayar ağlan üzerinden sistem kaynaklarının ve bilginin paylaşımım sağlarlar. Bu sistemleri çekici yapan en önemli tasarım konusu dağıtım ile ilgili tüm ayrıntıların kullanıcılara saydam olarak gerçekleniyor olmasıdır. Fakat ne yazık ki, sistem kaynaklarım kullanıcılar arasında saydam bir şekilde paylaştıran ve yöneten genel amaçlı, geniş alana yayılmış dağıtılmış sistemler neredeyse yok denecek kadar azdır. Var olan bazı sistemler de kısıtlı ölçüde kolaylıklar sağlamaktadırlar. Dağıtılmış sistemlerde saydamlık genelde yerel alan sistemleri için sağlanmıştır ve bu sistemler için bulunan çözümler geniş alana ölçeklenememektedirler. İnternet üzerinden veri paylaşımı gibi geniş alanlı uygulamaların geliştirilmesi için genellikle çok fazla emek sarf etmek gerekmektedir. Bu durum, üzerinde çalışılan işletim sistemi ve diğer sistem çözümlerinden gerekli haberleşme desteğinin sağlanamamış olmasından kaynaklanmaktadır. Günümüzde iyi bilinen bir çok dağıtılmış sistem uzak-nesne modelini benimsemişlerdir. Bu modelde, nesne tek bir alana yerleştirilir ve bu nesnenin kullanıcısına bir vekil arayüzü üzerinden nesneye saydam erişim olanağı sağlanır. Bu yöntemde nesne en iyi durumda kullanıcısını haberdar etmeksizin bir başka alana göç edebilir. Bununla beraber, uzak-nesne modelinin genelde ölçeklenebilme eksikliğinden kaynaklanan bir çok dezavantaj lan bulunmaktadır. Kullanıcılara farklı nesne çağ rı yöntemlerini gerçekleyecek bir destek sunmamaktadır. Uzak-nesne modeli ile desteklenen bir dağıtım saydamlığı, paylaşılan bir nesnenin kullanımını ve gerçeklenmesini basitleştirmekle birlikte, bilgili tasarımcıların dağıtımın getirdiği avantajdan yararlanmalarını da önler. Bazı uygulamalar paylaşılan bir nesneye ait verinin veya kodun, çok sayıdaki alan üzerine başarım, kullanılabilirlik, koruma ve yük dengeleme amacıyla dağıtılmasına gereksinim duyulabilirler. Ancak, uzak-nesne modeli bu konuda destek sağlamaz. Bir uzak- nesne belirli bir alan üzerinde bulunur ve kendisine sadece o alanda erişilebilir. Halbuki, dağıtılmış uygulamaların ölçeklenebilirliği ve başarımı için yerellik büyük önem taşır. Paylaşılan nesnelerin farklı alanlara kopyalanması, etkin yerel erişim ve kullanılabilirlik açısından önemli yararlar sağlar. İnternet ortamında işbirliğiyle yürütülen dağıtılmış uygulamalar genellikle iri ya da orta taneli nesneler üzerinde çalışmalarına rağmen, bu tip uygulamaların kullanıcıları çoğunlukla nesnelerin küçük bir parçasıyla ilgilenmektedirler. Eğer büyük bir nesne daha küçük alt nesnelere bölünebilirse ve kullanıcı alanına nesnenin yalnızca erişim xııisteğinin hedefi olan parça gönderilirse, hem belleğin verimli kullanımı söz konusu olacak, hem de farklı alanlar arasında aktarılacak olan verinin miktarı azalacağından, çalışan uygulamanın başarımı da yükselecektir. Alt nesnelerin sağlayacağı bir diğer yarar da, kopyalanmış nesnelerin güncellenmesi sırasında ortaya çıkacaktır. Nesnenin tümünün değil de, bir parçasının güncellenmesi, doğrudan ağda aktarılacak veri miktarını azaltacaktır. Ayrıca, bölünmüş haliyle bir paylaşılan nesne, alt nesnelere paralel erişimin en yüksek düzeyde gerçekleşmesini de sağlayacaktır. Tezde bu noktalar göz önüne alınarak, uzak-nesne modeline alternatif olarak, kopyalamaya dayalı yeni bir model olan Dağıtılmış Bileşik Nesne (DBN) modeli önerilmektedir. Ayrıca, önerilen DBN modelinin dağıtılmış ortamda Java programlama dili üzerinden kullanımına imkan sağlayacak bir Dağıtılmış Bileşik Nesne Tabanlı Ortamın (DBNTO) tasarım ve gerçekleme ayrıntıları da sunulmaktadır [4-6]. DBN modelinin arkasında yatan temel fikir, çok sayıdaki alt nesnenin bileşiminden meydana gelmiş olan bir bileşik nesnenin farklı alanlar üzerinde fiziksel olarak dağıtılmasıdır. Önerilen modele göre, dağıtılmış ortamdaki uygulamalar bileşik nesneler üzerinden haberleşirler ve birbirleri ile etkileşimde bulunurlar. Bu amaçla, her bir paylaşılan nesne bir arayüz üzerinden kullanılabilen bir metotlar kümesi sunar. Nesneler pasiftir. Etkinlik, nesneleri paylaşan ve onların metotları üzerinde eşzamanlı olarak çağrı yapabilen uygulama programları tarafından sağlanır. Bir dağıtılmış bileşik nesnenin iki görünüşü vardır: Kullanıcının bakış açısına göre, tekil paylaşılan bir nesnedir. Farklı adres alanlarında bulunan çok sayıdaki istekçi uygulamaları tarafından paylaşılmaktadır. Bu nesneye programcı-tanımlı bir arayüz üzerinden erişilir. Onun bileşenleri ve özellikle de nasıl dağıtıldıkları görünemez. Tasarımcısının bakış açısına göre ise, bir dağıtılmış bileşik nesne, birlikte çalışan bir alt nesneler kümesinden oluşmaktadır. Bu yapıdaki her bir alt nesne merkezi bir gösterilime sahiptir. Yürütme sırasında, kullanıcı istekleri doğrultusunda, bir bileşik nesnenin alt nesneleri farklı adres alanlarına kopyalanarak dağıtılmış bir nesne yapısını oluştururlar. Dağıtılmış bileşik nesneyi oluşturan alt nesneler ve bunların yapılan yalnızca bu nesnenin tasarımcısı tarafından bilinir. Kullanıcılar ise, nesne hakkında kendilerine sunulan istekçi arayüzü dışında başka bir bilgiye sahip değildirler. Nesne üzerinde bir metot çağrısı yürüttüklerinde, çağrının gerçeklenme aşamalarından haberdar olmazlar. Önerilen modeli gerçeklemek üzere, dağıtılmış bileşik nesneyi oluşturan alt nesnelerin farklı alanlar üzerinde rahatlıkla bağlanabilmesi amacıyla bir bağlantı nesnesi ve alt nesne kopyalarının senkronizasyon ve tutarlılığının sağlanabilmesi amacıyla da bir kontrol nesnesi tasarlanmıştır. Bağlantı nesnesi ile dinamik bağlanma sağlanırken, kontrol nesnesi ile, dağıtılmış bileşik nesnenin alt nesneleri bazında düzenlenebilen çeşitli tutarlılık ve senkronizasyon mekanizmaları kurulabilmektedir. Dağıtılmış bileşik nesnenin farklı alanlarda bulunan alt nesne kopyalan arasında, alt nesne bazında düzenlenebilen çeşitli tutarlılık ve senkronizasyon mekanizmaları kurulabilmekte ve tüm gerçekleme ayrıntıları kullanıcıya saydam olarak kontrol nesnesi ve DBNTO ara katman yazılımı tarafından sağlanmaktadır. Bileşik nesneyi oluşturan alt nesneler, bu nesnelerin farklı alanlar üzerinde kopyalanma ayrıntıları, kopyalar arasında yürütülen tutarlılık protokolleri, eşzamanlılık kontrolünün X111sağlanması gibi gerçekleme ile ilgili ayrıntılar nesnenin bir parçası olarak onun arayüzünün arkasına gizlenmiştir. DBN modelinin gerçeklenmesi için sunulan DBNTO ara katman yazılımı dağıtılmış bileşik nesneleri desteklemek için tasarlanmış Java paketlerinden oluşmaktadır. DBNTO özellikle internet çapma yayılmış bilgisayar destekli müşterek uygulamalar geliştirecek olan kullanıcılar için Java programlama dili üzerinden erişilebilen bir arayüz sağlamak amacıyla tasarlanmıştır. DBNTO bir çok uygulama için gerekli olan nesne paylaşımı, dağıtımı, kopyalama, tutarlılığın sağlanması, uygulamanın dinamik olarak yüklenmesi gibi temel mekanizmalar sunmaktadır. DBNTO ara katman yazılımım kullanarak, programcılar merkezi bir ortamda çalışıyor görüntüsü altında dağıtılmış uygulamalar geliştirebileceklerdir. Daha sonra, üretilen kod üzerinde herhangi bir değişiklik yapılmaksızın, uygulama dağıtılmış ortamda çalışacak şekilde düzenlenecektir. Bu esnek yapı, dinamik bağlama, senkronizasyon fonksiyonları ve tutarlılık protokolleri gibi kolaylıklar sağlayan kod parçalarının otomatik olarak alt nesnelere eklenmesi suretiyle elde edilmektedir. Bağlantı ve kontrol nesnelerinin üretildikleri sınıf tanımlamaları alt nesne sınıflarının arayüz tanımlamalarından yararlanılarak, bir sınıf üreteci tarafından otomatik olarak üretilmektedir. Otomatik sınıf üretme işleminde tasarımcıya düşen görev, sadece bir alt nesne metodunun nesne verilerine hangi düzeyde eriştiğini belirlemek ve arayüz tanımlama dosyasını ona göre hazırlamaktır. Önerilen DBN modelinin başaranını ölçme ve benzer diğer sistemlerle karşılaştırmak amacıyla, DBNTO ara katman yazılımı üzerinde bir takım testler uygulanmıştır. Aynı testler uzak-nesne modeline dayanan ve literatürde iyi bilinen Java RMI yapısı üzerinde de yapılmıştır. Her iki sistemden elde edilen ölçüm sonuçları karşılaştırıldığında, DBN modelinin internet üzerinde müşterek uygulama geliştirmek amacıyla uygun bir yapı sunduğu görülmüştür. xıv
DISTRIBUTED COMPOSITE OBJECT MODEL FOR DISTRIBUTED OBJECT BASED SYSTEMS SUMMARY Distributed systems provide sharing of resources and information over a computer network. A key design issue that makes these systems attractive is that all aspects related to the distribution are transparent to users. Unfortunately, general-purpose wide area distributed systems that allow users to share and manage arbitrary resources in a transparent way hardly exist. Constructing wide area applications, such as sharing data across the Internet, often requires a substantial development effort. This is mainly caused by the lack of proper communication facilities as offered by the underlying operating systems and middleware solutions. All well-known distributed systems today adopt the remote-object model. In this model, an object is located at a single location only, whereas the client is offered access transparency through a proxy interface. At best, the object is allowed to move to other locations without having to explicitly inform the client. There are a number of serious drawbacks to the remote-object model, most notably its lack of scalability. The remote-object model itself provides no mechanisms that support a developer in designing and implementing different invocation schemes, which is necessary if we are to apply scaling techniques such as caching, replication and distribution. As an alternative to the remote-object model, we propose a new object model, called Distributed Composite Object (DCO) model. In our opinion, internet-wide distributed-collaborative applications generally manipulate large or coarse-grained objects, while clients of these types of applications are usually interested in only a small part of the object. So, if we partition a coarse-grained object into finer-grained subobjects (SO), an application's performance would be enhanced by the reduction in the amount of data accessed and the amount of data transferred unnecessarily between distributed sites. The DCO model is based on the idea that the implementor of an object can distribute the state of the object among multiple SOs. This implies that the state of the root object becomes partitioned. These SOs can be placed on different sites, may be replicated, or may even be composite objects themselves. Several SOs are grouped together and form a Composite Object (CO). A CO is created on a single node with its SOs. Then, this CO can be replicated on demand over several nodes together with some of its SOs. All COs which spread out on several nodes constitute a DCO. xvThe fundamental idea behind the design of the DCO is that it is physically distributed over multiple sites. Most current middleware systems, such as CORBA, and DCOM, view a distributed object as an object running on a single machine, possibly with copies on other machines. This object is presented to remote clients as a local object by means of proxies. Our view of what a distributed object is gives us flexibility with respect to partitioning, replication and distribution of the object's state. The DCO model allows us to describe applications in terms of a single composite object whose implementation details are embedded and encapsulated in different types of SOs. Instead of viewing a distributed object as an entity running on a single machine, possibly with full copies on other machines. We view a distributed object as a conceptual object, distributed over multiple machines with its several SOs. A DCO has two aspects: From the client's point of view, it is a single shared object. It is shared by several client objects, which are localized in different address spaces, possibly on different sites. It is accessed via a programmer-defined interface. Its components, and particular their distribution, are not visible. From the designers point of view, a distributed object encapsulates a set of cooperating SOs. Each SO of the DCO is an elementary object. In other words, each SO has a centralized representation. In this thesis, we have also developed a middleware, Distributed Composite Object Based Environment (DCOBE) that facilitates the development of internet-wide distributed applications. DCOBE is a collection of Java packages intended to support the construction of distributed composite objects. Specifically, DCOBE provides a uniform interface for Internet-wide collaborative application developers to use. It also provides basic mechanisms for facilities needed by many applications, such as communication, object composition and replication, consistency management and dynamic deployment of application. The mechanisms we want to factorize are naming, binding and consistency management. In order to be able to dynamically bind a reference to a remote object, we need to associate a unique name with each object, thus allowing an object to be located and copied to the requesting node. In order to implement object binding without modification to the Java virtual machine, we need to manage indirection objects that allow object faults to be triggered if the reference is not yet bound. In order to manage objects consistency, we need to exchange messages between cooperating nodes to invalidate and update copies according to the consistency model. The problem is to manage dynamic binding of references to SOs that may be fetched dynamically from remote nodes. To solve this problem, we provide a mechanism for dynamic binding of SO references. Our solution relies on intermediate objects, called connective objects, which are inserted between the referenced SO and the object which contains the reference. A connective object contains a reference that points to the referenced SO, if it is already there and null if not. It also contains a unique object id associated with the SO, which allows it to be located and copied on the local host. The class file of the connective object is generated from the interface of the SO's class to which it points. The connective object implements the same interface as the XVISO. Each method invocation is forwarded to the actual SO if the reference is already bound, i.e. if the references in the connective object is not null. If this reference is null, then a function of the runtime system is invoked in order to check whether the SO is already cached. A copy of the SO is fetched if required and the reference in the connective object is updated. Another problem we have to solve is to efficiently manage distributed replicas of SOs while keeping distribution transparent to the application programmer. Managing object replicas requires mechanisms for invalidating or updating objects in order to ensure consistency. These mechanisms should be hidden to the application programmer. In order to solve this problem, we decided to utilize another type of intermediate object, called control object, which is inserted between the connective object and the actual SO it points to. Similar to the connective object, a control object also forwards method invocations to the referenced SO if its internal reference is not null. Otherwise, a function of the runtime system is invoked in order to fetch a consistent copy of the object and the reference in the control object is updated. In addition, an invalidation of a SO on one node simply consists of assigning the null value to the reference in its control object. A programmer who uses the DCO model develops applications using the Java Programming Language without any language extensions, nor system support classes, in a manner similar to developing a centralized application program. First, the class code for each subobject class which constitutes a DCO is written. (To provide distinction between this type of classes and normal Java classes, we use prefix Sub). After this step, interface declarations are written for these classes. An access mode keyword, which indicates type of the method, reader-R or writer- W, is.§ assigned to each method in the interface declaration. 2 3 Since an application is developed in a centralized manner, it does not deal with synchronization and consistency issues. A second step in the configuration is to associate synchronization and consistency mechanisms to each class. In other words, r the class file of the control object is generated in this step. w P After the creation of the control object's class file, an application can be configured for distribution by creating the class file of the connective object, which is generated from the interface definition of the subobject class. In order to measure its performance, several tests have been made on DCOBE middleware. These tests are also applied to a well-known distributed object system, JAVA RMI. On comparing the test results of both systems, we conclude that the DCO model provides the users with shorter access times and is especially suitable for computer supported cooperative work applications on the internet. XVll