system terdistribusi berbasis objek

Upload: arien-hidayati

Post on 13-Jul-2015

3.311 views

Category:

Documents


135 download

TRANSCRIPT

SYSTEM TERDISTRIBUSI BERBASIS OBJEKDalam system terdistribusi berbasis obyek , memainkan peran kunci dalam membangun transparansi distribusi. Hal ini menjadi penting karena sistem relatif mudah untuk menyembunyikan aspek distribusi di belakang antar muka obyek. Dalam bab ini, kita akan melihat bagaimana prinsip-prinsip sistem terdistribusi yang diterapkan ke sejumlah basis obyek sistem. Secara khusus, kami mencakup aspekaspek dari sistem COBRA, berbasis Java, dan Globe.

10.1 ArsitekturOrientasi objek merupakan paradigma penting dalam pengembangan perangkat lunak. Pengembangan dapat berkonsentrasi pada pelaksanaan fungsi pengembang spesifik bentuk independen lainnya. Pada bagian ini, pertama kita akan melihat lebih dalam ke dalam arsitektur umum dari objek berbasis sistem terdistribusi, setelah itu kita dapat melihat bagaimana prinsip-prinsip tertentu telah digunakan dalam sistem ini. 10.1.1 Pendistribusian Objek Fitur utama dari sebuah obyek adalah ia merangkum data, yang disebut state, dan operasi pada data tersebut, disebut method. Methode yang dibuat tersedia melalui sebuah interface. Sebuah objek dapat mengimplementasikan beberapa interface. pemisahan antara interface dan objek yang mengimplementasikan interface sangat penting untuk sistem terdistribus yang memungkinkan kita untuk menempatkan sebuah interface di satu mesin, sedangkan obyek itu sendiri berada pada mesin lain. Ketika klien berikatan dengan objek terdistribusi, sebuah implementasi dari interface objek, disebut poxy, yang kemudian dimasukkan ke ruang alamat klien. Proxy adalah analog ke subklien dalam sistem RPC. Satu-satunya hal yang dilakukan adalah metode menyusun pemanggilan kepada klien. objek yang sebenarnya berada di beberapa mesin, di mana ia menawarkan interface yang sama seperti halnya di komputer klien. Permintaan pemanggilan masuk pertama dilewatkan ke suatu tulisan rintisan server, yang bukan marsekal mereka untuk membuat pemanggilan Metode pada interface objek di server. Beberapa tulisan rintisanjuga bertanggung jawab untuk marshaling balasan dan forwarding pesan balasan ke proxy sisi klien. Perbedaan objek menyangkup beberapa hal: 1. Compile Time versus Runtime Objects Compile Time Object adalah objek tingkat bahasa yang didukungoleh Java, C + +, atau lainnya bahasa berorientasi objek dimana obyek didefinisikan sebagai instance dari kelas. Objek kompilasi waktu dalam sistem terdistribusi lebih mudah untuk membangun aplikasi

terdistribusi. contoh, di Java, sebuah objek dapat sepenuhnya didefinisikan dengan cara kelasnya dan interface yang mengimplementasikan kelas contoh, di Java, sebuah objek dapat sepenuhnya didefinisikan dengan cara kelasnya dan interface yang mengimplementasikan kelas, dimana objek akan dipanggil dari mesin pengendali. Kelemahannya, adalah ketergantungan pada suatu bahasa pemrograman tertentu. Solusi, melakukan ini secara eksplisit selama waktu berjalan. Pendekatan ini diikuti dalam system objek terdistribusi berbasis banyak, dengan penilusan di aplikasi terdistribusi dalam berbagai bahasa. Runtime objek yang diterapkan dibiarkan terbuka. Contoh, menulis C library berisi sejumlah fungsi yang semua bisa bekerja pada file data umum yang metodenya bisa dipanggil dari mesin pengendali dengan menggunakan adaptor objek, yang bertindak sebagai pembungkus di sekitar pelaksanaan dengan tujuan untuk memberikan penampilan sebuah obyek. Adaptor istilah deriver dari pola desain yang memungkinkan sebuah antar muka untuk dikonversi menjadi sesuatu yang klien harapkan. Dalam system terdistribusi berbasis objek adaptor digunakan untuk membungkus objek sepenuhnya dengan didefinisikan dalam istilah interfacemereka. Adaptor akan mengurus permintaan pemanggilan yang dilakukan, sehingga memberikan gambar objek remote untuk klien. 2. Persistent and Transient Objects Persistent objek tidak tergantung pada server saat ini. Dimana, server yang sedang mengelola objek tetap, dapat menyimpan kondisi objek pada penyimpanan sekunder lalu keluar. Kemudian, server yang baru mulai bisa membaca objek kondisi dari penyimpanan ke ruang alamat sendiri, dan menangani permintaan pemanggilan. Transient objek adalah obyek yang ada hanya selama server yang menjadi tuan objek. Segera setelah itu keluar dari server, bjek juga tidak ada lagi. Sistem terdistribusi berbasis obyek yang paling sederhana mendukung kedua jenisnya. 10.1.2 Contoh: Enterprise Java Beans Java menyediakan akses transparansi tingkat tinggi, yang berisi kombinasi dari C dengan memanggil remote prosedur. Telah ada insentif yang kuat untuk menyediakan fasilitas yang akan mempermudah pengembangan aplikasi terdistribusi yang melampaui dukungan bahasa, Memerlukan lingkungan runtime yang mendukung multi-tradisional berjenjang arsitektur client-server yang telah dimasukkan ke dalam pengembangan (enterprise) Java Beans (EJB). Sebuah EJB pada dasarnya obyek Java yang di-host oleh sever khusus menawarkan cara yang berbeda untuk klien remote untuk memanggil objek. Layanan umum yang termasuk objek-objek untuk metode remote akses pemanggilan (RMI), database (JDBC), penamaan (JNDI), dan olahpesan (JMS)

Memanfaatkan layanan ini lebih yang kurang otomatis, tetapi tidak mengharuskan programmer membuat perbedaan antara empat jenis EJBs: 1. Stateless session beans Adalah objek transien yang dipanggil sekali, tidak bekerja, setelah itu membuang informasi apapun yang dibutuhkan untuk melakukan layanan yang ditawarkan kepada klien. Misalnya, mengimplementasikan layanan yang berisi daftar peringkat atas buku. Biasanya berupa sebuah query SQL yang disampaikan ke suatu database. Hasilnya akan dimasukkan ke dalam format khusus yang bisa mengatasi klien,setelah itu pekerjaannya akan selesai dan buku yang terdaftar dibuang. 2. Stateful session beans Stateful session beans mempertahankan state terkait. Contoh, keranjang belanja elektronik. klien biasanya akan mampu menempatkan hal-hal dalam trolli, menghapus item, dan menggunakan kereta untuk pergi ke kasir elektronik. Baen, pada gilirannya, biasanya akan mengakses database untuk mendapatkanharga saat ini dan informasi mengenai jumlah item masih dalam stock. Disebut sebagai bean sesi: ketika klien selesai (mungkin memiliki objek dipanggil beberapa kali), bean secara otomatis akan dihancurkan. 3. Entity beans Sebuah entitas bean umumnya akanmenyimpan dalam databased, dan juga, sering akan juga menjadi bagian dari transaksi terdistribusi yang menyimpan informasi berikutnya yang mungkin diperlukan klien tertentu waktu mengakses server. Dalam perdagangan elektronik, sebuah entitas bean dapat digunakanuntuk merekam informasi pelanggan, misalnya, alamat pengiriman, alamat penagihan, informasi kartu kredit, dan sebagainya. Dalam kasus ini, ketika klien log in, badan yang telah terkait akan dipulihkan dan digunakan untuk diproses lebih lanjut. 4. Message - driven beans Digunakan untuk objek program yang bereaksi terhadap pesan yang masuk (danjuga, dapat mengirim pesan), tidak dapat dipanggil langsung oleh klien, melainkan masuk ke dalam mempublikasikan daftar cara komunikasi. Message-driven bean secara otomatis disebut server ketika sebuah pesan m tertentu diterima sekarang, yang server(atau lebih tepatnya adalah aplikasi hosting) sebelumnya ditempatkan. Bean mengandung kode aplikasi untuk penanganan pesan, setelah itu server membuangnya. 10.1.3 Contoh: Globe Objek Terdistribusi Bersama Globe adalah sistem di mana skalabilitas memainkan peran sentral. Seperti sistem berbasis obyek, benda-benda di Globe diharapkan untuk merangkum state dan operasi pada state itu. Perbedaan dengan sistem berbasis objek lainnya yaitu, objek juga diharapkan untuk merangkum pelaksanaan

kebijakan yang menentukan distribusi state obyek di beberapa mesin. Setiap objek menentukan bagaimana state akan didistribusikan ke tiruannya yang mengontrol kebijakan sendiri di daerah lain juga. Object Model Benda-benda di Globe bisa didistribusikan secara fisik dan direplikasi dibeberapa proses. Organisasi ini menujukkan pada Gambar 10-3,yang menampilkan objek yang didistribusikan di empat proses, masing-masing berjalan pada mesin yang berbeda.

Sebuah proses yang terikat ke obyek bersama didistribusikan ditawarkan implementasi lokal dari antarmuka yang disediakan oleh objek tersebut. Benda Globe lokal datang dalam dua bentuk, yaitu : 1. objek local primitif yaitu obyek lokal yang tidak mengandung benda lokal lainnya. 2. objek lokal gabungan adalah objek yang terdiri dari beberapa objek local (bsa berupa gabungan).

pada Gambar 10-4 yang terdiri dari setidaknya empat subobjects. Para subobject komunikasi digunakan untuk menyediakan interface standar untuk jaringan yang mendasarinya. Subobject ini menawarkan sejumlah primitive pesan lewat untuk internetberorientasi serta komunikasi

tanpa koneksi. Ada juga subobjects komunikasi yang lebih maju yang tersedia yang mengimplementasikan interface multicasting. Subobjects komunikasi dapat digunakan yang menerapkan komunikasi yang handal, sementara yang lain hanya menawarkan komunikasi tidak dapat diandalkan. Interface sub object replika adalah standar. Subobject replikasi yang bertanggung jawab untuk memutuskan kapan tepatnya metode yang disediakan oleh subobject semantic untuk dilaksanakan. Kontrol subobject digunakan perantara antara user interface yang para subobject replikasi akhirnya akan memungkinkan subobject kontrol untuk melanjutkan dengan pemanggilan dan permintaan untuk mengembalikan hasilnya ke proses yang akhirnya diteruskan ke subobject kontrol. Hasilnya melewati kembali ke subobject replikasi.

10.2 PROSES10.2.1 Obyek Server Objek server adalah server yang disesuaikan untuk mendukung objek terdistribusi. Perbedaan pada server lainnya (lebih tradisional) ialah bahwa obyek server dengan sendirinya tidak memberikan layanan khusus. Server provedies untuk memanggil objek lokal, berdasarkan permintaan dari klien remote yang mengubah layanan dengan hanya menambahkan dan menghapus objek. Server benda terdiri dari dua bagian, data yang mewakili state dan kode untuk menjalankan metode tersebut. Alternatif untuk Menjalankan Objek Untuk objek dipanggil, server objek perlu tahu kode untuk mengeksekusi, di mana data itu harus beroperasi, apakah harus memulai thread yang terpisah untuk mengurus pemanggilan. server mendukung kebijakan yang berbeda. misalnya objek-objek sementara yang ada hanya selama server ada. dalam memori, read-only copy file bisa diimplementasikan sebagai objek sementara atas permintaan pemanggilan pertama dan untuk menghancurkan segera setelah tidak ada klien terikat lagi. Keuntungan, obyek sementara akan membutuhkan sumber daya server hanya selama objek tersebut benar-benar dibutuhkan. Kekurangannya, pemanggilan itu mungkin memakan waktu untuk menyelesaikan, karena objek perlu dibuat terlebih dahulu. Server bisa mengikuti kebijakan bahwa setiap benda yang ditempatkan dalam segmen memori sendiri. Dengan berbagi baik kode maupun data, sehingga memerlukan dukungan dari system operasi yang mendasari, untuk memastikan bahwa batas-batas segmen tidak dilanggar. Pendekatan alternatifnya dengan membiarkan objek-objek setidaknya berbagi kode mereka. Sebagai contoh, sebuah database yang berisi objek yang termasuk dalam kelas yang sama dapat diimplementasikan secara efisien dengan memuat implementasi kelas hanya sekali ke server. ketika permintaan

untuk suatu benda. Pemanggilan masuk, server hanya perlu mengambil menyatakan bahwa objek dari database dan mengeksekusi metode yang diminta. Keuntungan, objek secara otomatis dilindungi terhadap akses bersamaan: semua pemanggilan adalah serial melalui thread tunggal yang terkaitdengan objek. Rapi dan sederhana memungkinkan untuk menggunakan thread terpisah untuk setiap permintaan pemanggilan, membutuhkan bahwa objek harus sudah dilindungi terhadap akses konkuren. Obyek Adapter Dalam memanggil obyek yang dibutuhkan adalah mekanisme untuk objek kelompok per kebijakan yang disebut adapter objek, atau alternative bungkus objek. Adaptor objek dapat dianggap terbaik sebagai perangkat lunak menerapkan kebijakan aktivasi tertentu. Masalah utama bahwa objek adapter datang sebagai komponen generic untuk membantu pengembang objek terdistribusi, dan yang hanya perlu dikonfigurasi untuk kebijakan khusus. Adaptor objek memiliki satu atau lebih objek di bawah kendalinya. Karena server harus mampu secara bersamaan mendukung beberapa adapter objek bisa berada dalam server yang sama pada waktu yang sama. Ketika sebuah permintaan pemanggilan disampaikan ke server, permintaan yang pertama dikirim ke adaptor objek yang sesuai. Masalah penting pada adaptor objek yaitu dapat mengekstrak sebuah referensi obyek dari permintaan pemanggilan, dan kemudian mengirimkan permintaan ke objek direferensikan, tapi sekarang mengikuti kebijakan aktivasi tertentu. Adaptor objek dapat mendukung kebijakan aktivasi yang berbeda dengan hanya mengkonfigurasi pada saat runtime. Sebagai contoh. Dalam system CORBA kompatibel (OMG, 2004a), menentukan apakah sebuah benda harus terus ada setelah adaptor yang terkait telah berhenti. 10.2.2 Contoh: Sistem Runtime Ice Sebuah server objek di Ice hanyalah sebuah proses biasa yang hanya dimulai dengan menginisialisasi sistem Ice runtime (RTS).Dasar dari lingkungan runtime dibentuk oleh apa yang disebut komunikator. Komunikator adalah komponen pesan sejumlah sumber daya dasar, yang mana paling penting adalah dibentuk oleh genangan thread. Sebagai contoh, adalah mungkin untuk menentukan panjang maksimal pesan, mencoba kembali pemanggilan maksimum, dan sebagainya. Biasanya, server objek hanya akan memiliki komunikator tunggal. Namun, ketika aplikasi yang berbeda harus sepenuhnya terpisahdan terlindungi satu sama lain, seorang komunikator yang terpisah (dengan kemungkinan konfigurasi yang berbeda) dapat dibuat dalam proses yang sama yang akan memisahkan genangan thread yang berbeda sehingga jika salah satu aplikasi telah dikonsumsi semua thread nya, maka ini tidak akan mempengaruhi aplikasi lainnya.

Misalnya, untuk membuat hal-hal yang lebih konkret, misalkan pencari lokasi, locator telah deprogram secara eksplisit untuk menangani permintaan tersebut. Pengenal objek mungkin sesuai dengan kunci dari sebuah catatan di mana state yang disimpan. Para pencari kemudian akan, cukup melakukan pencarian pada tombol itu, mengambil negara, dan kemudian akan dapat memproses lebih lanjut permintaan tersebut. Bisa ada lebih dari satu lokasi ditambahkan ke adaptor. Dalam hal ini, adaptor akan melacak yang pengidentifikasi objek akan menjadi milik pencari yang sama. Menggunakan beberapa pencari memungkinkan mendukung banyak objek oleh adaptor tunggal.

10.3 KOMUNIKASI10.3.1 Binding Klien untuk Obyek Perbedaan antara sistem tradisional dan system RPC mendukung objek terdistribusi adalah bahwa yang terakhir umumnya menyediakan referensi objek systemwide yang dapat dengan bebas melewati antara proses pada mesin yang berbeda, misalnya sebagai parameter untuk pemanggilan metode. Dengan menyembunyikan implementasi aktual dari sebuah referensi obyek, yaitu, membuatnya buram, dan mungkin bahkan menggunakan sebagai satu-satunya cara untuk objek referensi, transparansi distribusi ditingkatkan dibandingkan dengan RPC tradisional. Proses memegang referensi obyek, pertama kali harus mengikat obyek direferensikan sebelum memanggil salah satu metode tersebut. Binding menghasilkan proxy ditempatkan dalam ruang alamat proses yang berisi metode proses dapat memanggil. Ketika sistem yang mendasari diberikan sebuah referensi obyek, perlu cara untuk menemukan server yang mengelola objek yang sebenarnya, dan tempat proxy di ruang alamat klien. Pelaksanaan Referensi Obyek Referensi obyek harus berisi informasi yang cukup untuk memungkinkan klien mengikat sebuah referensi obyek. Mencakup alamat jaringan mesin, dimana objek berada, beserta titik akhir identifikasi server yang mengelola objek, ditambah indikasi mana objek. Bagian dari informasi ini akan diberikan oleh adaptor objek. Kelemahan, mesin server dan server crash diberikan titik akhir yang berbeda setelah pemulihan, semua referensi objek menjadi tidak valid diselesaikan untuk memperluas ide local. Daemon mempertahankan tabel titik akhir ke server lokasi yang melacak mesin dimana server objek sedang berjalan. Referensi obyek itu berisi alamat jaringan dari server lokasi,bersama dengan identifier systemwide untuk server. Contoh, sebuah server tunggal secara bersamaan dapat mendukung data yang masuk melalui koneksi TCP, serta masuk UDP datagram. Hal ini

kemudian tanggung jawab klien untuk mendapatkan implementasi proxy untuk setidaknya salah satu protocol yang diidentifikasi dalam referensi obyek. Kita bahkan dapat mengambil pendekatan ini satu langkah lebih jauh, dan termasuk menangani implementasi di referensi obyek, yang mengacu pada implementasi lengkap dari sebuah proxy yang klien dinamis dapat beban ketika mengikat objek, misalnya menangani implementasi dengan mengambil URL, seperti ftp://ftp.clientware.org/ proxies/java/proxy-v1.1a.zip. protocol kemudian akan mengikat tp menentukan bahwa file tersebut harus dinamis didownload, membongkar, diinstal, dan kemudian instantied. Keuntungan, klien tidak perlu khawatir tentang apakah ia memiliki odimplementasi protokol tertentu yang tersedia. Namun, kita perlu mengambil langkah-langkah keamanan khusus untuk memastikan klien bahwa ia dapat mempercayai kode download. 10.3.2 RPC vs RMI Perbedaan penting antara RMI dan RPC. RMIs yang umumnya mendukung referensi sistem objek selebar expalained atas. Juga, tidak perlu hanya memiliki tujuan umum sisi klien dan server-side stub tersedia. Sebaliknya, kita dapat lebih mudah mengakomodasi objek-spesifik bertopik karena kami juga menjelaskan cara biasa untuk memberikan dukungan RMI adalah untuk menentukan interface objek dalam bahasa definisi antarmuka, mirip dengan pendekatan yang diikuti dengan RPC. Sebagai alternatif, kita dapat menggunakan bahasa berbasis obyek seperti java, yang akan menangani generasi rintisan otomatis. Pendekatan menggunakan definisi antarmuka standar umumnya disebut sebagai RPC. RPC mengharuskan antarmuka dari sebuah objek diketahui ketika aplikasi klien sedang dikembangkan. Hal ini juga menyiratkan bahwa perubahan interface, maka aplikasi klien harus recomplied sebelum dapat menggunakan interface baru. 10.3.3 Parameter PASSING Karena kebanyakan sistem RMI mendukung sistem referensi objek yang luas, melewati parameter dalam pemanggilan metode umumnya kurang terbatas daripada kasus di RPC. Namun, ada beberapa kehalusan yang dapat membuat RMIs lebih rumit, seperti yang kita bahas secara singkat di halaman berikut. Mari kita pertama mempertimbangkan situasi yang ada hanya objek terdistribusi. Dengan kata lain, semua objek dalam sistem dapat terakses dari mesin remote. Dalam hal ini, kita secara konsisten dapat menggunakan referensi objek sebagai parameter dalam pemanggilan metode. referensi yang dilewatkan dengan nilai, dan dengan demikian disalin dari satu mesin ke mesin

yang lain. Ketika suatu proses diberikan sebuah referensi obyek sebagai hasil dari pemanggilan metode, itu hanya dapat mengikat objek yang dimaksud, bila diperlukan nanti. Sayangnya, hanya menggunakan objek terdistribusi saja bisa sangat tidak efisien terutama bila benda-benda kecil, seperti bilangan bulat, atau lebih buruk lagi, Boolean. Setiap permintaan oleh klien yang tidak teralokasi di server yang sama sebagai objek, menghasilkan permintaan antara ruang alamat yang berbeda atau, bahkan lebih buruk, antara mesin berbeda. Oleh karena itu, referensi ke objek remote dan mereka ke objek lokal sering diperlakukan berbeda. 10.3.4 contoh: java RMI Di java, objek didistribusikan telah terintegrasi ke dalam bahasa. Tujuan nya adalah untuk menjaga sebanyak semantik objek yang mungkin tidak terdistribusi mungkin. Dengan kata lain, para pengembang bahasa java telah ditujukan untuk keterbukaan dalam distribusi. Namun, pengembang java telah memutuskan untuk membuat distribusi yang jelas di mana tingkat transparansi yang tinggi hanya membuat tidak efisien, sulit, atau mustahil untuk mewujudkan. Java didistribusikan-objek model Java juga mengadopsi objek remote sebagai satu-satunya bentuk objects.recall didistribusikan bahwa objct remote adalah objek terdistribusi yang selalu berada pada kondisi mesin tunggal, tetapi dapat antarmuka yang dibuat tersedia untuk Emote pocesses. Antarmuka diimplementasikan dalam cara yang biasa dengan cara proxy, yang menawarkan antarmuka yang sama persis. Sebuah proxy itu sendiri muncul sebagai objek lokal dalam ruang alamat klien. Perbedaan antara objek remote dan objek lokal. Pertama, kloning objek lokal atau remote yang berbeda. Clonning objek lokal 0 hasil dalam sebuah objek baru dari jenis yang sama seperti 0 dengan persis keadaan yang sama. Kloning sehingga mengembalikan salinan dari objek yang kloning. Ini sulit untuk diterapkan ke objek remote. untuk membuat salinan dari sebuah remote object, kita tidak hanya harus clone actual object di server, tetapi juga proxy di setiap klien yang saat ini terikat pada objek remote. Mengkloning objek remote adalah karena itu merupakan operasi yang dapat dijalankan hanya oleh server. Ini menghasilkan salinan tepat dari objek yang sebenarnya dalam ruang alamat server. Di java RMI, referensi ke objek remote dasarnya diimplementasikan sebagai kami jelaskan dalam detik. 10.3.3. seperti referensi terdiri dari alamat jaringan dan titik akhir dari server, serta pengenal lokal untuk objek yang sebenarnya dalam ruang alamat server. Itu pengenal lokal hanya digunakan oleh server. Seperti kita juga menjelaskan, referensi ke objek remote juga harus

menyandikan stack protokol yang digunakan oleh klien dan server untuk berkomunikasi. 10.3.5 Objek Berbasis MESSAGING Meskipun RMI adalah cara yang disukai penanganan komunikasi dalam objek berbasis sistem terdistribusi, pesan juga menemukan jalan sebagai alternatif penting. Ada berbagai objek berbasis sistem pesan tersedia, dan, sebagaimana dapat diharapkan, menawarkan sangat banyak fungsi yang sama. Pada bagian ini kita akan melihat lebih dekat pada pesan CORBA, sebagian karena juga menyediakan cara yang menarik dari menggabungkan pemanggilan metode dan pesan-berorientasi komunikasi. CORBA adalah spesifikasi terkenal untuk sistem terdistribusi. Selama bertahun-tahun, beberapa implementasi telah dibuat, meskipun masih harus dilihat sampai sejauh mana CORBA itu sendiri akan pernah menjadi benarbenar populer. Namun, independen dari popularitas, spesifikasi CORBA yang komprehensif (yang banyak juga berarti mereka sangat kompleks). Menyadari popularitas sistem pesan, CORBA adalah cepat untuk menyertakan spesifikasi dari layanan pesan. Apa yang membuat pesan dalam CORBA berbeda dari sistem lainnya adalah pendekatan berbasis obyek pendekatan. Secara khusus, para perancang layanan pesan diperlukan untuk mempertahankan model bahwa komunikasi semua terjadi dengan menerapkan objek. Dalam kasus pesan, kendala desain ini menghasilkan dua bentuk asinkron (di samping bentuk lain yang disediakan oleh CORBA juga). Sebuah pemanggilan metode asynchronous analog dengan RPC asinkron: memanggil terus setelah memulai tanpa menunggu hasilnya. Dalam model callback CORBA klien memberikan obyek yang mengimplementasikan interface yang berisi metode callback. Methode ini dapat disebut oleh sistem komunikasi yang mendasari untuk lulus hasil . Isu desain yang penting adalah bahwa pemanggilan metode asynchronous tidak mempengaruhi pelaksanaan asli dari sebuah objek. Dengan kata lain, itu adalah tanggungjawab klien untuk mengubah doa sinkron asli ke salah satu ansynchronous, server disajikan dengan permintaan (sinkron) yang normal.

10.4 PenamaanAspek menarik dari penamaan object-bassed sistem terdistribusi berkembang di sekitar jalan yang didukung referensi objek, yang sudah kami jelaskan ini referensi objek dalam kasus java, di mana mereka secara efektif sesuai dengan implementasi proxy yang portabel. Namun, ini cara yang tergantung pada bahasa untuk dapat merujuk ke objects.again terpencil mengambil CORBA sebagai contoh, mari USS melihat bagaimana penamaan dasar juga dapat diberikan dalam bahasa dan platform-independen cara. Kami

juga membahas skema yang sama sekali berbeda, yang digunakan dalam sistem dunia didistribusikan. 10.4.1 Referensi Obyek CORBA Mendasar untuk CORBA adalah cara objek yang direferensikan. Ketika klien memegang sebuah referensi obyek, dapat memanggil metode yang diterapkan oleh object.it direferensikan adalah penting untuk membedakan referensi obyek bahwa proses klien menggunakan untuk memanggil sebuah metode, dan satu yang dilaksanakan oleh RTS yang mendasarinya. Sebuah proses (baik itu klien atau server) hanya dapat menggunakan implementasi bahasa tertentu dari sebuah referensi obyek. Dalam kebanyakan kasus, ini mengambil bentuk pointer ke perwakilan lokal dari objek. Itu referensi tidak dapat ditularkan dari pengolahan A ke pengolahan B, karena memiliki makna hanya dalam ruang alamat proses dari A. Sebaliknya, proses A pertama harus marshal pointer menjadi representasi proses-independen. Operasi untuk melakukannya disediakan oleh nya RTS. Setelah mengerahkan, referensi dapat dikirimkan ke proses B, yang dapat unmarshal lagi. Perhatikan bahwa proses A dan B mungkin menjalankan program yang ditulis dalam berbagai bahasa. Sebaliknya, RTS yang mendasari akan memiliki sendiri bahasaindependen representasi dari suatu objectreference. Representasi bahkan mungkin berbeda dari versi mengerahkan itu tangan ke proses yang ingin bertukar referensi. Yang penting adalah bahwa ketika proses mengacu pada objek, yang mendasari RTS secara implisit menyampaikan informasi enaugh untuk mengetahui objek sebenarnya yang direferensikan. Informasi tersebut biasanya disahkan oleh klien dan sisi server stub yang dihasilkan dari antarmuka Spesifikasi obyek. Salah satu masalah yang versi awal CORBA miliki adalah bahwa setiap implementationcould memutuskan bagaimana mewakili sebuah referensi obyek. Akibatnya, jika proses A ingin lulus referensi untuk memproses B seperti dijelaskan di atas, ini umumnya akan berhasil hanya jika kedua proses tersebut menggunakan implementasi CORBA yang sama. Jika tidak, versi mengerahkan dari referensi yang dipegang oleh proses A akan menjadi tidak berarti bagi RTS digunakan oleh proses B. CORBA saat ini semua dukungan sistem representasi yang sama bahasa-independen dari sebuah referensi obyek, yang disebut sebuah referensi obyek atau IOR interoperable. Apakah atau tidak menggunakan CORBA pelaksanaan IORs internal tidak semua yang penting. howefer, ketika melewati sebuah referensi obyek antara dua sistem CORBA yang berbeda, ini dilewatkan sebagai suatu IOR. IOR Sebuah berisi semua informasi yang dibutuhkan untuk mengidentifikasi objek.

10.4.2 Globe objek Referensi Mari kita lihat cara yang berbeda dari referensi objek. Dalam dunia setiap objek berbagi didistribusikan diberikan sebuah pengenal objek global yang unik (OID), yang adalah string 256-bit. Sebuah OID dunia adalah identifier yang benar seperti yang didefinisikan dalam bab. 5. Dengan kata lain, sebuah OID dunia mengacu paling banyak satu objek bersama didistribusikan; tidak pernah kembali untuk objek lain, dan setiap objek memiliki paling banyak satu OID. OIDs dunia hanya dapat digunakan untuk membandingkan referensi objek. Misalnya, proses A dan B masing-masing terikat murah ke shared object terdistribusi. Setiap proses dapat meminta OID objek mereka terikat untuk. Jika dan hanya jika kedua OIDs yang sama, maka A dan B dianggap terikat pada objek yang sama. Tidak seperti referensi CORBA, OIDs Globe tidak dapat digunakan untuk langsung menghubungi objek. Sebaliknya, untuk mencari objek, itu adalah necessaryo mencari alamat kontak untuk objek yang dalam layanan lokasi. Layanan ini mengembalikan alamat kontak, yang sebanding dengan thelocation-tergantung referensi obyek sebagaimana digunakan dalam CORBA dan sistem terdistribusi lainnya. Meskipun dunia menggunakan layanan lokasi sendiri yang spesifik, pada prinsipnya salah satu layanan lokasi yang dibahas dalam chp.5 akan dilakukan. Mengabaikan beberapa rincian kecil, alamat kontak memiliki dua bagian. Yang pertama adalah identifier alamat dimana lokasi layanan dapat mengidentifikasi simpul daun yang tepat untuk memasukkan atau menghapus operasi untuk alamat kontak yang terkait adalah untuk diteruskan. Ingat bahwa karena alamat kontak lokasi tergantung, adalah penting untuk menyisipkan dan menghapus mereka mulai pada simpul daun yang sesuai. Bagian kedua terdiri dari informasi alamat yang sebenarnya, tetapi informasi ini benar-benar buram ke layanan lokasi. Untuk layanan lokasi, alamat hanya sebuah array byte yang sama dapat berdiri untuk alamat jaringan yang sebenarnya, pointer antarmuka mengerahkan, atau bahkan proxy mengerahkan lengkap. Pengidentifikasi protokol Khas termasuk TCP, UDP, dan IP. Bidang alamat protokol berisi protokol spesifik alamat, seperti nomor port TCP, atau alamat jaringan IPv4. Akhirnya, dapat menangani Implementasi opsional disediakan untuk menunjukkan mana implementasi default untuk protokol dapat ditemukan. Biasanya, sebuah implementasi menangani direpresentasikan sebagai URL. (Hal 7) Tipe kedua alamat kontak adalah alamat misalnya. Sekali lagi, alamat berisi menangani implementasi, yang tidak lain adalah referensi ke file dalam repositori kelas di mana sebuah implementasi dari objek lokal dapat

ditemukan. Bahwa objek lokal harus dimuat oleh proses yang saat ini mengikat objek.

10.5 SinkronisasiHanya ada beberapa masalah tentang sinkronisasi dalam sistem terdistribusi yang khusus untuk berurusan dengan objek terdistribusi. Secara khusus, fakta bahwa rincian pelaksanaan tersembunyi oleh antarmuka dapat menyebabkan masalah: ketika proses memanggil sebuah objek (jarak jauh), ia tidak memiliki pengetahuan apakah doa yang akan menyebabkan invoking objek lain. Akibatnya, dalam suatu objek dilindungi terhadap akses konkuren, kita mungkin memiliki satu set kunci cascading bahwa proses memohon tidak menyadari Sebaliknya, ketika berhadapan dengan sumber data seperti file atau tabel database yang dilindungi oleh kunci ketika kebuntuan percaya telah terjadi. Seperti telah disebutkan sebelumnya, perbedaan antara objek lokal dan remote di java sering sulit untuk membuat. Hal-hal menjadi lebih rumit ketika obyek dilindungi dengan menyatakan metode yang akan disinkronisasi. Jika dua proses secara bersamaan memanggil metode disinkronkan, hanya salah satu proses akan dilanjutkan sementara yang lain akan diblokir. Dengan cara ini, kita dapat memastikan bahwa akses ke data internal obyek benar-benar serial, proses juga dapat diblokir dalam sebuah obyek, menunggu beberapa kondisi untuk menjadi kenyataan. Logikanya, pemblokiran dalam sebuah remote object sederhana. Misalkan klien bahwa A memanggil metode disinkronkan dari sebuah remote object. Untuk membuat akses ke objek jarak jauh terlihat selalu persis sama seperti untuk objek lokal, itu akan diperlukan untuk blok A di sisi klien stub yang mengimplementasikan antarmuka objek dan yang A memiliki akses langsung. Seperti bijaksana, klien lain pada mesin yang berbeda akan perlu diblokir lokal juga sebelum permintaannya dapat dikirim ke server. Konsekuensinya adalah bahwa kita perlu disinkronkan klien yang berbeda pada mesin yang berbeda. Seperti kita bahas dalam bab. 6, sinkronisasi terdistribusi dapat cukup kompleks. Sebuah pendekatan alternatif akan memungkinkan memblokir hanya pada server. Inprinciple, ini bekerja dengan baik, tapi masalahnya muncul ketika klien crash sementara pemanggilan yang sedang ditangani oleh server. Seperti kita bahas dalam bab. 8, kita mungkin memerlukan protokol yang relatif canggih untuk menangani situasi ini, dan yang yang secara signifikan dapat mempengaruhi kinerja keseluruhan doa metode jarak jauh

10.6 Konsistensi dan Replikasi Banyak objek berbasis sistem terdistribusi mengikuti pendekatan tradisional terhadap objek tereplikasi, efektifnya memperlakukan mereka sebagai wadah data dengan operasi khusus mereka sendiri. Untuk alasan ini, kita fokus pada beberapa topik tertentu tentang konsistensi dan replikasi yang lebih mendalam dalam objek berbasis sistem terdistribusi daripada yang lain. 10.6.1 Entry Konsistensi Data-sentris konsistensi untuk objek terdistribusi datang secara alami dalam bentuk Entry konsistensi. Ingatlah bahwa dalam kasus ini, tujuannya adalah untuk operasi kelompok pada data bersama menggunakan variabel sinkronisasi. sebagai obyek alami menggabungkan data dan operasi pada data, mengunci objek sewaktu pemanggilan suatu serializes akses dan membuat mereka konsisten. Ada dua masalah yang perlu dipecahkan untuk menerapkan entry konsistensi : 1. Bahwa kita perlu sarana untuk mencegah eksekusi konkuren dari pemanggilan multilple pada objek yang sama. 2. Bahwa dalam kasus objek tereplikasi, kita perlu memastikan bahwa semua perubahan ke state tereplikasi objek adalah sama. Salah satu masalah dari granularity: meskipun semua replika dari server objek dapat menerima permintaan pemanggilan dalam urutan yang sama, kita perlu memastikan bahwa semua thread didalam proses server, permintaan tersebut di urutan yang benar juga. Masalah ini disketsakan pada gambar.1015

Figure 10-15. Deterministic thread scheduling for replicated object servers.

Replikasi Kerangka Kerja Suatu hal yang paling menarik dalam objek terdistribusi berbasis system adalah bahwa dengan sifat dari teknologi objek sering mungkin untuk membuat pemisahan yang bersih antara fungsi merancang dan isu-isu penanganan fungsional tambahan seperti replikasi. Pemanggilan untuk objek yang ter intercept ada tiga poin perbedaan: Di sisi client, sebelum dilakukan pemanggilan dikirimkan ke stub. Di sisi stub klien, di mana penangkapan merupakan bagian dari algoritma replikasi. Pada sisi server, tepat sebelum objek akan segera dipanggil. Intersepsi pertama adalah dibutuhkan ketika ternyata bahwa pemanggil tereplikasi. Dalam hal ini, sinkronisasi dengan pemanggil lain bisa diperlukan karena kita mungkin berhadapan dengan pemanggilan tereplikasi seperti dibahas sebelumnya.

Figure 10-16. A general framework for separating replication algorithms from objects in an EJB environment. Setelah memutuskan bahwa pemanggilan dapat dilakukan, intercept di sisi klien stub dapat mengambil keputusan di mana akan meneruskan permintaan ke, atau mungkin menerapkan gagal dari mekanisme saat replika tidak bisa dihubungi. Akhirnya, interceptor sisi server menangani pemanggilan. Pada kenyataannya, intercept ini terbelah dua. Pada point pertama, hanya setelah permintaan telah datang dan sebelum diserahkan kepada adaptor, algoritma replikasi mendapatkan kontrol. Point kedua adalah sebelum pemanggilan, yang memungkinkan algoritma replikasi untuk, misalnya, mendapatkan dan menetapkan nilai atribut dari objek direplikasi.

Aspek yang menarik adalah bahwa kerangka kerja dapat diatur independen dari setiap algoritma replikasi, sehingga mengarah ke pemisahan lengkap fungsi objek dan replikasi benda-benda.

10.7 Toleransi KesalahanFault Tolerance : Sistem harus bisa mendeteksi kegagalan dan melakukan tindakan dengan dasar sebagai berikut : a. Mask the fault (menutupi kegagalan) : tugas harus dapat dilanjutkan dengan menurunkan kinerja tapi tanpa terjadi kehilangan data atau informasi. b. Fail Gracefully : membuat suatu antisipasi terhadap suatu kegagalan ke suatu prosedur yang telah di rencanakan dan memungkinkan untuk menghentikan proses dalam waktu yang singkat tanpa menghilangkan informasi atau data. Example : - Fault Tolerance Corba - Fault Tolerance Java

10.8 KeamananKetika mempertimbangkan kebanyakan sistem terdistribusi berbasis obyek, fakta bahwa objek terdistribusi adalah remote object segera mengarah ke situasi di mana keamanan arsitektur untuk sistem terdistribusi yang sangat mirip. Globe benar benar mendukung distribusi obyek di mana keadaan objek tunggal dapat disebarkan dan direplikasi di beberapa mesin. 10.8.1 Contoh : Globe Globe merupakan sistem pendukung berskala luas yang didistribusikan perhitungannya di mana banyak host, file, dan sumber daya lainnya sekaligus digunakan untuk melakukan perhitungannya. Lingkungan seperti ini juga disebut sebagai komputasi grid (Foster dan Kesselman, 1998). Sumber daya dalam grid sering berada di domain administrasi yang berbeda yang mungkin terletak di berbagai bagian dunia. Secara sederhana, kebijakan keamanan untuk Globe memerlukan delapan pernyataan berikut: Lingkungan terdiri dari domain administratif. Lokal operasi (yaitu, operasi yang dilakukan hanya dalam domain tunggal) tunduk pada kebijakan keamanan domain lokal saja. Operasi global (yakni, operasi melibatkan beberapa domain) membutuhkan inisiator untuk diketahui dalam setiap domain di mana operasi dilakukan keluar. Operasi antara entitas dalam domain yang berbeda memerlukan saling otentikasi. Otentikasi global yang menggantikan otentikasi lokal. Mengontrol akses ke sumber daya tunduk pada keamanan lokal saja.

1. 2. 3.

4. 5. 6.

7. Pengguna dapat mendelegasikan hak untuk proses. 8. Sekelompok proses dalam domain yang sama dapat berbagi kepercayaan. Globe mengasumsikan bahwa lingkungan terdiri dari multiple administrative domain, dimana setiap domain memiliki kebijakan keamanan lokal sendiri. Hal ini diasumsikan bahwa kebijakan lokal tidak dapat diubah hanya karena domain berpartisipasi dalam Globe, juga tidak bisa kebijakan keseluruhan Globus menimpa keputusan keamanan lokal. Akibatnya, keamanan di Globe akan membatasi diri pada operasi yang mempengaruhi beberapa domain. Terkait dengan masalah ini bahwa Globe mengasumsikan operasi yang sepenuhnya lokal untuk domain yang tunduk hanya pada kebijakan keamanan yang domain itu. Dengan kata lain, jika operasi dimulai dan dilaksanakan dalam satu domain, keamanan semua masalah akan dilakukan dengan menggunakan langkah-langkah keamanan lokal saja. Globe tidak akan menerapkan tindakan tambahan. Para Globe menyatakan kebijakan keamanan bahwa permintaan untuk operasi dapat dimulai baik secara global maupun lokal. Inisiator, baik itu pengguna atau proses bertindak atas nama pengguna, harus secara lokal dikenal dalam setiap domain di mana operasi yang dilakukan keluar. Sebagai contoh, pengguna dapat memiliki nama global yang dipetakan ke domain specific nama-nama lokal. Bagaimana tepatnya pemetaan yang terjadi adalah tersisa untuk setiap domain. 10.8.2 Keamanan untuk Remote Objects Ide dasar adalah bahwa pengembang dari sebuah remote object juga mengembangkan proxy dan sub sequently register proxy dengan layanan direktori. Ketika klien mencari objek, akhirnya akan menghubungi layanan direktori, mengambil proxy, dan menginstalnya. Jelas ada beberapa masalah serius dengan pendekatan ini. Pertama, jika layanan direktori dibajak, seorang penyerang mungkin dapat mengembalikan proxy palsu untuk klien. Pada dasarnya, seperti proxy mungkin dapat berkompromi dalam semua komunikasi antara klien dan server hosting remote object, ini berbahaya untuk keduanya. Kedua, klien tidak memiliki cara untuk mengotentikasi server: hanya memiliki proxy dan semua komunikasi dengan server harus berjalan melalui proxy itu. Ini mungkin merupakan situasi yang tidak diinginkan, terutama karena klien sekarang hanya perlu percaya proxy bahwa ia akan melakukan tugasnya dengan benar.

10.9 RangkumanKebanyakan system terdistribusi berbasis objek menggunakan model remote-objects yang di mana sebuah object merupakan host dari server yang memungkinkan remote clients untuk melakukan metode pemanggilan. Dalam banyak kasus objek tersebut akan dibangun pada saat runtime, dan mungkin juga kode dimuat ke server objek ketika klien melakukan pemanggilan jarak jauh. Globe merupakan sistem yang di mana benar benar mendukung pendistibusian objek bersama. Dalam hal ini, objek mungkin secara fisik didistribusikan dan direplikasi di beberapa mesin. Untuk mendukung objek terdistribusi, penting untuk memisahkan fungsi dari sifat fungsional tambahan seperti toleransi kesalahan dan skalabilitas. Untuk akhirnya, server objek canggih ini telah dikembangkan untuk hosting objek. Server objek menyediakan layanan banyak objek dasar, termasuk fasilitas untuk menyimpan objek, atau untuk memastikan serialisasi permintaan yang masuk. Peran lain yang penting adalah memberikan ilusi ke dunia luar bahwa pengumpulan data dan prosedur operasi pada data sesuai dengan konsep suatu objek. Peran ini dilakukan dengan cara adaptor objek. Konsistensi entri adalah model konsistensi yang jelas untuk objek terdistribusi dan didukung dalam banyak sistem. Hal ini jelas seperti yang kita alami dapat mengasosiasikan kunci terpisah untuk setiap objek. Toleransi kesalahan di objek terdistribusi - sistem berbasis sangat banyak mengikuti pendekatan yang digunakan untuk sistem terdistribusi lain. Satu pengecualian adalah bentuk dengan mencoba untuk membuat kesalahan Java Virtual Machine tolerance dengan membiarkan hal itu beroperasi sebagai deterministik finite state machine. Kemudian, dengan mereplikasi beberapa mesin ini, kita mendapatkan cara alami untuk memberikan toleransi kesalahan. Keamanan untuk objek terdistribusi berkembang di sekitar gagasan mendukung pemanggilan metode aman. Sebuah contoh yang komprehensif yang umum dalam pemanggilan objek replikasi adalah Globe.