Monday 10 March 2014

Interprocess Communication 2

No comments
Multicast communication
Operasi multicast adalah operasi untuk mengirim satu pesan dari satu proses ke
masing-masing anggota kelompok proses tersebut. Multicast message menyediakan infrastruktur yang berguna dalam distribusi sistem.
Berikut karakteristik dari Multicast message:

1. Fault tolerance berdasarkan replicated system
Replicated system terdiri dari sekelompok server. Permintaan klien multicast diperuntukan bagi  semua anggota kelompok, yang mana masing-masing melakukan operasi yang sama. Bahkan ketika terjadi kegagalan pada beberapa anggota, klien masih bisa dilayani.
2. Discovering services in spontaneous networking
Multicast message dapat digunakan oleh server dan client dalam layanan pencarian tempat yang tersedia agar dapat mendaftarkan interface atau untuk mencari antarmuka layanan lain di sistem terdistribusi.
3. Better performance through replicated data
Data disalin untuk meningkatkan kinerja layanan. Pada beberapa kasus salinan data disimpan di komputer pengguna.
4. Propagation of event notifications
Multicast di suatu grup dapat digunakan untuk memberitahu proses ketika terjadi sesuatu. Contoh sederhananya, ketika seseorang merubah status mereka di Facebook maka semua temannya akan menerima notifikasi pula.

Implementasi dari Multicast Communication

A. IP Multicast
IP multicast adalah metode pengiriman Internet Protocol (IP) datagram pada transmisi tunggal untuk satu set komputer yang membentuk kelompok multicast  Pengirim tidak menyadari identitas penerima individu dan dari ukuran kelompok. Sebuah kelompok multicast ditentukan oleh Kelas D alamat Internet. IP multicast hanya tersedia melalui UDP.
Menjadi anggota dari kelompok multicast memungkinkan komputer untuk menerima paket IP dikirim ke grup. Keanggotaan kelompok multicast dinamis, hal tersebut memungkinkan komputer user untuk bergabung atau pergi kapan saja. Hal ini juga memungkinkan untuk mengirim datagrams ke grup multicast tanpa anggota.

- Multicast Router
Dalam multicast routing, alamat sumber (yang merupakan alamat unicast sederhana) digunakan untuk menentukan arah aliran data. Sumber lalu lintas multicast dianggap sebagai hulu. Router akan menentukan interface hilir mana yang menjadi tujuan untuk kelompok multicast nantinya (alamat tujuan), dan mengirimkan paket keluar melalui interface yang sesuai.
- Alokasi pengalamatan multicast:
Alamat multicast berada pada Kelas D (224.0.0.0 hingga 239.255.255.255)  dan dikelola secara global oleh Internet Assigned Numbers Authority (IANA).

B. Kegagalan Model pada Multicast Datagram
Datagrams multicast pada IP multicast memiliki karakteristik kegagalan yang sama seperti UDP datagrams. Akibatnya pada multicast adalah pesan tidak terjamin akan terkirimkan ke
setiap anggota di kelompok.

C. Java API to IP Multicast
Java API menyediakan antarmuka datagram untuk IP multicast melalui kelas MulticastSocket, yang merupakan subclass dari DatagramSocket dengan kemampuan tambahan untuk dapat bergabung dengan grup multicast. Java API memungkinkan TTL yang akan ditetapkan untuk socket multicast dengan metode Set TimeTo Live. Standarnya adalah 1, yang memungkinkan multicast untuk menyebarkan hanya pada jaringan lokal.

Network Virtualization

Kekuatan dari protokol komunikasi internet adalah dari API, di bab sebelumnya sudah dijelaskan. Dalam perkembangannya distribusi pada software jaringan tumbuh sebagai kelas yang berbeda termasuk seperti peer-to-peer dan skype. Pada akhirnya yang menjadi faktor menyebabkan minat virtualisasi jaringan adalah ketika meningkatnya jumlah teknologi jaringan dan layanan tranportasi IP yang semakin besar dan terus berkembang.
Kenyataannya virtualisasi jaringan banyak dibangun melalui jaringan internet. Padahal pada masing-masing jaringan virtual dapat mendukung membangun aplikasi terdistribusi seperti multimedia streaming, BBC iPlayer, BoxeeTV, dll. Jaringan virtualisasi dioptimalkan untuk beberapa aplikasi tanpa mengubah karakteristik jaringan yang mendasarinya. Jaringan komputer sendiri akan menangani skema protokol dan algotima routing dan didalam jaringan virtualisasi hal-hal tersebut ajab dikerjakan masing-masing sesuai kebutuhan.

OVERLAY NETWORK

Sebuah jaringan overlay adalah jaringan virtual yang terdiri dari node dan link virtual berdasarkan jaringan IP dan memberikan pilihan yaitu :
  • Layanan disesuaikan terhadap kelas kebutuhan dari yang tinggi kerendah seperti distribusi konten multimedia
  • Operasi yang lebih efisien dalam jarigan virtual pada lingkungan tertentu seperti routing.
  • erdapat fitur tambahan seperti multicast atau komunikasi yang aman.
Jaringan overlay ini mempunyai keunggulan yaitu
  • Mereka memugkinkan layanan jaringan baru tanpa melakukan perubahan pada jaringan
  • Mendorong ekperimen dengan layanan jaringan untuk aplikasi kelas tertentu
  • Beberapa lapisan bisa menjadi lebih terbuka dan terstruktur
Jaringan Overlay adalah lapisan tetapi diluar arsitektur seperti TCP/IP, secara khusus overlau mengembangkan elemen inti dari jaringan. Adapun topologi juga digunakan dalam jarigan overlay ini, yang biasanya digunakan yaitu bentuk cincin.
[gambar 4.15]
SKYPE
[gambar 4.16]

Skype adalah aplikasi peer-to-peer yang memberikan fasilitas Voice over IP, ini juga termasuk instant messging, video call dan layanan telpon standar. Skype ini dikembangkan pada tahun 2003 oleh kazaa. Sistem sharing yang digunakan yaitu peer-to-peer dengan perkiraan 370 juta diawal tahun 2009.
Skype sendiri juga merupakan penggunaan jaringan overlay terbesar didunia dengan skala besar pada sistemnya yang menguhubungkan antara orang-orang yang ingin berkomunikasi. Arsitektur jaringan virtual mendukung skype melalui beberapa metode termasuk beberapa analisis dan prinsip yang berdominan kepada publik.
  • Arsitektur Skype
didasarkan pada infrastruktur peer-to-peer yang terdiri dari pengguna(host), Skype host memiliki kemampuan yang memadai untuk mengerjakan tugasnya. Node yang dipilih untuk digunakan juga berdasarkan berbagai kriterian seperti bandwitdh, reachbility, dan ketersediaan.
  • Koneksi Pengguna
Pengguna skyoe dikonfirmasi melalui server login kemudian melakukan kontak dengan super node yang dipilih. Setiap klien mempertahankan cache identita berupa alamat IP dan nomor port, dan klien disini dapat membangun lebih dari ratusan node dari waktu kewaktu
  • Pencarian untuk pengguna
Tujuan utama node super adalah untuk melakukan pencarian yang efektif dan efisien dari indeks global pengguna, dan kemudian didistribusikan pada node yang lebih besar. Pencarian melibatkan beberapa klien untuk menemukan pengguna yang dicari. Sebuah pencarian klien biasanya membutuhkan waktu antara 3-4 detik, dan kira-kira 5-6 detik untuk host yang memiliki alamat global IP. Oleh karena itu node dibutuhkan cache untuk meningkatkan kinerja pada sistem di skype.
  • Koneksi Suara

Setelah pengguna ditemukan makan skype menetapkan suara hubungan antara kedua belah pihak menggunakan TCP untuk sinyal permintaan panggilan dan penghentian baik UDP atau TCP untuk streaming audio, biasanya UDP lebih sering digunakan daripada TCP.software yang digunakan untuk encoding dan decoding audio bertujuan untuk memberikan kualitas panggilan yang sangat baik yang biasanya telah dicapai dengan menggunakan skype.

Studi Kasus untuk IPC (boleh selain MPI)
varian sinkronisasi message passing diwujudkan dengan memblokir panggilan kiriman dan terima, sedangkan varian asynchronous memerlukan bentuk non-blocking kiriman. Hasil akhirnya nanti adalah sebuah paradigma baru untuk distribusi pemrograman yang lebih ringan, efisien dan minimal. Standar Message Passing Interface dikembangan oleh komunitas high performance computing dan pertama kali dikenalkan pada tahun 1994 oleh forum MPI.
Arsitektur dasar dai pemodelan MPI ini relatif simpel. Dengan menambahkan dimensi yang secara eksplisit memiliki MPI library buffer pada kedua pengirim dan penerima, diatur oleh MPI library dan digunakan untuk menahan data ketika transit.
Untuk meyederhanakan kompleksitas, dapat dilihat jumlah varian pada gambar dibawah ini yang merupakan penyempurnaan dari message passing. Menyediakan lebih banyak pilihan dankontrol yang secra efektif memisahkan sinkronus/asinkronus dan blocking/non-blocking. Dimulai dengan menguji empat operasi blocking.

Interprocess Communication 1

No comments

1. Tentang pengenalan

IPC (Inter-process Communication)
Inter-Process Communication (IPC), adalah mekanisme pertukaran data antara satu proses dengan proses lainnya, baik itu proses yang berada di dalam komputer yang sama ataupun komputer yang berbeda terhubung melalui sebuah jaringan.
IPC dapat dilakukan dengan berbagai metode diantaranya:
  • Files, adalah sebuah record yang disimpan dalam disk yang dapat diakses oelh setiap proses. Metode ini dapat dijalankan di kebanyakan OS.
  • Signal, adalah komunikasi yang menggunakan perintah untuk mengirim dari satu proses ke proses lainnya. Metode ini dapat dijalankan di kebanyakan OS.
  • Socket, Sebuah aliran data yang dikirim melalui interface jaringan, baik untuk proses yang berbeda pada komputer yang sama atau komputer lain. Metode ini dapat dijalankan di kebanyakan OS.
  • Message Queue, adalah sebuah data stream anonim yang mirip dengan metode Pipe, tetapi Message Queue menyimpan dan mengambil informasi dalam bentuk packets. Metode ini dapat dijalankan di kebanyakan OS.
  • Pipe, adalah sebuah aliran data dua arah yang dihubungkan melalui standar input (stdin) dan output (stdout) dan membaca karakter demi karakter. Metode ini dapat dijalankan di semua sistem yang mendukung POSIX (Portable Operating System Interface), Windows.
  • Named Pipe, adalah implementasi Pipe melalui sebuah file pada sistem file, bukan melalui standar input dan output. Metode ini dapat dijalankan di semua sistem yang mendukung POSIX (Portable Operating System Interface), Windows.
  • Semaphore, adalah sebuah struktur sederhana yang mensinkronisasikan thread atau proses yang bekerja pada sumber daya yang sama. Metode ini dapat dijalankan di semua sistem yang mendukung POSIX (Portable Operating System Interface), Windows.
  • Shared Memory, adalah proses yang memiliki akses ke memori yang sama, sehingga memungkinkan semua proses untuk mengubah dan membaca perubahan yang dilakukan oleh suatu proses. Metode ini dapat dijalankan di semua sistem yang mendukung POSIX (Portable Operating System Interface), Windows.
  • Message Passing, adalah proses komunikasi antar bagian sistem untuk membagi variabel yang dibutuhkan. Proses ini menyediakan dua operasi yaitu mengirim pesan dan menerima pesan. Bila dua buah sistem ingin berkomunikasi satu sama lain, maka harus dibuat sebuah link komunikasi antara kedua sistem tersebut. Setelah itu, kedua bagian itu dapat saling bertukar pesan melalui link komunikasi tersebut. Metode ini digunakan di paradigma MPI, Java RMI, CORBA, DDS, MSMQ, Mailslots, QNX.
  • Memory-mapped File, adalah sebuah file yang dipetakan ke RAM dan dapat dimodifikasi dengan mengubah alamat memori secara langsung. Metode ini dapat dijalankan di semua sistem yang mendukung POSIX (Portable Operating System Interface), Windows.

Application Programming Interface

Atau bisa kita sebut API, API adalah sebuah adalah sekumpulan perintah, fungsi, dan protocol yang bisa digunakan pengembang software untuk membagun perangkat lunak tertentu. API menyediakan bahan yang biasa diolah seperti perintah dasar, contohnya membuat windows atau tombol. Selain itu, API juga biasa digunakan untuk perintah lanjutan.
Pada sistem terdistribusi API digunakan sebagai penanganan proses send and receive atau singkatnya yaitu melakukan proses komunikasi. terdapat beberapa karakteristik IPC menggunakan API ini
a. Synchronous and asynchronous communication Pada bentuk komunikasi synchronous pengiriman dan penerimaan proses sinkronisasi terjadi pada setiap pesan, pada kasus ini kedua receiver dan sender menggunakan operasi blocking, maksud dari blocking disini adalah sender tidak akan melakukan proses sebelum receiver sinyal bahwa pesan yang dikirim sudah diterima, sedangkan dari segi receiver, maka receiver tidak akan menerima pesan dari sender lain selama pesan dari sender sebelumnya diterima. Sedangkan pada bentuk komunikasi asynchronous menggunakan operasi sender non-blocking, penjelasan tentang operasi non-blocking adalah sender tidak akan mengirim pesan lain sebelum pesan yang sebelumnya diterima oleh receiver. untuk receiver bisa menggunakan operasi blocking atau non-blocking.
b. Message destinations Dengan konsep message destination ini pengirim harus tahu sampai pada tingkat port, karena sebuah penerima bisa saja memiliki banyak pengirim, sehingga untuk mengefektifkan terdapat banyak port untuk menerima data.
c. Reliability Pada karakteristik ini muncul akibat dari banyak terjadinya paket kiriman data yang hilang atau packet lost, maka dari itu bagaimana membuat pesan yang dikirim harus reliable atau handal. faktor validitas dan integritas juga mempengaruhi realible ini.
d. Ordering Pada dasarnya sebuah data pesan sebelum dikirim akan dipecah menjadi bentuk paket-paket dan dikirim secara independen. maka dari itu ordering atau pengurutan paket diperlukan agar ketika penggabungan pada penerima tidak terjadi eror.
SOCKET
Socket adalah interface pada jaringan yang menjadi titik komunikasi antarmesin pada Internet Protocol, dan tentunya tanpa komunikasi ini, tidak akan ada pertukaran data dan informasi jaringan. Socket terdiri dari elemen-elemen utama sebagai berikut:
(1)    Protokol.
(2)    Local IP.
(3)    Local Port.
(4)    Remote IP.
(5)    Remote Port.
Komunikasi socket jaringan memang tidak mengenal lelah, pertukaran data terjadi terus-menerus dan memegang peranan vital.
Bayangkan sebuah server game online yang berkomunikasi tanpa henti, dimainkan oleh entah berapa banyak client yang tersebar. Ini merupakan salah satu contoh aplikasi dari sekian banyak aplikasi yang menggunakan socket jaringan untuk saling berkomunikasi dan bertukar data.

UDP, singkatan dari User Datagram Protocol, adalah salah satu protokol lapisan transpor TCP/IP yang mendukung komunikasi yang tidak andal (unreliable), tanpa koneksi (connectionless) antara host-host dalam jaringan yang menggunakan TCP/IP.
Gambar diatas merupakan datagram yang disediakan oleh Java API
TCP (Transmission Control Protocol)
Adalah sekelompok protocol yang mengatur komunikasi data komputer di Internet. Komputer-komputer yang terhubung ke internet berkomunikasi dengan protocol ini. Karena menggunakan bahasa yang sama, yaitu protocol TCP/IP, perbedaan jenis komputer dan system operasi tidak menjadi masalah. Komputer PC dengan system Operasi Windows dapat berkomunikasi dengan komputer Macintosh atau dengan Sun SPARC yang menjalankan Solaris. Jadi, jika sebuah komputer menggunakan protocol TCP/IP dan terhubung langsung ke Internet, maka komputer tersebutdapat berhubungan dengan komputer di belahan dunia manapun yang juga terhubung ke Internet.
Dalam TCP steam communication ada beberapa hal yang di tangani, Message sizes, Flow control, Message duplication and ordering, Message destinations



Eksternal Data Representation and Marshalling
Informasi yang disimpan pada program yang sedang berjalan disebut struktur data. Dimana untuk pengiriman struktur data perlu dilakukan pengubahan kedalam bentuk urutan bytes sebelum dikirim dan diubah kembali menjadi struktur data ketika sudah sampai ditujuan. Pengiriman data pada awal waktu sangat sulit dilakukan, karena tiap data memiliki masing-masing tipe seperti bilangan terdapat interger dan float, bahkan pada integer sendiri terbagi menjadi 2 jenis tipe instruksi (big-endian dan little-endian), oleh karena itu pada saat ini mulai dilakukan penyetaraan metode pengiriman data yang memungkinkan dua komputer untuk dapat saling bertukar data (data biner) :
1. Pesan diubah menjadi bentuk lain yang telah disepakati kedua belah pihak sebelum dikirim dan kemudian diubah kedalam bentuk masing-masing lagi setelah sampai ditujuan.
2. Pesan menggunakan format si pengirim, kemudian baru si penerima mengubahnya.
Namun secara keseluruhan poin 1 adalah yang digunakan, sehingga penggunaan standar eksternal dalam merepresentasikan struktur data disebut external data representation. Sedangkan Marshalling adalah penyusunan item data (translation) kedalam bentuk yang cocok untuk proses pengiriman dan unmarshalling adalah pengubahan susunan item data (generation) tadi pada sisi penerima.

Tiga pendekatan alternatif kepada External Data Representation dan Marshalling diantaranta :
1. Bentuk Umum Data Corba = fokus dengan representasi eksternal untuk jenis terstruktur dan primitif yang dapat dilalui sebagai argumen dan hasil metode remote doa di CORBA.
2. Serialisasi objek Java = fokus terhadap perataan dan representasi data eksernal dari objek single atau pohon objek yang mungkin dibutuhkan untuk dikirim dalam pesan  atau disimpan dalam disk.
3. XML (Extensible Markup Language) = mendefnisikan format textual untuk representasi struktur data.
A. CORBA’S Common Data Representation (CDR)
CORBA CDR adalah representasi data eksternal. CDR dapat merepsentasikan semua tipe data yang dapat digunakan sebagai argument dan nilai keluaran dalam remote invocation. Terdapat 15 tipe primitif dalam CDR yaitu :
- shot (16 bit) - double - float
- long (32 bit) - char - any
- unsigned long - boolean - octect
- unsigned short - tipe komposit
Setiap argumen atau hasil dari pengaturan permintaan direpsentasikan dalam urutan byte dalam permintaan atau hasil pesan. Dalam tipe primitif, CDR menjelaskan sebuah representasi untuk permintaan big-endian dan little-endian, dengan nilai yang dikirimkan menyesuaikan dengan si pengirim. Si penerima akan mengubah pesan tersebut apabila membutuhkan instruksi yang berbeda. Sedangkan dalam tipe Constructred, merupakan nilai primitif yang meliputi setiap tipe pembentuknya dimasukkan kedalam baris byte. Contohnya :
Merupakan 3 field pada struct person, dimana setiap barisnya terdiri dari 4 byte yang mana diasumsikan 1 byte mewakili 1 karakter. Operasi marshalling pada contoh ini dapat dengan otomatis tergenerate / terbentuk dari spesifikasi tipe data yang dikirimkan melalui pesan. Tipe dari struktur data dan tipe dari basis data dijelaskan pada COBRA IDL. Contohnya :
struct Person {
string name;
string place;
unsigned long  year;
}
B. Java Object Serialization
Pada Java RMI, kedua objek dan nilai data primitif mungkin akan di kirim sebagai argumen dan hasil dari method permintaan. Objek adalah sebuah contoh/kejadian pada class Java. Contoh Java class yang setara dengan struct person yang didefinisikan dengan COBRA IDL :
Kondisi kelas tersebut mengimplementasikan Serializable interface, dengan tanpa method yang memungkinkan instance nya di serialkan. Serializable dalam java memiliki arti aktifitas menyetarakan sebuah objek atau sekumpulan objek yang terhubung kedalam bentuk yang serial yang memungkinkan untuk disimpan atau dikirimkan melalui pesan.
Pada objek Java dapat memiliki ikatan terhadap objek lain. Ketika sebuah objek di serialkan, maka semua objek yang memiliki hubungan dengannya akan diserialkan ini bertujuan agar ketika objek dibentuk ulang di tujuan (sisi penerima), semua yang berhubungan dengan objek tersebut akan masih terhubung.
Untuk menserialkan objek, informasi dari class objek tersebut harus dituliskan, diikuti dengan tipe dan nama variabel instancenya. Jika variabel instancenya mengacu pada class yang baru maka akan dilakukan hal yang sama, terus menerus hingga tidak terdapat lagi variabel yang mengacu pada suatu class. Setiap kelas memilik penangannannya dan tidak ada class yang ditulis lebih dari satu kali kedalam aliran byte.

Serialization pada objek Java menggunakan refleksi untuk menemukan nama kelas dari objek yang akan diserialkan beserta nama, tipe, dan nilai dari variabel instance. Sedangkan pada sisi Deserialization, nama class pada bentuk serial digunakan untuk membentuk ulang sebuah class dengan objek yang memiliki nama, tipe, serta nilai instancenya sesuai dengan yang diserialkan sebelumnya.

C. Extensible Markup Language (XML)
XML adalah bahasa markup yang didefinisikan oleh World Wide Web Consortium untuk penggunaan Web. Bahasa markup secara umum mengacu pada pengkodingan textual yang merepsentasikan sebuah text dan detail sebagai strukturnya. XML dan HTML diturunkan dari SGML (Standardized Generalized Markup Language), sebuah bahasa markup yang sangat sulit. HTML didesain untuk tampilan dari sebuah web, sedangkan XML didesain untuk menulis struktur dokumen untuk sebuah web.
Item data XML di tag dengan string “markup”. Tag ini berfungsi untuk menjelaskan struktur logika dari data dan asosiasi passangan nilai atribut dengan struktur logika. Dimana penggunaan tag ini berbeda dengan HTML yang berfungsi untuk menspesifikasikan bagaimana sebuah browser dapat menampilkan teks. Fungsi dari XML itu sendiri adalah untuk memungkinkan komunikasi antara client dengan web service, pendefinisian interface, serta properti web lainnya.
Contoh dari XML untuk kasus struct person :
Pada XML ini terdiri dari tag dan karater data. Karakter data adalah sebuah data pada contoh diatas adalah “Smith” atau “1984”, dan dokumen XML diapit oleh 2 buah tag contohnya adalah dengan

Element dan atribut pada XML
1. Element : Merupakan data yang diapit oleh kedua tag. Contohnya : Smith
2. Atribut : Merupakan pemberian id/label terhadap data. Contohnya : id=”123456”
3. Nama : Nama dari tag dan attribut dapat diawali dengan garis bawah / sama dengan, yang dilanjutkan dengan huruf,angka, dll. Namun tidak bisa mengawali dengan kata “xml”.
4. Data Biner : Perepsentasian data kedalam biner menggunakan basis 64 dengan hanya mampu mengenkripsi karakter aplhanumerik ditambah dengan +,/ dan =.
Parsing dan bentuk dokumen
Bentuk dokumen umum yang benar adalah .. dan ... Selain itu maka akan muncul fatal error.
1. CDATA, untuk penguraian konten dari elemen karena mungkin mengandung struktur bersarang. Kemudian untuk spesial karakter dapat juga menggunakan CDATA. Sebagai contoh :
2. XML Prolog,s etiap dokumen XML harus memiliki prolog / pendahuluan yang memiliki paling tidak spesifikasi dari versi XML. Dapat juga ditambah dengan jenis encoding dll. Contoh
XML namespaces
Adalah sekumpulan nama untuk koleksi dari tipe element dan attribut yang tujukan dengan URL. Dokumen XML lain dapat menggunakan XML namespaces dengan mangacu ke URLnya. Contoh :
XML Schemas
Menjelaskan tentang elemen dan atribut yang dapat muncul dalam dokumen tersebut, bagaimana elemen di sarangkan. Contoh :
D. Remote Object References
adalah sebuah pengidentifikasi untuk remote objek yang cocok dalam sebuah sistem terdistribusi. Remote objek digunakan ketika client meminta sebuah method melalui sebuah server dengan menggunakan remote objek. Remote Object References haruslah unik karena banyak client yang menggunakan metode ini untuk miminta objek. Ada beberapa cara untuk membuat teknik ini menjadi unik, diantaranya adalah menggabungkan alamat IP user dengan nomer port dari proses yang dibentuk, ditambah dengan waktu pembentukan proses dan sebuah nomor objek lokal (nomor proses pembentukan objek).