2. KOMUNIKASI

advertisement
2. KOMUNIKASI
2.1. Sistem Komunikasi
Pembahasan :
bagaimana komunikasi antar object dalam sistem terdistribusi,
khususnya dengan menggunakan RMI (Remote Method
Invocation) 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 reply diimplementasikan pada protokol jaringan.
2.2. Network Protocol
Middleware dan aplikasi terdistribusi diimplementasikan di atas
protokol network. Protocol diimplementasikan dalam beberapa
lapisan (layer).
Gambar 2.2 : Layer protocol pada Internet
2.2.1 TCP dan UDP
protokol transport yang berada di atas lapisan IP
TCP (Transport Control Protocol)
• TCP dapat memastikan data yang dikirimkan sampai ke
tujuan begitu juga sebaliknya.
• TCP menambahkan beberapa prosedur di atas layer
IP untuk memastikan reliabilitas transport data :
a. 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 diterima.
b. Flow Control
Pengirim tidak akan membanjiri penerima, karena
pengiriman didasarkan pada periode acknowledgment
yang diterima oleh pengirim yang berasal dari
penerima.
c. Retransmission 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.
d. Buffering
Buffering digunakan untuk menyeimbangkan antara
pengirim dan penerima.
Kalau buffer pada penerima penuh, maka segmen
yang datang akan putus, sehingga menyebabkan tidak
ada acknowledge ke pengirim dan pengirim akan
melakukan transmit ulang.
e. Checksum
Setiap segment membawa checksum.
Apabila checksum segmen yang diterima tidak sesuai
maka paket data tersebut akan di-drop (dan
kemudian akan di transmit ulang)
UDP (User Datagram Protocol)
UDP tidak memberikan garansi seperti halnya yang diberikan
oleh TCP.
• UDP tidak memberikan garansi terhadap pengiriman data.
Pada Internet Protocol paket data dapat drop karena suatu
hal.
contoh : jaringan yang rusak, UDP tidak mempunyai
mekanisme untuk menanggulangi hal tersebut.
• Kalau ingin menggunakan UDP sebagai protocol
pengiriman yang handal, maka mekanisme kehandalan
yang diinginkan dilakukan pada layer aplikasi.
2.2.2 Komunikasi Request – Reply
Komunikasi antara proses dan objek 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 komputer yang terdistribusi terlihat seperti komputer
yang terpusat.
• untuk melihat sistem terdistribusi dari sisi pemrogramman.
RPC dan RMI berada pada Middleware
2.3.1 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.
Gambar 2.2 : Ilustrasi implementasi RMI
Komponen-komponen dalam RMI (gambar 2.2):
• 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 host object 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.
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 objek pada class tersebut dapat
diakses oleh RMI.
- Skeleton menerima pesan kemudian melakukan unmarshal
dan meneruskan ke method objek yang dituju. Kemudian
menunggu hasil dari objek B dan kemudian membungkus hasil
(unmarshal) dan kemudian dikirimkan ke client (Objek 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 objek).
• 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.
Class untuk proxy dan skeleton di-generate oleh 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.
Langkah-langkah proses dengan RMI :
- Urutan pemanggilan pada object client mengaktifkan method
pada proxy yang akan berhubungan dengan invoked method
(method yang terinvokasi) 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 server menerima 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 skeleton mengekstrak (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 dalam sebuah pesan (marshalling)
dan meneruskan pesan yang sudah dibungkus ke modul
komunikasi.
- Modul komunikasi mengrimkan pesan tersebut ke client melalui
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 World” ke layar dan
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(//mark.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(//mark.info:30010/SimpleServer);
System.out.println(server.printMessage(World));
} catch(Exception e) {
System.out.println(SimpleClient error: + e.getMessage());
e.printStackTrace();
}
}
}
2.3.2 RPC (Remote Procedure Call)
Proses kurang lebih sama dengan RMI. Pada RMI
dikenal Proxy dan Skeleton, pada RPC dikenal dengan
Stub (Client Stub dan Server Stub).
Gambar2.3: Ilustrasi implementasi RPC
Remote Reference Modul dan Communication Modul berada pada tatanan
sistem operasi
Download