Communication ( Sistem Terdistribusi )

Communication ( Sistem Terdistribusi )

Communication

Interprocess communication atau komunikasi antar proses adalah inti dari sistem terdistribusi dan komunikasi antar proses-proses pada system-sistem komputer yang berbeda dapat terjadi jika sistem-sistem tersebut terhubung dalam suatu jaringan. Komunikasi antar komputer diatur oleh aturan yang disebut protokol komunikasi. Beragamnya pembuat perangkat keras dan aplikasi komunikasi menghasilkan produk-produk yang tidak saling kompatibel sehingga mempersulit upaya komunikasi.



Layered Protocols
Interprocess communication atau komunikasi antar proses adalah inti dari sistem terdistribusi dan komunikasi antar proses-proses pada system-sistem komputer yang berbeda dapat terjadi jika sistem-sistem tersebut terhubung dalam suatu jaringan. Komunikasi antar komputer diatur oleh aturan yang disebut protocol komunikasi.

Beragamnya pembuat perangkat keras dan aplikasi komunikasi menghasilkan produk-produk yang tidak saling kompatibel sehingga mempersulit upaya komunikasi.

Sebuah standar protokol kemudian dibuat oleh ISO (International Standard Organization) untuk mengatasi hal tersebut. Standar tersebut dikenal sebagai OSI (Open System Interconnection) model dengan aristektur sebagai berikut.


    Arsitektur OSI dibuat berlapis-lapis dengan fungsi yang berbeda pada setiap lapisannya. Lapisan yang lebih tinggi menyembunyikan kerumitan dari operasi di lapisan yang lebih rendah dan suatu lapisan hanya dapat diakses oleh lapisan yang ada di atas atau di bawahnya.

    Hal tersebut dimaksudkan untuk memberi kemudahan kepada para pembuat perangkat keras dan perangkat lunak komunikasi dalam mengembangkan berbagai protokol yang berbeda sesuai kebutuhan namun dapat saling kompatibel dengan syarat produk mereka mengikuti standar yang telah ditentukan dalam OSI.

    Lapisan-lapisan (Layer) protokol tersebut dapat digolongkan lebih jauh menjadi :
    - Low –level Layers
    - Transport Layer
    - Application Layer
    - Middleware Layer


    Low-level Layers
    Yang termasuk low-level Layer adalah lapisan-lapisan sebagai berikut:
    • Physical Layer   : berisi spesifikasi dan implementasi dari bit-bit  dan proses transmisi dari pengirim ke penerima.
    • Data link Layer  : bertanggung jawab mengurusi pengubahan bit-bit data menjadi frame untuk mengatasi error dan mengatur arus pengiriman frame (flow control).
    • Network Layer : mengatur bagaimana paket-paket diarahkan agar mencapai tujuannya berdasarkan alamat lojik.

    Transport Layer
    • Lapisan ini adalah lapisan sebenarnya yang memberikan fasilitas komunikasi bagi kebanyakan sistem tersebar. Pada lapisan ini ada dua macam protokol yang serimg digunakan, yaitu:
    • TCP (Transport Control Protocol) dengan karakteristik sebagai berikut:
    1. Connection-oriented, sistem-sistem yang akan berkomunikasi harus terlebih dulu saling mengetahui dan sepakat.
    2. Reliable, tersedia mekanisme yang menjamin paket yang rusak atau hilang dikirim ulang.
    3. Stream-oriented communication.
    4. Membutuhkan sumber daya komputasi dan jaringan lebih besar dari UDP. UDP (User Datagram Protocol) dengan karakteristik sebagai berikut:
      - Connectionless, tidak memerlukan adanya saling mengetahui dan kesepakatan.
      - unreliable (best-effort) datagram communication, tidak tersedia mekanisme yang menjamin paket yang rusak atau hilang dikirim ulang.
      - Membutuhkan sumber daya komputasi dan jaringan lebih kecil dari TCP

    Middleware Layer
    • Lapisan adalah lapisan yang dibuat untuk menyediakan layanan-layanan dan protokol-protokol yang seragam dan dapat digunakan oleh aplikasi-aplikasi yang berbeda-beda. 
    • Pada lapisan ini terdapat sekumpulan protokol komunikasi yang beragam yang memungkinkan berbagai macam aplikasi dapat berkomunkasi.
    • Middleware juga memberikan fasilitas marshaling, yaitu proses pengubahan data dalam komunikasi antar proses menjadi bentuk yang siap dikirimkan melalui jaringan sehingga dapat tetap konsisten ketika sampai di sisi penerima, dan proses kebalikannya, unmarshaling.


    Gambar 3.3 Layer, interface dan protokol dalam OSI model

    Communication ( Sistem Terdistribusi )


    Protokol-protokol lain yang tersedia dalam sebuah Middleware biasanya meliputi:
    1. Protokol naming yang menangani masalah pemberian nama dan pencarian lokasi nama.
    2. Protokol keamanan yang berfungsi mengamankan komunikasi yang bersifat penting dan rahasia.
    Fungsi utama dari Middleware Layer adalah membuat kerumitan komunikasi antar proses di sistem yang berbeda menjadi transparan seolah-olah komunikasi hanya terjadi secara lokal. Layanan penting lainnya adalah mekanisme perluasan/penambahan ukuran sistem atau lebih dikenal sebagai scaling mechanism.
    Fasilitas ini menyediakan dukungan untuk proses replikasi dan Caching (penyimpanan sementara).

      Jenis-jenis Komunikasi dalam Middleware
      Berdasarkan sifat-sifatnya komunikasi dalam sistem tersebar melalui Middleware dapat digolongkan menjadi:

      - Transient versus persistent,
      - Asynchrounous versus Synchronous

      Pada persistent communication sebuah pesan yang dikirim akan disimpan dalam tempat penyimpanan sementara selama pesan tersebut belum diterima oleh sistem tujuan sedangkan pada transient communication pesan segera dibuang oleh sistem komunikasi perantara ketika tidak dapat dikirimkan ke tujuan berikutnya.

      Pada Synchronous communication pengirim dapat langsung mengirimkan pesan berikutnya ketika pesan terdahulu belum sampai di sisi penerima sedangkan Synchronous communication mensyaratkan pesan terdahulu diterima sebelum pesan berikutnya dapat dikirimkan.
      Pengiriman pesan berikutnya dapat ditunda pada tiga titik berikut:
      1. Sampai Middleware menyatakan akan melayani permintaan pengiriman pesan ketika diminta oleh pengirim.
      2. Sampai pesan sebelumnya terkirimkan ke penerima, atau
      3. sampai penerima pesan memberikan respon terhadap pesan yang dikirimkan. 

      Gambar 2.1 layanan pada application-level communicationRemote Procedure Call (RPC)

      Communication ( Sistem Terdistribusi )


      Procedure Calling (RPC)
      Banyak sistem tersebar dibuat berdasarkan pertukaran pesan antarproses secara eksplisit namun prosedur send dan receive yang biasa digunakan tidak menyediakan fasilitas untuk menyembunyikan kerumitan proses komunikasi antar proses pada sistem tersebar. Hal ini berakibat pada kerumitan mengembangkan aplikasi sistem tersebar bagi para pengembang aplikasi.

      Untuk menyembunyikan kerumitan ini dibuatlah konsep Remote. Procedure Calling atau RPC sedemikian sehingga sebuah proses pada suatu mesin dapat memanggil prosedur yang berada di mesin lainnya. Pada saat memanggil prosedur pada mesin lain proses yang memanggil akan ditunda eksekusinya hingga mendapatkan balasan hasil eksekusi dari mesin lawannya. Pesan dapat dikirimkan sebagai nama dan parameter prosedur kemudian kembali diterima sebagai keluaran prosedur.



      Operasi Dasar RPC 
      Pada RPC komputer yang memanggil remote procedure berstatus sebagai client sedangkan yang menyediakan prosedur yang dipanggil berstatus sebagai server. Berikut ini adalah rangkaian kejadian ketika sebuah remote procedure call terjadi:

      • Aplikasi yang berada di client memanggil prosedur yang disediakan oleh server.
      • Nama prosedur yang dipanggil dan parameter masukannya (jika diperlukan) sebelum dikirimkan melalui jaringan komputer terlebih dahulu diubah menjadi format yang sesuai untuk pengiriman melalui jaringan atau lebih dikenal sebagai proses marshalling. Proses marshalling ini dilakukan oleh suatu perangkat lunak yang dikenal sebagai client stub.
      • Client stub kemudian memanggil prosedur mengirim paket melalui jaringan yang disediakan dan menjadi tanggung jawab sistem operasi client. 
      • Sistem operasi client mengolah pesan dari client stub dan menjadi paket jaringan dan dikirimkan ke komputer server.
      • Di sisi server pesan diterima oleh sistem operasi dan diberikan kepada server stub yang melakukan proses kebalikan dari marshalling yaitu unmarshalling. Proses unmarshalling mengubah pesan dari client stub menjadi bentuk awal berupa panggilan untuk prosedur tertentu dengan parameter masukannya. 
      • Server akan memanggil prosedur yang diinginkan dengan parameter masukan yang diterima dari server stub kemudian mengembalikan hasil pemanggilan prosedur kepada server stub.
      • Server stub melakukan marshalling pesan berisi hasil dari prosedur yang dipanggil, kemudian memanggil layanan pengiriman data dari sistem operasi server.
      • Sistem operasi server mengolah pesan dari server stub menjadi paket jaringan dan dikirimkan ke komputer client.
      • Sistem operasi client menerima paket dari sistem operasi server dan menyampaikannya pada client stub.
      • Client stub melakukan unmarshalling dan memberikan hasil pemanggilan prosedur kepada yang aplikasi yang melakukan RPC.


      Communication ( Sistem Terdistribusi )


      RPC: Parameter Passing
      • Pada saat nama prosedur dan parameter masukan diubah menjadi pesan ada beberapa hal yang perlu diperhatikan, yaitu:
      • Client dan server sangat mungkin memiliki cara pembacaan data dengan urutan yang berbeda (little endian dan bigendian).
      • Jika terjadi proses encoding maka client dan server harus sepakat mengenai encoding yang digunakan. 
      • Representasi tipe data dasar seperti integer, float, dan string dalam bentuk biner dapat berbeda-beda antar komputer dan bahasa pemrograman.
      • Representasi tipe data kompleks seperti array, union, objek, dan sebagainya ke dalam bentuk biner juga dapat berbeda-beda.
      • Untuk menyelesaikan masalah-masalah tersebut client dan server harus mengubah pesan menjadi format representasi data yang tidak bergantung mesin maupun bahasa pemrograman.


      Gambar 3.6 Remote computation through RPC

      Communication ( Sistem Terdistribusi )


      3. A Synchronous RPC
      • Pada umumnya proses yang melakukan remote procedure call akan berhenti sementara hingga mendapat hasil dari sisi server. Proses-proses tertentu seperti: memulai layanan di komputer lain, menransfer uang ke rekening lain, melakukan entri data pada basis data tidak perlu menunggu hasil tertentu dan dapat melanjutkan eksekusi intruksi berikutnya.
      • RPC asinkron (a Synchronous RPC) adalah teknik sedemikian sehingga proses yang memanggil remote procedure tidak menunggu hasil dari sisi server untuk melanjutkan mengeksekusi instruksi berikutnya. 
      • Pada RPC asinkron server langsung memberikan balasan ketika pesan dari client diterima tanpa memproses pesan terlebih dahulu dan begitu balasan dari server diterima client segera melanjutkan eksekusi instruksi berikutnya.

      Gambar 3.7 Asynchronuos RPC.Bandingkan dengan operasi dasra RPC pada gambar 3.5

      Communication ( Sistem Terdistribusi )



      • Pada kasus lain sebuah server dapat saja membutuhkan waktu untuk menjalankan prosedur yang dipanggil oleh Client. Contohnya adalah permintaan melakukan pencarian data tertentu pada server yang dapat  membutuhkan waktu cukup lama.
      • Client tidak perlu menghabiskan waktu dengan menunggu jawaban hasil pencarian melainkan dapat langsung melanjutkan eksekusi instruksi selanjutnya. Pada saat jawaban sudah selesai disusun oleh server dan dikirimkan ke client proses yang memanggil prosedur pencarian akan diinterupsi agar mengetahui bahwa jawaban dari server telah datang dan dapat mengolah jawaban tersebut sesuai kebutuhannya. 
      • Teknik ini dikenal sebagai deferred Synchronous RPC.

      Gambar 3.8 client dan server berinteraksi dengan 2 a Synchronous RPC

      Communication ( Sistem Terdistribusi )

      RPC pada Tataran Praktis: DCE

      DCE atau Distributed Computer Environment adalah sebuah Middleware  yang berfungsi untuk menjadi sebuah lapisan yang menyembunyikan kerumitan lapisan sistem operasi dan lapisan komunikasi jaringan dalam RPC.  DCE awalnya dikembangkan untuk sistem operasi UNIX namun saat ini telah dibuat agar dapat dijalankan di berbagai sistem operasi terkenal termasuk Windows dan VMS.

      Data stream

      Data stream atau aliran data adalah rangkaian unit-unit data yang dapat disampaikan secara diskrit (dalam paket-paket) maupun kontinyu (aliran tidak terputus/terbagi-bagi). Pengaturan waktu sangat penting ketika aliran data dikirimkan secara kontinyu. Untuk memberi perlakuan yang sesuai berdasarkan pengaturan waktu transmisi data dapat dibedakan menjadi beberapa jenis, yaitu:
      • Transmisi asinkron (aSynchronous transmission) Pada transmisi jenis ini data dalam stream dialirkan secara berurutan tetapi tidak ada batas waktu kapan transmisi data berlangsung. Transmisi ini biasanya berlaku pada pengiriman data yang bersifat diskrit seperti file atau pesan.
      • Transmisi sinkron (Synchronous transmission) Kebalikan dari transmisi asinkron    transmisi jenis ini memiliki batas waktu maksimum jeda pengiriman dari ujung ke ujung untuk setiap unit aliran data. Pada transmisi ini tidak penting apakah data dikirimkan lebih cepat dari batas maksimum jeda. Contoh aplikasinya adalah pada sensor suhu yang mengirimkan sampling suhu kepada suatu pengendali. Data sampling yang tiba lebih cepat dari batas maksimum tidak memberikan pengaruh apapun terhadap pekerjaan pengendali.
      • Transmisi isokron (isochronous transmission). Pada transmisi jenis ini terdapat batas maksimum dan minimum jeda pengiriman dari ujung ke ujung atau yang dikenal sebagai filter. Transmisi ini berlaku pada pengiriman data audio, video dan multimedia.