Inter Process Communication Risanuri Hidayat, Ir., M.Sc.
Model-model IPC RPC (Remote Procedure Call) RMI (Remote Method Invocation) MOM (Message-Oriented Middleware) Stream
Lapisan-lapisan Protocol ISO (International Standard Organization) Mengembangkan Reference Model yang disebut Open Systems Interconnection Reference Model (OSI Model) OSI memungkinkan komunukasi dengan sistem yang terbuka Komunikasi dilakukan dengan aturan-aturan (standard) mengenai format, isi, maksud pesan yang dikirim/diterima. Aturan-aturan formal itu dinamakan PROTOCOL Ada 2 tipe protocol Connection Oriented Connection less
Lapisan-lapisan Protocol Application Presentation Session Transport Network Data-link Physical 1 2 3 4 5 6 7
Lapisan-lapisan Protocol Data Data-link Network Transport Session Presentation Application Data-link trailer Header 1111111110101011010010101010101000000111111111111110001010 Physical
Lapisan-lapisan Protocol Lower-Level Protocol Physical Data-link Network Transport TCP (Transmission Control Protocol) connection-oriented UDP (Unreliable Datagram Protocol) connection less RTP (Real-time Transport Protocol) Higher-Level Protocol Session (dialog control, sinkronisasi) Presentation Application (HTTP, FTP) Middleware (Setara dengan Session dan Presentation)
Remote Procedure Call Suatu program dimungkinkan memanggil prosedur yang berada di lokasi yang lain Menjadi kompleks jika mesin tidak identik Conventional Procedure Call: count = read( fd, buff, nbytes) fd : file buff : buffer nbytes : jumlah byte yang akan dibaca
Remote Procedure Call Conventional Procedure Call Saat pemanggilan prosedur, program mendorong parameter-parameter tersebut ke dalam stack (Last one First) Setelah selesai, prosedur memasukkan nilai return ke suatu register, menghapus return address, dan mengirim control back ke pemanggil. Pemanggil kemudian menghapus parameter2 dari stack dan kembali ke state biasa nbytes buff fd Return address Lokal variabel milik read Lokal variabel milik Main main () { count = read( fd, buff, nbytes) ….. }
Remote Procedure Call RPC harus dibuat sebisa mungkin seperti lokal Pemanggil dibuat tidak sadar bahwa procedure yang dipanggil adalah remote Proses yang terjadi antara main() dengan read() sama, pada CPC dan RPC Yang membedakan, pada RPC, pekerjaan tidak dilakukan sendiri, tetapi ia menge-pack dan mengirimkan data itu ke Remote untuk dikerjakan di Remote
Remote Procedure Call 10 langkah RPC client request Call remote reply server request Call remote procedure reply Return value 10 langkah RPC Prosedur client memanggil client stub Client stub membuat pesan dan memanggil OS lokal OS client mengirim pesan ke OS remote Remote OS memberikan pesan ke server stub Server stub meng-unpack parameter2 dan memanggil server Server mengerjakan operasi, dan me-return hasilnya ke server stub Server stub mem-pack hasil tsb dan memanggil OS lokalnya OS server mengirim pesan (hasil) ke client OS Client OS memberikan pesan tersebut ke client stub Client stub meng-unpack hasil dan me-return hasil ke client
RPC: Parameter Passing Dilakukan oleh (client,server) stub Packing parameter parameter marshaling Client Process k=add(i,j) proc:”add” Int: i Int: j Client stub Client OS Server Process Server stub Server OS public add(i,j)
RPC: Doors Lokal IPC, yaitu IPC pada mesin yang sama Doors, prosedur di dalam server process yang bisa dipanggil oleh process lain (client) dalam komputer yang sama Server process me-register door supaya bisa dipanggil proses lain
RPC: Doors Client Process k=add(i,j) Client stub Client OS proc:”add” Int: i Int: j Client stub Client OS Server Process Server stub Server OS public add(i,j) Komputer
RPC: Asynchronous RPC Pemanggil tidak semata-mata hanya menunggu hasil dari remote Pemanggil tetap bekerja sambil menunggu hasil dari remote Hasil dari remote datang dengan meng-interupt pemanggil client server request Call remote procedure Return value acc ack
Remote Object Invocation Pengembangan RPC, yang dikirim adalah object, bukan hanya data Object perwujudan dari class, mengandung data (state), dan operasi (metode) Metode-metode nampak melalui interface Satu object bisa meng-implement banyak interface Satu interface bisa di-implement oleh banyak macam object Pemisahan antara inteface dan object adalah hal krusial di dalam distributed object. Interface berada di dalam satu mesin, sementara object berada di mesin yang lain
Remote Object Invocation Client Client invokes a method Client OS Server state method object interface interface yang sama Proxy Skeleton Server OS Network Network Ketika client mem-bind ke suatu distributed object, proxy (implementasi interface dari object) me-marshal method invocation menjadi pesan, dan meng-unmarshal pesan reply menjadi result Proxy analog dengan client stub
Remote Object Invocation Object yang sebenarnya berada di server Object (di server) menawarkan interface yang sama dengan interface di client Compile-time object: object adalah perwujudan dari class Java, C++ Run-time object: independent language CORBA Persistent object: object yang selalu ada walaupun tidak masuk dalam proses server Transient object: object yang hanya exist jika server sedang berproses dengannya