18 Maret 2014

Komunikasi Sistem Terdistribusi

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.

2.2.2 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.

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

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

Komponen2 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
   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();
}}
}


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

RemoteReferenceModul dan CommunicationModul berada pada tatanan sistem operasi.

1 komentar:

Dawud Tan mengatakan...

permisi gan, saya ada sedikit tulisan mengenai protokol websocket dalam beberapa bahasa pemrograman berikut: http://datacomlink.blogspot.co.id/2015/11/implementasi-server-websocket-rfc-6455.html ditunggu feedback-nya ya gan, semoga menambah wawasan bersama.. terima kasih gan..

Posting Komentar