Komunikasi
2.1 Sistem Komunikasi
Pada bab ini akan dibahas bagaimana komunikasi antara object2 dalam sistem terdistribusi, khusus nya dengan menggunakan RMI (Remod Method Invokation) dan RPC (Remote Procedure Call). RMI dan RPC berbasiskan metode request dan reply.
Gambar~2.1: Model komunikasi dan implementasi layer pada sistem terdistribusi Request dan repy diimplementasikan pada protokol jaringan.
2.2 Network Protocol
Middleware dan aplikasi terdistribusi di implementasikan diatas protokol network. Protocol diimplementasikan dalam beberapa lapisan (layer).
2.2.1 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 akanmembanjiri 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.
- Bu¤ering 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 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.
2.3 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
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.
Gambar~2.2: Ilustrasi implementasi RMI
- Object A (client) : meminta layanan
- Object B (server) : menghantarkan layanan
- Proxy for B
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
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)
- Remote Reference Module
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
- Kemudian method yang ada pada proxy melakukan pembungkusan argumen
komunikasi.
- Berdasarkan pada remote reference yang didapat dari remote reference
- Modul komunikasi pada servermenerima request dari client. Kemudian
- Method pada skeletonmeng-ekstrak (unmarshalling) argumen pada pesan
- Setelah menerima hasil dari object B, method dari skeleton akan membungkus
- Modul komunikasimengrimkan pesan tersebut ke clientmelalui jaringan.
- Modul komunikasi pada client menerima hasil (reply) dari server dan
- Kemudian proxy meng-ektrak hasil (unmarshalling) dan meneruskan
Contoh RMI dengan menggunakan Java RMI :
Server object akan mencetak ”Hello Ruddy” ke layar & mengembalikan
pesan ke klien
Pada sisi server :
- Server Method
public interface SimpleInterface extends Remote {
String printMessage(String name) throws RemoteException;
}
- Server Object
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();
}}
}
2.3.2 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).
Gambar~2.3: Ilustrasi implementasi RPC
mantap gan, kebetulan lagi butuh referensi untuk mata kuliah system distribusi, o ya perkenalkan nama saya yuli Suseno, dan jika agan berkenan mampir ke web kampus kami di ISB Atma Luhur
BalasHapus