Apa sebenarnya yang dimaksud dengan komputasi terdistribusi?
Komputasi terdistribusi adalah kumpulan elemen pemrosesan yang inheren paralel yang berkomunikasi satu sama lain untuk mengatasi satu atau lebih masalah. Elemen-elemen pemrosesan tersebut cukup terpisah satu sama lain sehingga tidak praktis untuk membangun jalinan perpesanan yang andal dan tepat waktu di antara mereka, sehingga tidak mungkin ada pengetahuan global tentang keadaan sistem. Fitur khusus dari perpesanan dengan sistem terdistribusi adalah bahwa pesan akan hilang, akan kacau, akan tertunda - solusi dalam ruang ini harus memperhitungkan hal ini. Dengan demikian, pemrograman terdistribusi adalah tentang berurusan dengan jaringan dan pesan, paralelisme dan kurangnya informasi global.
Metode termudah untuk mengatasi masalah adalah membuat elemen pemrosesan tunggal menjadi istimewa, yaitu otoritatif untuk sepotong informasi tertentu. Kemudian elemen-elemen lain dapat merujuk kembali ke setiap kali, atau cache informasi dan berharap bahwa itu tidak ketinggalan zaman (karena mereka tidak dapat mengandalkan diberitahu tentang perubahan). Ini adalah arsitektur klien / server klasik.
Komputasi internet adalah komputasi terdistribusi, tetapi tanpa kemampuan untuk mengendalikan apa yang sebenarnya dilakukan oleh sebagian besar node terdistribusi.
Apakah beberapa utas paralel yang mencoba menyinkronkan untuk akses ke sumber daya merupakan masalah dalam domain komputasi terdistribusi?
Mereka merupakan solusi yang mungkin berguna ketika membangun model klien / server, tetapi dengan biaya peningkatan dramatis dalam pertentangan sumber daya. Untuk dibaca, itu bukan masalah besar (menyediakan perangkat keras yang cukup) tetapi untuk menulis itu memang masalah besar.
Apa yang Anda coba hindari adalah kunci yang didistribusikan. Kurangnya pesan yang dapat diandalkan tepat waktu benar-benar membunuh protokol keputusan terdistribusi, kecuali jika Anda menggunakan sesuatu seperti protokol Paxos , tapi itu punya banyak peringatan. Masalah mendasar dengan komputasi terdistribusi adalah "hal-hal buruk terjadi pada pesan". Protokol level yang relatif rendah, seperti TCP, mengurangi masalah, tetapi Anda masih bisa terhenti.
Komputasi terdistribusi adalah sistem komputasi yang memiliki pemrosesan yang terjadi pada komputer yang berbeda (yaitu pada sistem terdistribusi). Program individu berkomunikasi satu sama lain melalui serangkaian saluran komunikasi. Saluran ini biasanya koneksi jaringan (soket TCP, misalnya), tetapi sering menggunakan protokol dan perangkat komunikasi lainnya (seperti DeviceNET, BACNet, SECS-2, Modbus, dll.) Atau bahkan protokol yang dibuat khusus untuk perangkat tertentu.
Sistem terdistribusi biasanya jauh lebih rumit daripada sistem yang dirancang untuk dijalankan pada satu komputer. Selain masalah konkurensi dan penguncian sumber daya yang harus dihadapi aplikasi multi-utas, sistem terdistribusi perlu menangani kegagalan komunikasi, dan memproses kegagalan simpul. Transaksi (dan kembalikan) yang memerlukan banyak prosesor untuk melakukan juga bisa rumit.
Sistem terdistribusi mengambil banyak bentuk dan saat ini digunakan dalam banyak aplikasi. Aplikasi web adalah sistem terdistribusi. Sistem N-Tiered biasanya memiliki setidaknya N prosesor yang berbeda (dengan aplikasi yang berbeda). Sistem terdistribusi juga digunakan di banyak sistem otomasi pabrik juga.
Tulisan tentang komputasi terdistribusi di Wikipedia layak dibaca.
Sebagai jawaban atas pertanyaan Anda tentang apakah aplikasi multi-utas merupakan aplikasi terdistribusi - jika utas berjalan pada satu komputer, sistem tidak terdistribusi. Memang harus menyelesaikan beberapa masalah yang melekat dalam sistem terdistribusi, tetapi tidak semuanya.
sumber
Sebenarnya "komputasi terdistribusi" adalah solusi apa pun yang melibatkan pemrosesan satu transaksi / permintaan / perhitungan pada lebih dari satu komputer.
Anda juga akan menemukan istilah "Sistem Terdistribusi" yang merupakan istilah umum untuk windows, unix dan server sistem kecil lainnya yang semula akan digunakan di luar pusat data pusat. Meskipun lebih normal untuk sistem ini untuk digunakan di dalam pusat data hari ini istilah tersebut macet.
sumber
Untuk menjawab pertanyaan umum Anda tentang apa yang merupakan komputasi terdistribusi, saya akan merekomendasikan makalah Catatan tentang Komputasi Terdistribusi oleh Ann Wollrath, Geoff Wyant, Jim Waldo dan Samuel C. Kendall . Ini mencakup sejarah terbaru dari sistem terdistribusi dan kegagalannya, dan ia mengusulkan bahwa komputasi terdistribusi membutuhkan pemikiran berbeda tentang masalah yang terlibat.
Meskipun tidak ada mutex atau semaphore yang disebutkan dalam makalah, ini memberikan wawasan yang berharga tentang rekayasa yang tepat dari sistem perangkat lunak terdistribusi.
Mengenai mengapa pewawancara Anda bertanya tentang mutexes dan semaphores, saya setuju dengan @Caleb:
Satu-satunya hal yang akan saya tambahkan adalah bahwa mutex dan semaphore adalah primitif penguncian tingkat rendah yang memungkinkan Anda untuk mendistribusikan pekerjaan di beberapa perangkat komputasi, dan operasi mereka (biasanya) sangat penting untuk keberhasilan aplikasi. Jelas, itu tergantung pada bahasa dan teknologi yang digunakan. Jika Anda menggunakan Erlang atau Scala, Anda mungkin akan menggunakan konkurensi berbasis model Aktor daripada konkurensi tradisional berbasis kunci.
sumber
Kata itu mengatakan semuanya. Anda harus melakukan beberapa operasi komputasi dan jika Anda dapat mendistribusikan bagian-bagian dari komputasi ini sedemikian rupa sehingga masing-masing komputasi bekerja terlepas dari komputasi lainnya dan kemudian ketika semua selesai Anda menggabungkan hasil dari setiap komputasi untuk mendapatkan jawaban dari komputasi utama. Contohnya adalah: Pengurangan Peta
sumber
Kami memang memiliki kursus tentang "sistem terdistribusi" dan sementara saya tidak ingat definisi persisnya, itu sepanjang garis:
(Saya percaya ada beberapa lagi dan saya tidak yakin tentang poin terakhir)
Sekarang dalam kursus kami belajar bagaimana menerapkan transaksi terdistribusi dan kunci terdistribusi. Pelajarannya adalah bahwa kunci terdistribusi pada dasarnya diimplementasikan menggunakan transaksi terdistribusi, yang merupakan sebaliknya dibandingkan dengan apa yang Anda lakukan secara lokal, dan itu pada dasarnya tidak toleran terhadap kesalahan, yang agak mengalahkan tujuan memiliki sistem terdistribusi di tempat pertama.
Sunting: Definisi itu adalah untuk "sistem terdistribusi" dalam arti sempit sistem operasi atau sistem database dan bukan hanya sistem client-server. Apa pun yang memenuhi syarat pertama dapat disebut terdistribusi dalam beberapa konteks.
Secara kebetulan definisi tersebut cocok dengan perbedaan antara sistem kontrol versi terdistribusi dan tradisional, yang semuanya setidaknya client-server dan sering juga direplikasi.
sumber
Komputasi terdistribusi, istilah "tidak-menandai" untuk komputasi perusahaan yang mungkin Anda dengar lebih banyak di kehidupan nyata. Namun, ide umum yang ditunjukkan oleh orang lain adalah "Anda menggunakan lebih dari satu komputer untuk melakukan pekerjaan"
sumber