Selasa, 09 Desember 2014

Komunikasi dalam sistem terdistribusi (Bab 2 SISTEM TERDISTRIBUSI)

Pada bab ini akan dibahas bagaimana komunikasi antara object2 dalam system terdistribusi, khusus nya dengan menggunakan RMI (Remod Method Invokation) dan RPC (Remote Procedure Call). RMI dan RPC berbasiskan metode request dan reply.


Protokol
Protokol adalah sebuah aturan atau standar yang mengatur atau mengijinkan terjadinya hubungan, komunikasi, dan perpindahan data antara dua atau lebih titik komputer. Protokol dapat diterapkan pada perangkat keras, perangkat lunak atau kombinasi dari keduanya. Pada tingkatan yang terendah, protokol mendefinisikan koneksi perangkat keras.
Dahulu, komunikasi antar komputer dari vendor yang berbeda adalah sangat sulit dilakukan, karena mereka mengunakan protokol dan format data yang berbeda-beda. Sehingga International Standards Organization (ISO) membuat suatu arsitektur komunikasi yang dikenal sebagai Open System Interconnection (OSI), model yang mendefinisikan standar untuk menghubungkan komputer-komputer dari vendor-vendor yang berbeda. Model-OSI tersebut terbagi atas 7 layer.
Layer-layer tersebut disusun sedemikian sehingga perubahan pada satu layer tidak membutuhkan perubahan pada layer lain. Layer teratas (5, 6 and 7) adalah lebih cerdas dibandingkan dengan layer yang lebih rendah; Layer Application dapat menangani protocol dan format data yang sama yang digunakan oleh layer lain, dan seterusnya. Jadi terdapat perbedaan yang besar antara layer Physical dan layer Aplication.
Suatu permintaan, dihasilkan dari atas (contohnya Application Layer) diteruskan keenam layer di bawahnya yang setiap layer memiliki tugasnya masing – masing.
Physical Layer
Ini adalah layer yang paling sederhana berkaitan dengan electrical (dan optical) koneksi antar peralatan. Data biner dikodekan dalam bentuk yang dapat ditransmisi melalui media jaringan, sebagai contoh kabel, transceiver dan konektor yang berkaitan dengan layer Physical. Peralatan seperti repeater, hub dan network card adalah berada pada layer ini.
Data-link Layer
Layer ini sedikit lebih “cerdas” dibandingkan dengan layer physical, karena menyediakan transfer data yang lebih nyata. Sebagai penghubung antara media network dan layer protocol yang lebih high-level, layer data link bertanggung-jawab pada paket akhir dari data binari yang berasal dari level yang lebih tinggi ke paket diskrit sebelum ke layer physical. Akan mengirimkan frame (blok dari data) melalui suatu network.. Ethernet (802.2 & 802.3), Tokenbus (802.4) dan Tokenring (802.5) adalah protocol pada layer Data-link.
Network Layer
Tugas utama dari layer network adalah menyediakan fungsi routing sehingga paket dapat dikirim keluar dari segment network lokal ke suatu tujuan yang berada pada suatu network lain. IP, Internet Protocol, umumnya digunakan untuk tugas ini. Protocol lainnya seperti IPX, Internet Packet eXchange. Perusahaan Novell telah memprogram protokol menjadi beberapa, seperti SPX (Sequence Packet Exchange) & NCP (Netware Core Protocol). Protokol ini telah dimasukkan ke sistem operasi Netware. Beberaoa fungsi yang mungkin dilakukan oleh Layer Network :
Membagi aliran data biner ke paket diskrit dengan panjang tertentu
Mendeteksi Error
Memperbaiki error dengan mengirim ulang paket yang rusak
Mengendalikan aliran
Transport Layer
Layer transport data, menggunakan protocol seperti UDP, TCP dan/atau SPX (Sequence Packet eXchange, yang satu ini digunakan oleh NetWare, tetapi khusus untuk koneksi berorientasi IPX). Layer transport adalah pusat dari mode-OSI. Layer ini menyediakan transfer yang reliable dan transparan antara kedua titik akhir, layer ini juga menyediakan multiplexing, kendali aliran dan pemeriksaan error serta memperbaikinya.
Session Layer
Layer Session, sesuai dengan namanya, sering disalah artikan sebagai prosedur logon pada network dan berkaitan dengan keamanan. Layer ini menyediakan layanan ke dua layer diatasnya, Melakukan koordinasi komunikasi antara entiti layer yang diwakilinya. Beberapa protocol pada layer ini: NETBIOS: suatu session interface dan protocol, dikembangkan oleh IBM, yang menyediakan layanan ke layer presentation dan layer application. NETBEUI, (NETBIOS Extended User Interface), suatu pengembangan dari NETBIOS yang digunakan pada produk Microsoft networking, seperti Windows NT dan LAN Manager. ADSP (AppleTalk Data Stream Protocol). PAP (Printer Access Protocol), yang terdapat pada printer Postscript untuk akses pada jaringan AppleTalk.
Presentation Layer
Layer presentation dari model OSI melakukan hanya suatu fungsi tunggal: translasi dari berbagai tipe pada syntax sistem. Sebagai contoh, suatu koneksi antara PC dan mainframe membutuhkan konversi dari EBCDIC character-encoding format ke ASCII dan banyak faktor yang perlu dipertimbangkan. Kompresi data (dan enkripsi yang mungkin) ditangani oleh layer ini.
Application Layer
Layer ini adalah yang paling cerdas , gateway berada pada layer ini. Gateway melakukan pekerjaan yang sama seperti sebuah router, tetapi ada perbedaan diantara mereka. Layer Application adalah penghubung utama antara aplikasi yang berjalan pada satu komputer dan resources network yang membutuhkan akses padanya.
Network Protocol
Middleware dan aplikasi terdistribusi di implementasikan diatas protokol network.
Protocol diimplementasikan dalam beberapa lapisan (layer).
TCP dan UDP
TCP
TCP ( Transport Control Protocol) dan UDP (User Datagram Protocol)
adalah protokol transport yang berada di atas lapisan Internet Protocol (IP).
TCP adalah protocol yang handal, TCP dapat memastikan data yang
dikirimkan sampai ke tujuan begitu juga sebaliknya.
TCP menambahkan beberapa prosedur diatas layer internet protocol untuk
memastikan reliabilitas transport data :
Sequencing
Pada setiap transmisi data (paket) diberi nomor urut. Sehingga pada
titik tujuan tidak ada segmen yang diterima sampai semua segmen
pada urutan bawah belum di terima.
Flow Control
Pengirim tidak akan membanjiri penerima.Karena pengiriman didasarkan
pada periode acknowledgment yang di terima oleh pengirim yang berasal
dari penerima.
Retrasnmission dan duplicate handling
Apabila segmen tidak mendapatkan acknowledge dari penerima sampai waktu timeout yang ditentukan terlampaui maka pengirim akan mengirim ulang. Berdasarkan nomor urut penerima data dapat mendeteksi dan menolak kalau terjadi duplikasi.
Buffering
Digunakan untuk menyeimbangkan antara pengirim dan penerima. Kalau bu¤er pada penerima penuh, maka segmen yang datang akan putus, sehingga menyebabkan tidak ada acknowledge ke pengirim dan pengirim akan melakukan transmot ulang.
Checksum
Setiap segment membawa checksum. Apabila checksum segmen yang di terima tidak sesuai maka paket data tersebut akan di drop (dan kemudian akan di transmit ulang)
UDP
UDP tidak memberikan garansi seperti halnya yang di berikan oleh TCP.
 UDP tidak memberikan garansi terhadap pengiriman data Pada Internet Protocol paket data dapat drop karena suatu hal contohnya jaringan yang rusak, UDP tidak mempunyai mekanisme untuk menanggulangi hal tersebut.
 Kalau ingin menggunakan UDP sebagai protocol pengiriman yang handal, makamekanisme kehandalan yang diinginkan di lakukan pada layer aplikasi.
Komunikasi Request – Reply
Komunikasi antara proses dan objek pada sistem terdistribusi dilakukan melalui message passing.
Client melakukan :
1. Mengirim (request) pesan ke server
2. Menerima hasil (reply dari server)
Server melakukan :
1. Penerimaan pesan (request) dari client
2. Mengeksekusi permintaan dari client
3. Mengirim hasil (reply) ke client.
RPC dan RMI
Tujuan dari RPC dan RMI dibuat bagi programmer, agar computer yang terdistribusi terlihat seperti computer yang terpusat. Dan berguna untuk melihat sistem terdistribusi dari sisi pemrogramman.

RPC dan RMI berada pada Middleware
RMI (Remote Method Invocation)

Berikut ilustrasi yang terjadi pada metode RMI :
Programmer pada client menulis :
server_id.service(values_to_server,result_arguments);
———————————————————————-
Pada sisi server mempunyai fungsi sebagai berikut :
public service(in type1 arg from client; out type2 arg to_client)
{————};
Programmer pada client tidak mengetahui bahwa reply message yang didapatkan berasal dari server yang dikirim melalui jaringan.
Komponen-komponen dalam RMI (gambar diatas):
 Object A (client) : meminta layanan
 Object B (server) : menghantarkan layanan
 Proxy for B
- Ketika object A mempunyai remote reference ke object B, maka akan timbul objek Proxy B pada
hostobject A. Proxy terbuat ketika remote object reference digunakan pertama kali
– Proxy adalah perwakilan objek yang berada pada remote, dengan kata lain ketika terjadi invokasi dari A
ke  B ditangani seolah – olah hanya mengakses Proxy B.
– Ketika invokasi terjadi proxy menggunakan metode marshals untuk membungkus pesan yang akan dikirim
ke server. Dan setelah menerima hasil dari server proxy menggunakan metode unmarshal (membuka
bungkus) untuk kemudian diteruskan ke client (Object A)
 Skeleton for object B
- Pada sisi server, terdapat object kerangka (skeleton) yang berhubungan ke class, kalau object pada class
tersebut dapat diakses oleh
RMI.
– Skeletonmenerima pesan kemudianmelakukan unmarshal danmeneruskan ke method object yang dituju.
Dan kemudianmenunggu hasil dari object B dan kemudian membungkus hasil (unmarshal) dan kemudian
dikirimkan ke client (Objec A).
– Ada bagian dari skeleton B yang disebut dengan dispatcher. dispatcher menerima request dari
communication module, dan kemudian mengidentifikasi invokasi dan mengarahkan permintaan ke
corresponding method ( method pada skeleton yang berfungsi untuk berkomunikasi dengan object).
 Communication Modul (Modul Komunikasi)
-Communication modul pada client atau server bertanggung jawab dalam pertukaran pesan yang dilakukan melalui metode request dan reply.
 Remote Reference Module
- Bagian ini bertugas untuk menterjemahkan antara referensi objek lokal dan remote. Proses berkomunikasi antara mereka disimpan dalam remote object table. Yang mengenerate class untuk proxy dan skeleton adalah middleware. contoh : CORBA, Java RMI
Object A dan object B dipunyai oleh aplikasi (berada pada Application Layer) Remote Reference Modul dan Communication modul dimiliki oleh middleware. Proxy B dan Sekeleton B berada antara middleware dan aplikasi yang di generate oleh middleware. Langkah2 proses dengan RMI :
Urutan pemanggilan pada object client mengaktifkan method pada
proxy yang akan berhubungan dengan invoked method (method yang ter-invokasi) pada object B.
 Kemudian method yang ada pada proxy melakukan pembungkusan argumen
menjadi suatu pesan (marshalling) dan meneruskan ke modul
komunikasi.
 Berdasarkan pada remote reference yang didapat dari remote reference
modul,modul komunikasi memulai request dan reply protocol melalui network.
 Modul komunikasi pada servermenerima request dari client. Kemudian
berdasarkan referensi lokal yang diterima dari remote reference modul maka akan mengaktifkan method untuk berkomunikasi dengan object pada skeleton B (corresponding method).
 Method pada skeletonmeng-ekstrak (unmarshalling) argumen pada pesan
yang di terima dan mengaktifkan corresponding method (method yang berfungsi untuk melakukan komunikasi) pada object B (server).
 Setelah menerima hasil dari object B, method dari skeleton akan membungkus
hasil tersebut dalamsebuah pesan (marshalling) danmeneruskan pesan yang sudah dibungkus ke modul komunikasi.
 Modul komunikasimengrimkan pesan tersebut ke clientmelalui jaringan.
 Modul komunikasi pada client menerima hasil (reply) dari server dan
meneruskan ke corresponding method pada proxy.
 Kemudian proxy meng-ektrak hasil (unmarshalling) dan meneruskan
ke object A (client).
Contoh RMI dengan menggunakan Java RMI :
Server object akan mencetak “Hello Ruddy” ke layar & mengembalikan
pesan ke klien
Pada sisi server :
 Server Method
import java.rmi.*;
public interface SimpleInterface extends Remote {
String printMessage(String name) throws RemoteException;
}
 Server Object
import java.rmi.*;
import java.rmi.server.*;
public class SimpleServer extends UnicastRemoteObject implements SimpleInterfac
public SimpleServer() throws RemoteException { super(); }
public String printMessage(String name) throws RemoteException {
System.out.println(name);
return(Hello + name);
}
public static void main(String args[]) {
System.setSecurityManager(new RMISecurityManager());
try {
SimpleServer newServer = new SimpleServer();
System.out.println(SimpleServer attempting to
bind to the registry);
Naming.rebind(//ruddy.info:30010/SimpleServer,
newServer);
System.out.println(SimpleServer bound in the registry);
} catch(Exception e) {
System.out.println(SimpleServer error: + e.getMessage());
e.printStackTrace();
}}
}
Pada sisi client :
import java.rmi.*;
public class SimpleClient {
private static SImpleInterface server = null;
public static void main(String args[]) {
try {
server = (SimpleInterface)
Naming.lookup(//ruddy.info:30010/SimpleServer);
System.out.println(server.printMessage(Ruddy));
} catch(Exception e) {
System.out.println(SimpleClient error: + e.getMessage());
e.printStackTrace();
}}
}
RPC (Remote Procedure Call)
Proses nya kurang lebih sama dengan RMI. Kalau RMI kita mengenal Proxy
dan Skeleton, pada RPC dikenal dengan Stub (Client Stub dan Server Stub).
Remote Reference Module dan Communication Module berada pada tatanan sistem operasi.
Konsep Objek Terdistribusi dan Object Interface
Meskipun teknologi RPC ini relatif sudah memberikan kenyamanan bagi developer namun seiring dengan perkembangannya, sistem ini dinilai tidak efisien lagi.  Dalam membuat aplikasi client server, programmer masih harus membuat fungsi-fungsi yang sama untuk aplikasi yang berbeda. Kadang kala kode program yang sama digunakan dengan melakukan copy paste dan melakukan sedikit perubahan untuk menyesuaikan dengan aplikasi yang baru dibuat. Jika ada perubahan, fungsi tersebut dalam masing-masing aplikasi harus di update satu persatu lagi. Hal ini mengakibatkan perawatan program menjadi susah dan fungsi-fungsi tersebut dapat menjadi tidak konsisten satu sama lain.
CORBA
Common Object Request Broker Architecture (CORBA) merupakan standar yang dikeluarkan oleh Object Management Group (OMG). Spesifikasi CORBA ini berisi sebuah spesifikasi  infrastruktur yang disebut Object Request Broker (ORB) yang memungkinkan aplikasi klien untuk dapat berkomunikasi dengan obyek secara remote. Spesifikasi ini meliputi antarmuka program, protokol komunikasi dan model obyek atau layanan yang memungkinkan aplikasi yang ditulis dengan berbagai macam bahasa pemrograman.
CORBA membungkus kode program yang dibuat dengan bahasa pemrograman tertentu menjadi sebuah obyek yang ditambah dengan informasi mengenai kemampuan kode program dan cara mengaksesnya. Obyek tersebut dapat dipanggil oleh program lain melalui jaringan. CORBA menggunakan interface definition languange (IDL) untuk menunjukkan interface atau antarmuka yang dapat digunakan oleh program atau obyek lain. Dari IDL tersebut CORBA akan memetakannya ke implementasi yang lebih spesifik dari masing-masing bahasa pemrograman.
COM
Component Object Model (COM) adalah teknologi yang diciptakan oleh Microsoft untuk memungkinkan komunikasi antaraplikasi. Teknologi ini sudah  disediakan untuk beberapa platform tetapi kebanyakan digunakan untuk platform Windows. Teknologi ini sudah diperkenalkan oleh microsoft pada tahun 1993 tetapi baru populer pada tahun 1997. Perkembangan teknologi COM ini bermula dari teknologi OLE (Object Linking and Embedding) yang dibuat untuk memungkinkan aplikasi dapat saling bertukar data.
DCOM
Pada tahun 1996 diperkenalkan Distributed Component Object Model (DCOM) sebagai jawaban Microsoft atas CORBA. DCOM dibandingkan dengan COM memiliki  kelebihan mampu untuk terdistribusi dan berkomunikasi antarkomponen melalui jaringan. DCOM dan CORBA saling berkompetisi untuk menjadi standar dalam distribusi komponen melalui internet. Namun dibalik kesulitan dalam hal keamanan, sebuah browser yang berjalan menggunakan teknologi http sudah dapat menggantikan teknologi tsb.
RMI
Remote Method Invocation (RMI) adalah sebuah teknik pemanggilan method remote yang lebih secara umum lebih baik daripada RPC. RMI menggunakan paradigma pemrograman berorientasi obyek (Object Oriented Programming). RMI memungkinkan kita untuk mengirim obyek sebagai parameter dari remote method. Dengan dibolehkannya program Java memanggil method pada remote obyek, RMI membuat pengguna dapat mengembangkan aplikasi Java yang terdistribusi pada jaringan.
RMI menyediakan mekanisme dimana server dan client berkomunikasi dan memberikan informasi secara timbal balik. Aplikasi semacam ini seringkali disebut aplikasi objek terdistribusi
Langkah-Langkah Pembuatan Program dengan RMI
Dalam RMI, semua informasi tentang satu pelayanan server disediakan dalam suatu definisi remote interface. Dengan melihat pada definisi interface, seorang pemrogram dapat memberitahukan method apa yang dapat dikerjakan oleh server, meliputi data apa yang diterima dan data apa yang akan dikirim sebagai tanggapan.
Definisi yang ada pada remote interface menentukan karakteristik methods yang disediakan server yang dapat dilihat oleh client. Client programmer harus dapat mengetahui methods apa yang disediakan server dan bagaimana memanggilnya langsung dengan melihat ke remote interface. Client mendapatkan referensi ke remote object melalui RMI registry.
Membangun suatu aplikasi terdistribusi menggunakan RMI meliputi 6 langkah. Keenam langkah tersebut adalah:
1. Mendefinisikan remote interface
2. Implementasi remote interface dan server
3. Pengembangan client (atau applet) yang menggunakan remote interface
4. Mengkompilasi source files dan mem-buat stub and skeletons
5. Memulai (start) RMI registry
6. Menjalankan server dan client

Tidak ada komentar:

Posting Komentar