Komputasi terdistribusi atau tersebar berhadapan dengan sistem hardware dan software yang mengandung lebih dari satu elemen pemroses atau storage, proses-proses yang konkuren, atau banyak program yang berjalan dalam suatu domain yang dikendalikan secara longgar atau ketat.
Dalam komputasi terdistribusi, suatu program dipecah ke dalam bagian-bagian yang berjalan secara simultan (bersamaan) pada banyak komputer yang berkomunikasi di atas suatu jaringan. Komputasi terdistribusi merupakan suatu bentuk dari komputasi paralel, tetapi komputasi paralel sangat umum digunakan untuk menggambarkan bagian-bagian program yang berjalan secara simultan pada banyak prosesor dalam komputer yang sama. Kedua tipe pemrosesan iniy memerlukan pembagian suatu program ke dalam bagian-bagian yang berjalan secara bersamaan, tetapi program-program terdistribusi sering harus berhadapan dengan lingkungan yang heterogen, link jaringan dengan latency bervariasi, dan kegagalan yang tidak dapat diprediksi, baik di dalam jaringan maupun komputer.
Pengaturan interaksi antar komputer yang mengeksekusi komputasi terdistribusi merupakan pekerjaan utama. Agar mampu memanfaatkan berbagai jenis komputer, maka protokol atau saluran komunikasi sebaiknya tidak mengandung atau menggunakan suatu informasi yang tidak dapat dipahami oleh mesin tertentu. Sistem harus dapat memastikan messages benar-benar tersampaikan dengan benar, juga saat messages invalid maka sistem harus melakukan langkah-langkah antisipasi. Jika ini tidak ditangani kemungkinan akan menyebabkan sistem down dan berbagai aktifitas berikutnya di dalam jaringan akan ditolak (reject). Faktor penting lain adalah kemampuan untuk men-deploy software ke komputer lain secara portable sehingga memungkinkan eksekusi dan interaksi dengan jaringan yang telah ada. Ini mungkin tidak akan praktis ketika mengunakan hardware dan sumber daya berbeda, dimana kita harus memikirkan cara lain seperti cross-compiling atau melakukan porting software tersebut secara manual.
Tujuan dan Keuntungan
Terdapat berbagai tipe sistem komputer terdistribusi dan banyak tantangan selama perancangan dan implementasinya. Tujuan utama dari sistem komputasi terdistribusi adalah untuk menghubungkan para pengguna dan sumber daya dalam cara yang transparent, open dan scalable. Idealnya, ini akan membuat sistem lebih fault-tolerant daripada sistem komputer stand-alone.
Openness merupakan properti dari sistem terdistribusi dimana setiap sub-sistem secara kontinu terbuka untuk berinteraksi dengan sistem lain. Protokol web services adalah standard yang memungkinkan sistem terdistribusi di-extend dan di-scale. Secara umum, suatu sistem terbuka yang bersifat scalable memberikan keuntungan lebih dibandingkan sistem yang tertutup dan self-contained (menyatu).
Konsekuensinya, sistem terdistribusi terbuka memberikan beberapa tantangan berikut:
Jika tidak direncanakan dengan tepat, suatu distributed system dapat menurunkan reliabilitas total dari komputasi jika ketidak-tersediaan dari suatu node dapat menyebabkan gangguan bagi node-node lain. Troubleshooting dan diagnosing terhadap masalah dalam distributed system dapat menjadi lebih sulit, karena perlu analisis yang berkaitan dengan node jauh atau menginspeksi komunikasi antar node di dalam sistem.
Banyak tipe komputasi tidak cocok bagi lingkungan terdistribusi, biasanya yang berhubungan dengan jumlah komunikasi jaringan atau sinkronisasi yang dibutuhkan antar node. Jika bandwidth, latency, atau persyaratan komunikasi begitu signifikan, maka tidak ada keuntungan dari distributed computing dan kinerja dapat lebih burukk daripada lingkungan non-distributed.
Arsitektur
Berbagai arsitektur hardware dan software digunakan bagi komputasi terdistribusi. Pada level lebih rendah, perlu untuk menghubungkan banyak CPU melalui jaringan, tanpa melihat apakah jaringan itu dicetak pada suatu circuit board atau dibuat berbentuk perangkat loosely-coupled dan kabel. Pada tingkat yang lebih tinggi, perlu interkoneksi antar proses yang berjalan pada CPU-CPU tersebut dengan suatu sistem komunikasi.
Pemrograman terdistribusi secara umum termasuk ke dalam salah satu dari arsitektur atau ketegori dasar sistem Client-server, arsitektur 3-tier, arsitektur N-tier, obyek terdistribusi, loose coupling, atau tight coupling.
Penjelasan singkatnya adalah:
Konkurensi
Komputasi terdistribusi mengimplementasikan suatu jenis konkurensi. Ini berhubungan erat dengan pemrograman konkuren, sehingga kadang tidak dibicarakan sebagai topik terpisah.
Contoh
Berbagai proyek komputasi terdistribusi telah tumbuh pada dalam tahun-tahun terakhir. Banyak yang basis volunteer, dan melibatkan pengguna-pengguna yang mendonasikan power komputasi yang tidak digunakan untuk bekerja pada masalah komputasi yang menarik. Contoh proyek demikian termasuk proyek Folding@home di Jurusan Kimia universitas Stanford, yang difokuskan pada simulasi protein folding untuk menemukan obat penyakit dan memahami sistem biophysical; World Community Grid, suatu usaha untuk membuat grid komputasi terbesar di dunia untuk menangani proyek penelitian ilmiah yang bermanfaat bagi kemanusiaan, berjalan dan didanai oleh IBM; SETI@home, difokuskan pada analisis data radio-telescope untuk mendapatkan bukti sinyal cerdas dari angkasa, dikelola oleh Space Sciences Laboratory di University of California, Berkeley; LHC@home, digunakan untuk membantu merancang dan men-tune Large Hadron Collider, dikelola oleh CERN di Geneva; dan distributed.net yang bertitik-berat pada pemecahan berbagai cryptographic cipher.
Suatu proyek komputasi terdistribusi juga sering melibatkan kompetisi dengan sistem terdistribusi lain. Kompetisi ini dapat bertujuan prestige, atau bermaksud membujuk pengguna untuk mendonasikan power pemrosesan ke proyek tertentu. Sebagai contoh, stat races adalah ukuran kerja suatu proyek komputasi terdistribusi, berapa kemampuan komputasi selama sehari atau seminggu. Ini telah menjadi begitu penting dalam praktek, hampir semua proyek komputasi terdistribusi menawarkan analisis statistik online dari kinerja mereka, diupdate setidaknya harian jika tidak real-time.
Sumber :
Dalam komputasi terdistribusi, suatu program dipecah ke dalam bagian-bagian yang berjalan secara simultan (bersamaan) pada banyak komputer yang berkomunikasi di atas suatu jaringan. Komputasi terdistribusi merupakan suatu bentuk dari komputasi paralel, tetapi komputasi paralel sangat umum digunakan untuk menggambarkan bagian-bagian program yang berjalan secara simultan pada banyak prosesor dalam komputer yang sama. Kedua tipe pemrosesan iniy memerlukan pembagian suatu program ke dalam bagian-bagian yang berjalan secara bersamaan, tetapi program-program terdistribusi sering harus berhadapan dengan lingkungan yang heterogen, link jaringan dengan latency bervariasi, dan kegagalan yang tidak dapat diprediksi, baik di dalam jaringan maupun komputer.
Pengaturan interaksi antar komputer yang mengeksekusi komputasi terdistribusi merupakan pekerjaan utama. Agar mampu memanfaatkan berbagai jenis komputer, maka protokol atau saluran komunikasi sebaiknya tidak mengandung atau menggunakan suatu informasi yang tidak dapat dipahami oleh mesin tertentu. Sistem harus dapat memastikan messages benar-benar tersampaikan dengan benar, juga saat messages invalid maka sistem harus melakukan langkah-langkah antisipasi. Jika ini tidak ditangani kemungkinan akan menyebabkan sistem down dan berbagai aktifitas berikutnya di dalam jaringan akan ditolak (reject). Faktor penting lain adalah kemampuan untuk men-deploy software ke komputer lain secara portable sehingga memungkinkan eksekusi dan interaksi dengan jaringan yang telah ada. Ini mungkin tidak akan praktis ketika mengunakan hardware dan sumber daya berbeda, dimana kita harus memikirkan cara lain seperti cross-compiling atau melakukan porting software tersebut secara manual.
Tujuan dan Keuntungan
Terdapat berbagai tipe sistem komputer terdistribusi dan banyak tantangan selama perancangan dan implementasinya. Tujuan utama dari sistem komputasi terdistribusi adalah untuk menghubungkan para pengguna dan sumber daya dalam cara yang transparent, open dan scalable. Idealnya, ini akan membuat sistem lebih fault-tolerant daripada sistem komputer stand-alone.
Openness merupakan properti dari sistem terdistribusi dimana setiap sub-sistem secara kontinu terbuka untuk berinteraksi dengan sistem lain. Protokol web services adalah standard yang memungkinkan sistem terdistribusi di-extend dan di-scale. Secara umum, suatu sistem terbuka yang bersifat scalable memberikan keuntungan lebih dibandingkan sistem yang tertutup dan self-contained (menyatu).
Konsekuensinya, sistem terdistribusi terbuka memberikan beberapa tantangan berikut:
- Monotonicity. Begitu sesuatu dipublikasikan di dalam sistem terbuka (open system) maka tidak dapat diambil kembali.
- Pluralism. Sub-sistem-subsistem berbeda dalam sistem open distributed dapat mempunyai informasi yang heterogen, mungkin pula overlap dan menyebabkan konflik. Tidak ada pengatur kebenaran sentral dalam sistem open distributed.
- Unbounded nondeterminism. Secara asinkron, subsistem-subsistem dapat naik dan turun, dan link komunikasi dapat masuk dan keluar antar sub-sistem dalam sistem open distributed. Karena itu, waktu yang diperlukan untuk menyelesakan suatu operasi tidak dapat dibatasi dan dipastikan.
Jika tidak direncanakan dengan tepat, suatu distributed system dapat menurunkan reliabilitas total dari komputasi jika ketidak-tersediaan dari suatu node dapat menyebabkan gangguan bagi node-node lain. Troubleshooting dan diagnosing terhadap masalah dalam distributed system dapat menjadi lebih sulit, karena perlu analisis yang berkaitan dengan node jauh atau menginspeksi komunikasi antar node di dalam sistem.
Banyak tipe komputasi tidak cocok bagi lingkungan terdistribusi, biasanya yang berhubungan dengan jumlah komunikasi jaringan atau sinkronisasi yang dibutuhkan antar node. Jika bandwidth, latency, atau persyaratan komunikasi begitu signifikan, maka tidak ada keuntungan dari distributed computing dan kinerja dapat lebih burukk daripada lingkungan non-distributed.
Arsitektur
Berbagai arsitektur hardware dan software digunakan bagi komputasi terdistribusi. Pada level lebih rendah, perlu untuk menghubungkan banyak CPU melalui jaringan, tanpa melihat apakah jaringan itu dicetak pada suatu circuit board atau dibuat berbentuk perangkat loosely-coupled dan kabel. Pada tingkat yang lebih tinggi, perlu interkoneksi antar proses yang berjalan pada CPU-CPU tersebut dengan suatu sistem komunikasi.
Pemrograman terdistribusi secara umum termasuk ke dalam salah satu dari arsitektur atau ketegori dasar sistem Client-server, arsitektur 3-tier, arsitektur N-tier, obyek terdistribusi, loose coupling, atau tight coupling.
Penjelasan singkatnya adalah:
- Client-server — Kode client cerdas menghubungi server untuk mendapatkan data, kemudian menformat dan menampilkannya kepada pengguna. Input pada client di-committed back ke server ketika menunjukkan suatu perubahan permanen.
- 3-tier architecture — Sistem three-tier memindahkan kepintaran client ke suatu middle tier sehingga dapat digunakan stateless client. Ini menyederhanakan deployment dari aplikasi. Sebagian besar aplikasi web bersifat 3-Tier.
- N-tier architecture — N-Tier umumnya merujuk ke aplikasi web yang selanjutnya meneruskan request-requestnya ke layanan enterprise lain. Tipe aplikasi ini paling bertanggungjawab bagi kesuksesan application server.
- Tightly coupled (clustered) — Umumnya mengacu ke suatu cluster mesin yang bekerja bersama secara erat (closely), menjalankan suatu shared process secara paralel. Task dibagi ke dalam beberapa bagian terpisah dan kemudian secara bersama-sama menggabungkan hasil proses untuk memperoleh hasil akhir tunggal.
- Peer-to-peer — Suatu arsitektur dimana tidak terdapat mesin khusus atau mesin-mesin yang menyediakan layanan atau mengelola sumber daya jaringan tersebut. Sebagai gantinya, semua tanggungjawab secara seragam dibagi antar semua mesin, dikenal sebagai peer. Peer dapat bekerja sebagai server maupun client.
- Space based — Mengacu ke suatu infrastruktur yang membuat ilusi atau virtualisasi dari satu ruang-alamat (address-space) tunggal. Data secara transparan direplikasi sesuai dengan kebutuhan aplikasi.
Konkurensi
Komputasi terdistribusi mengimplementasikan suatu jenis konkurensi. Ini berhubungan erat dengan pemrograman konkuren, sehingga kadang tidak dibicarakan sebagai topik terpisah.
- Sistem Multiprocessor Sistem multiprocessor adalah suatu komputer yang mempunyai lebih dari satu CPU pada motherboardnya. Jika sistem operasi dibangun untuk memanfaatkan kelebihan ini, maka SO tersebut dapat menjalankan proses-proses berbeda (atau thread-thread berbeda yang dimiliki oleh proses yang sama) pada CPU-CPU berbeda.
- Sistem Multicore CPU-CPU Intel dari era Pentium 4 terbaru (Northwood dan Prescott) menerapkan suatu teknologi bernama Hyper-threading yang memungkinkan lebih dari satu thread (biasanya dua) untuk berjalan pada CPU yang sama. Produk processor yang lebih baru seperti Sun UltraSPARC T1, AMD Athlon 64 X2, AMD Athlon FX, AMD Opteron, Intel Pentium D, Intel Core, Intel Core 2 dan Intel Xeon menyertakan banyak core processor juga untuk meningkatkan jumlah thread yang dapat dieksekusi.
- Sistem Multicomputer Multicomputer dapat dianggap berupa suatu komputer NUMA loosely atau cluster yang tightly coupled. Multicomputer biasanya digunakan ketika diperlukan power komputasi tinggi tetapi lingkungan mempunyai ruang fisik atau tenaga listrik terbatas.
- Taksonomi Komputasi Tipe-tipe dari sistem terdistribusi didasarkan pada sistem taksonomi Flynn; single instruction, single data (SISD), single instruction, multiple data (SIMD), multiple instruction, single data (MISD), dan multiple instruction, multiple data (MIMD).
- Cluster Komputer Suatu cluster terdiri dari banyak mesin stand-alone yang bertindak secara paralel melintasi suatu jaringan lokal berkecepatan tinggi. Komputasi terdistribusi berbeda dengan komputasi cluster dalam hal komputer-komputer dalam suatu lingkungan komputasi terdistribusi umumnya tidak secara eksklusif menjalankan tugas-tugas “group”, sedangkan komputer-komputer tercluster biasaya lebih tightly coupled. Komputasi terdistribusi juga sering terdiri dari mesin-mesin yang tersebar luas secara geografis.
- Komputasi Grid Suatu grid menggunakan sumber daya dari banyak komputer terpisah, dengan bebas dihubungkan oleh suatu jaringan (bisanya Internet), untuk menyelesaikan masalah-masalah komputasi skala besar. Grid-grid publik dapat menggunakan idle time dari ribuan komputer di dunia. Aransemen demikian memungkinkan penanganan data sangat besar, proses yang sebenarnya memerlukan power super komputer mahal atau memang tidak mungkin diselesaikan. Bahasa Pemrograman
Contoh
Berbagai proyek komputasi terdistribusi telah tumbuh pada dalam tahun-tahun terakhir. Banyak yang basis volunteer, dan melibatkan pengguna-pengguna yang mendonasikan power komputasi yang tidak digunakan untuk bekerja pada masalah komputasi yang menarik. Contoh proyek demikian termasuk proyek Folding@home di Jurusan Kimia universitas Stanford, yang difokuskan pada simulasi protein folding untuk menemukan obat penyakit dan memahami sistem biophysical; World Community Grid, suatu usaha untuk membuat grid komputasi terbesar di dunia untuk menangani proyek penelitian ilmiah yang bermanfaat bagi kemanusiaan, berjalan dan didanai oleh IBM; SETI@home, difokuskan pada analisis data radio-telescope untuk mendapatkan bukti sinyal cerdas dari angkasa, dikelola oleh Space Sciences Laboratory di University of California, Berkeley; LHC@home, digunakan untuk membantu merancang dan men-tune Large Hadron Collider, dikelola oleh CERN di Geneva; dan distributed.net yang bertitik-berat pada pemecahan berbagai cryptographic cipher.
Suatu proyek komputasi terdistribusi juga sering melibatkan kompetisi dengan sistem terdistribusi lain. Kompetisi ini dapat bertujuan prestige, atau bermaksud membujuk pengguna untuk mendonasikan power pemrosesan ke proyek tertentu. Sebagai contoh, stat races adalah ukuran kerja suatu proyek komputasi terdistribusi, berapa kemampuan komputasi selama sehari atau seminggu. Ini telah menjadi begitu penting dalam praktek, hampir semua proyek komputasi terdistribusi menawarkan analisis statistik online dari kinerja mereka, diupdate setidaknya harian jika tidak real-time.
Sumber :