Komunikasi Sistem Pengumpul Metadata Terdistribusi

2.4.1 Komunikasi

Komunikasi antar proses adalah jantung dari sistem terdistribusi. Pertukaran informasi antar mesin yang berbeda merupakan hal yang sangat penting. Empat model komunikasi yang sering digunakan adalah Remote Procedure Call RPC [27], Remote Method Invocation RMI [28], Message-Oriented Middleware MOM [29] dan stream [25]. Model komunikasi yang dipilih pada penelitian ini adalah RMI karena dapat diimplentasikan pada platform komputer yang berbeda. Ruang lingkup penelitian yang berupa jaringan komputer lokal juga menjadi pertimbangan pemilihan RMI. Gambar 2.4 Diagram Sekuensial Untuk Remote Procedure Call RPC [30] RMI merupakan pengembangan dari RPC yang mendukung polymorphism [31]. Pada level dasar, RMI mirip dengan mekanisme RPC seperti pada Gambar 2.4. Komputer A Komputer B Jaringan Aplikasi Klien Penyedia Layanan Program menunggu respon Program melanjutkan eksekusi kode berikutnya Memanggil layanan Prosedur lokal dieksekusi dan mengembalikan hasilnya return Universitas Sumatera Utara RMI mempunyai beberapa kelebihan dibandingkan dengan RPC karena merupakan bagian dari pendekatan berorientasi objek dalam bahasa pemrograman java. Konektivitas pada sistem menggunakan fungsi native , artinya RMI dapat menggunakan pendekatan yang alami natural , langsung dan sangat mendukung teknologi komputasi terdistribusi sehingga dapat ditambahkan fungsi java pada sistem. Sedangkan RPC tidak dapat menyediakan fungsi yang tidak tersedia pada platform target. Untuk mengimplementasikan fitur cross-platform seperti pada java, RPC membutuhkan usaha yang lebih besar dibandingkan dengan RMI. RPC harus mengkonversi argumen antar arsitektur sehingga masing-masing komputer dapat menggunakan tipe data native . Keterbatasan RMI dikarenakan pemanggilan fungsi hanya dapat dilakukan dengan java. Untuk memanggil fungsi dalam bahasa lain RMI bergantung pada teknologi lain seperti JNI Java Native Interface [32], JDBC Java DataBase Connectivity [33], RMI-IIOP Remote Method Invocation over Internet Inter-Orb Protocol [34] dan lain-lain. Menurut Nester [35], pada implementasinya RMI akan lambat khususnya untuk perhitungan yang membutuhkan performa tinggi. Hal ini dikarenakan RMI dirancang berdasarkan serialisasi objek yang lambat dan tidak mendukung performa yang tinggi untuk komunikasi jaringan. Selain itu tambahan byte-code yang diinterpretasikan menggunakan JVM Java Virtual Machine [36] membuat RMI lebih lambat dibandingkan dengan RPC. Tetapi, performa yang lebih baik didapat dari RMI pada saat implementasi pemanggilan fungsi yang bersifat multiple- concurrent karena dukungan thread pada bahasa java. Universitas Sumatera Utara Sistem RMI dirancang untuk menyediakan pondasi bagi komputasi terdistribusi yang berorientasi objek. Arsitekturnya memungkinkan untuk penambahan server dan tipe referensi sehingga RMI dapat menambah fitur dengan terkoordinir [37]. Gambar 2.5 Stub dan Skeleton [37] Ketika klien menerima referensi ke sebuah server , RMI mengunduh stub yang menerjemahkan panggilan terhadap referensi menjadi panggilan jarak jauh ke server . Seperti yang ditunjukkan pada Gambar 2.5, stub menggabungkan argumen ke prosedur menggunakan serialisasi objek dan mengirimkannya ke server . Di sisi server sistem RMI menerima panggilan tersebut dan terhubung ke skeleton , yang bertanggung jawab untuk memisahkan argumen dan mengimplementasikan prosedur yang dipanggil. Ketika implementasi di sisi server telah selesai, apakah hasilnya adalah nilai atau exception , skeleton akan menggabungkan hasil tersebut dan mengirimkannya ke stub . Stub akan memisahkan balasan sesuai dengan yang dikirimkan dari server . Stub dan skeleton biasanya dibuat menggunakan program expServer.getPolicy; Menggabung parameter Kirim permintaan Memisahkan parameter Invoke implementation return new TodayPolicy Menerima hasil atau exception Menggabung hasil atau exception Kirim balasan Memisahkan balasan Kembalikan nilai atau exception Stub Skel Impl Universitas Sumatera Utara kompilasi yang disebut rmic . Stub menggunakan referensi untuk “berbicara” dengan skeleton . Penelitian ini menggunakan bahasa java karena RMI hanya dapat diimplementasikan dengan bahasa tersebut. Implementasi RMI membutuhkan tiga buah lapisan abstraksi yang diilustrasikan pada Gambar 2.6. Gambar 2.6 Ilustrasi Implementasi RMI [38] Fungsi ketiga lapisan abstraksi tersebut adalah: a. Stub dan Skeleton yang menerima pemanggilan fungsi yang dibuat oleh klien ke variabel referensi di interface dan melewatkannya ke layanan RMI yang jauh. b. Remote Reference digunakan untuk menginterpretasikan dan referensi manajemen yang dibuat dari klien ke layanan objek yang jauh. c. Transport Layer , berdasarkan koneksi TCPIP antara mesin-mesin di dalam jaringan komputer. Stub dan Skeleton Remote Reference Layer Program Klien Stub dan Skeleton Remote Reference Layer Program Server Transport Layer Sistem RMI Universitas Sumatera Utara Klien yang akan menghubungi server RMI harus mempunyai referensi server RMI terlebih dahulu. Penggunaan fungsi Naming.lookup adalah mekanisme yang umum digunakan oleh klien untuk menginisialisasi referensi server RMI. Yang dilakukan oleh fungsi ini adalah menggunakan stub untuk membuat pemanggilan fungsi jarak jauh terhadap rmiregistry , yang kemudian mengembalikan referensi pada objek yang melakukan permintaan menggunakan fungsi lookup Gambar 2.7. Setiap referensi jarak jauh berisi nama server dan nomor port agar klien dapat menentukan lokasi Virtual Machine yang melayani objek jarak jauh tertentu. Referensi nama server dan nomor port yang diperoleh klien akan digunakan untuk membuka koneksi soket ke server yang dituju. Gambar 2.7 Pemanggilan Referensi Server oleh Klien 1 Membuat interface untuk referensi objek jarak jauh TesInterf ti; ti = TesInterfNaming.lookup“rmisvrnamaObjek”; 3 Memanggil fungsi lookup namaObjek dari rmiregistry dengan menggunakan referensi yang dibuat pada langkah 2 4 Rmiregistry mengembalikan referensi pada namaObjek 5 Naming.lookup mengembalikan referensi jarak jauh pada namaObjek RMI Client RMI Registry 2 Membuat objek baru dari class stub yang sedang berjalan pada server RMI rmisvr untuk class stub Universitas Sumatera Utara Pemanggilan fungsi pada server dilakukan oleh klien dan akan diproses melalui stub dan skeleton . Secara umum, parameter yang dapat dilewatkan pada stub dan skeleton hanyalah variabel native seperti String dan Integer . Akan tetapi, pada umumnya parameter yang akan dikirimkan baik melalui server ataupun klien tidak hanya berupa variabel native . Pengiriman objek dari sebuah class tertentu, baik class yang didefinisikan oleh Java maupun yang dibuat oleh pengembang program memerlukan implementasi class Serialization. Dengan adanya implementasi serialisasi, objek tertentu dapat dilewatkan melalui stream baik dari klien menuju server maupun sebaliknya.

2.4.2 Kebutuhan Penggunaan Sistem Terdistribusi