Sistem terdistribusi dalam definisi yang paling sederhana adalah sekelompok komputer yang bekerja sama yang muncul sebagai satu untuk pengguna akhir. Mesin berbagi status yang sama, berjalan secara bersamaan, dan dapat beroperasi secara independen tanpa memengaruhi waktu aktif seluruh sistem. Yang benar adalah bahwa mengelola sistem seperti itu adalah topik kompleks yang penuh dengan jebakan.
Ikhtisar sistem
Sistem terdistribusi memungkinkan berbagi sumber daya (termasuk perangkat lunak) yang terhubung ke jaringan secara bersamaan.
Contoh sistem distribusi:
- Tumpukan tradisional. Basis data ini disimpan pada sistem file satu mesin. Setiap kali pengguna ingin menerima informasi, ia berkomunikasi langsung dengan mesin ini. Untuk mendistribusikan sistem database ini, Anda harus menjalankannya di beberapa PC secara bersamaan.
- Arsitektur terdistribusi.
Sistem terdistribusimemungkinkan Anda untuk menskalakan secara horizontal dan vertikal. Misalnya, satu-satunya cara untuk menangani lebih banyak lalu lintas adalah dengan meningkatkan perangkat keras yang menjalankan database. Ini disebut penskalaan vertikal. Penskalaan vertikal baik hingga batas tertentu, setelah itu bahkan peralatan terbaik pun tidak dapat mengatasi menyediakan lalu lintas yang diperlukan.
Menskalakan secara horizontal berarti menambahkan lebih banyak komputer, bukan meningkatkan perangkat keras pada satu komputer. Penskalaan vertikal meningkatkan kinerja hingga kemampuan perangkat keras terbaru dalam sistem terdistribusi. Peluang ini tidak cukup untuk perusahaan teknologi dengan beban kerja sedang hingga berat. Hal terbaik tentang penskalaan horizontal adalah tidak ada batasan ukuran. Ketika kinerja menurun, mesin lain hanya ditambahkan, yang pada prinsipnya dapat dilakukan tanpa batas.
Di tingkat perusahaan, sistem kontrol terdistribusi sering kali melibatkan berbagai langkah. Dalam proses bisnis di tempat yang paling efisien dari jaringan komputer perusahaan. Misalnya, dalam distribusi tipikal menggunakan model sistem terdistribusi tiga tingkat, pemrosesan data dilakukan pada PC di lokasi pengguna, pemrosesan bisnis dilakukan pada komputer jarak jauh, dan akses basis data dan pemrosesan data dilakukan pada komputer yang sama sekali berbeda. yang menyediakan akses terpusat untuk banyak proses bisnis. Biasanya, jenis komputasi terdistribusi inimenggunakan model interaksi client-server.
Tugas Utama
Tugas utama dari sistem kontrol terdistribusi meliputi:
- Transparency - Mencapai citra sistem tunggal tanpa menyembunyikan lokasi, akses, migrasi, konkurensi, failover, relokasi, persistensi, dan detail sumber daya kepada pengguna.
- Keterbukaan - menyederhanakan pengaturan dan perubahan jaringan.
- Keandalan - Dibandingkan dengan sistem kontrol tunggal, sistem ini harus dapat diandalkan, konsisten, dan memiliki kemungkinan besar untuk menutupi kesalahan.
- Kinerja - Dibandingkan dengan model lain, model terdistribusi memberikan peningkatan kinerja.
- Scalable - Sistem kontrol terdistribusi ini harus terukur dalam hal wilayah, administrasi, atau ukuran.
Tugas sistem distribusi meliputi:
- Keamanan adalah masalah besar di lingkungan terdistribusi, terutama saat menggunakan jaringan publik.
- Toleransi kesalahan - bisa jadi sulit jika model dibuat dengan komponen yang tidak dapat diandalkan.
- Koordinasi dan distribusi sumber daya - dapat menjadi sulit jika tidak ada protokol yang tepat atau kebijakan yang diperlukan.
Lingkungan komputasi terdistribusi
(DCE) adalah standar industri yang banyak digunakan yang mendukung komputasi terdistribusi tersebut. Di Internet, penyedia pihak ketiga menawarkan beberapa layanan umum,yang cocok dengan model ini.
Komputasi grid adalah model komputasi dengan arsitektur terdistribusi dari sejumlah besar komputer yang terkait dengan pemecahan masalah yang kompleks. Dalam model komputasi grid, server atau komputer pribadi melakukan tugas independen dan terhubung secara longgar satu sama lain melalui Internet atau jaringan berkecepatan rendah.
Proyek komputasi grid terbesar adalah SETI@home, di mana setiap pemilik komputer secara sukarela melakukan beberapa siklus pemrosesan multitasking menggunakan komputer mereka untuk proyek Search for Extraterrestrial Intelligence (SETI). Masalah komputer ini menggunakan ribuan komputer untuk mengunduh dan mencari data teleskop radio.
Salah satu penggunaan pertama komputasi grid adalah untuk memecahkan kode kriptografi oleh kelompok yang sekarang dikenal sebagai distributed.net. Grup ini juga mendeskripsikan model mereka sebagai komputasi terdistribusi.
Penskalaan basis data
Menyebarkan informasi baru dari master ke slave tidak terjadi secara instan. Bahkan, ada jendela waktu di mana Anda bisa mendapatkan informasi yang sudah ketinggalan zaman. Jika tidak demikian, kinerja penulisan akan terganggu, karena sistem terdistribusi harus menunggu secara sinkron untuk menyebarkan data. Mereka datang dengan beberapa kompromi.
Menggunakan pendekatan basis data budak, adalah mungkin untuk mengurangi lalu lintas baca sampai batas tertentu. Ada banyak pilihan di sini. Tetapi Anda hanya perlu membagi lalu lintas tulis menjadi beberapaserver karena tidak dapat menanganinya. Salah satu caranya adalah dengan menggunakan strategi replikasi multi-master. Di sana, selain slave, ada beberapa node utama yang mendukung membaca dan menulis.
Metode lain disebut sharding. Dengan itu, server dipecah menjadi beberapa server yang lebih kecil, yang disebut pecahan. Pecahan ini memiliki entri yang berbeda, aturan dibuat tentang entri mana yang masuk ke pecahan mana. Sangat penting untuk membuat aturan sedemikian rupa sehingga data didistribusikan secara merata. Pendekatan yang mungkin untuk ini adalah dengan mendefinisikan rentang menurut beberapa informasi rekaman.
Kunci pecahan ini harus dipilih dengan sangat hati-hati, karena beban tidak selalu sama dengan dasar kolom sembarang. Satu-satunya pecahan yang mendapat lebih banyak permintaan daripada yang lain disebut hotspot, dan mereka mencoba mencegahnya terbentuk. Setelah dipisah, data kalibrasi ulang menjadi sangat mahal dan dapat mengakibatkan waktu henti yang signifikan.
Algoritme konsensus basis data
DB sulit diimplementasikan dalam sistem keamanan terdistribusi karena mengharuskan setiap node untuk menegosiasikan tindakan interupsi atau commit yang benar. Kualitas ini dikenal sebagai konsensus dan merupakan masalah mendasar dalam membangun sistem distribusi. Mencapai jenis kesepakatan yang diperlukan untuk masalah "komit" itu sederhana jika proses yang terlibat dan jaringan benar-benar andal. Namun, sistem nyata tunduk pada sejumlah:kemungkinan kegagalan proses jaringan, pesan yang hilang, rusak atau terduplikasi.
Ini menimbulkan masalah dan tidak mungkin untuk menjamin bahwa konsensus yang benar akan dicapai dalam jangka waktu terbatas pada jaringan yang tidak dapat diandalkan. Dalam praktiknya, ada algoritme yang mencapai konsensus lebih cepat dalam jaringan yang tidak dapat diandalkan. Cassandra sebenarnya menyediakan transaksi ringan melalui penggunaan algoritma Paxos untuk konsensus terdistribusi.
Komputasi terdistribusi adalah kunci masuknya pemrosesan data besar yang telah digunakan dalam beberapa tahun terakhir. Ini adalah metode memecah tugas besar, seperti 100 miliar catatan kumulatif, di mana tidak ada satu komputer pun yang mampu melakukan apa pun secara praktis sendiri, menjadi banyak tugas yang lebih kecil yang dapat dimasukkan ke dalam satu mesin. Pengembang memecah tugas besarnya menjadi banyak tugas yang lebih kecil, menjalankannya di banyak mesin secara paralel, mengumpulkan data dengan tepat, lalu masalah awal akan terpecahkan.
Pendekatan ini memungkinkan Anda untuk menskalakan secara horizontal - ketika ada tugas besar, tambahkan saja lebih banyak node ke dalam perhitungan. Tugas-tugas ini telah dilakukan selama bertahun-tahun oleh model pemrograman MapReduce yang terkait dengan implementasi untuk pemrosesan paralel dan menghasilkan kumpulan data besar menggunakan algoritma terdistribusi pada sebuah cluster.
Saat ini, MapReduce agak ketinggalan jaman dan membawa beberapa masalah. Arsitektur lain telah muncul yang mengatasi masalah ini. Yaitu, Arsitektur Lambda untuk didistribusikansistem pemrosesan aliran. Kemajuan di bidang ini telah membawa alat baru: Kafka Streams, Apache Spark, Apache Storm, Apache Samza.
Sistem penyimpanan dan replikasi file
Sistem file terdistribusi dapat dianggap sebagai penyimpanan data terdistribusi. Ini sama dengan konsepnya - menyimpan dan mengakses sejumlah besar data di sekelompok mesin yang merupakan satu kesatuan. Mereka biasanya berjalan seiring dengan Komputasi Terdistribusi.
Misalnya, Yahoo telah dikenal menjalankan HDFS di lebih dari 42.000 node untuk menyimpan 600 petabyte data sejak 2011. Wikipedia mendefinisikan perbedaan bahwa sistem file terdistribusi memungkinkan akses file menggunakan antarmuka dan semantik yang sama seperti file lokal, daripada melalui API khusus seperti Cassandra Query Language (CQL).
Hadoop Distributed File System (HDFS) adalah sistem yang digunakan untuk komputasi melalui infrastruktur Hadoop. Tersebar luas, digunakan untuk menyimpan dan mereplikasi file besar (ukuran GB atau TB) di banyak mesin. Arsitekturnya terutama terdiri dari NameNodes dan DataNodes.
NameNodes bertanggung jawab untuk menyimpan metadata tentang cluster, seperti node mana yang berisi blok file. Mereka bertindak sebagai koordinator jaringan, mencari tahu tempat terbaik untuk menyimpan dan menyalin file, melacak kesehatan sistem. DataNodes hanya menyimpan file dan melakukan perintah seperti replikasi file, penulisan baru, danlainnya.
Tidak mengherankan, HDFS paling baik digunakan dengan Hadoop untuk komputasi, karena menyediakan kesadaran informasi tugas. Pekerjaan yang ditentukan kemudian dijalankan pada node yang menyimpan data. Ini memungkinkan Anda untuk menggunakan lokasi data - mengoptimalkan perhitungan dan mengurangi jumlah lalu lintas melalui jaringan.
The Interplanetary File System (IPFS) adalah protokol/jaringan peer-to-peer baru yang menarik untuk sistem file terdistribusi. Menggunakan teknologi Blockchain, ia menawarkan arsitektur yang sepenuhnya terdesentralisasi tanpa pemilik tunggal atau titik kegagalan.
IPFS menawarkan sistem penamaan (mirip dengan DNS) yang disebut IPNS dan memungkinkan pengguna untuk mengambil informasi dengan mudah. Ini menyimpan file melalui versi historis, seperti halnya Git. Ini memungkinkan akses ke semua status file sebelumnya. Itu masih melalui pengembangan yang berat (v0.4 pada saat penulisan) tetapi telah melihat proyek yang tertarik untuk membangunnya (FileCoin).
Sistem pesan
Sistem pesan menyediakan lokasi sentral untuk menyimpan dan mendistribusikan pesan dalam sistem umum. Mereka memungkinkan Anda untuk memisahkan logika aplikasi dari komunikasi langsung dengan sistem lain.
Skala yang diketahui - klaster Kafka LinkedIn memproses 1 triliun pesan per hari dengan puncak 4,5 juta pesan per detik.
Dalam istilah sederhana, platform perpesanan bekerja seperti ini:
- Pesanditeruskan dari aplikasi yang berpotensi membuatnya, disebut produser, masuk ke platform, dan dibaca dari beberapa aplikasi, disebut konsumen.
- Jika Anda perlu menyimpan acara tertentu di beberapa tempat, seperti membuat pengguna untuk database, penyimpanan, layanan pengiriman email, maka platform perpesanan adalah cara terbersih untuk mendistribusikan pesan itu.
Ada beberapa platform perpesanan terbaik yang populer.
RabbitMQ adalah broker pesan yang memungkinkan Anda untuk lebih menyempurnakan kontrol lintasan mereka menggunakan aturan perutean dan parameter lain yang dapat dikonfigurasi dengan mudah. Ini bisa disebut broker "pintar" karena memiliki banyak logika dan memonitor pesan yang melewatinya. Menyediakan opsi untuk AP dan CP dari CAP.
Kafka adalah perantara pesan yang sedikit kurang berfungsi karena tidak melacak pesan mana yang telah dibaca dan tidak memungkinkan logika perutean yang rumit. Ini membantu mencapai kinerja yang luar biasa dan mewakili janji terbesar di bidang ini dengan pengembangan aktif sistem terdistribusi oleh komunitas open-source dan dukungan tim Confluent. Kafka paling populer di perusahaan teknologi tinggi.
Aplikasi Interaksi Mesin
Sistem distribusi ini adalah sekelompok komputer yang bekerja sama untuk tampil sebagai komputer terpisah bagi pengguna akhir. Mesin-mesin ini dalam kondisi umum, berfungsisecara bersamaan dan dapat bekerja secara independen tanpa mempengaruhi waktu aktif seluruh sistem.
Jika Anda menganggap database terdistribusi, hanya jika node berinteraksi satu sama lain untuk mengoordinasikan tindakan mereka. Dalam hal ini sesuatu seperti aplikasi yang menjalankan kode internalnya pada jaringan peer-to-peer dan diklasifikasikan sebagai aplikasi terdistribusi.
Contoh aplikasi tersebut:
- Skala yang Diketahui - BitTorrent swarm 193.000 node untuk episode Game of Thrones.
- Teknologi register dasar dari sistem Blockchain terdistribusi.
Buku besar terdistribusi dapat dianggap sebagai basis data khusus aplikasi yang tidak dapat diubah yang direplikasi, disinkronkan, dan dibagikan di semua node dalam jaringan distribusi.
Skala terkenal - jaringan Ethereum - memiliki 4,3 juta transaksi per hari pada 4 Januari 2018. Mereka menggunakan pola Sumber Acara, yang memungkinkan Anda memulihkan status basis data kapan saja.
Blockchain adalah teknologi dasar saat ini yang digunakan untuk buku besar yang didistribusikan dan benar-benar menandai permulaannya. Inovasi terbaru dan terbesar dalam ruang terdistribusi ini menciptakan protokol pembayaran pertama yang benar-benar terdistribusi, bitcoin.
Blockchain adalah buku besar terdistribusi dengan daftar semua transaksi yang pernah terjadi di jaringannya. Transaksi dikelompokkan dan disimpan dalam blok. Seluruh blockchain pada dasarnya adalah daftar blok yang ditautkan. Blok yang Ditentukanmahal untuk dibuat dan digabungkan erat satu sama lain melalui kriptografi. Sederhananya, setiap blok berisi hash khusus (yang dimulai dengan X sejumlah nol) dari isi blok saat ini (dalam bentuk pohon Merkle) ditambah hash dari blok sebelumnya. Hash ini membutuhkan banyak daya CPU.
Contoh sistem operasi terdistribusi
Tipe sistem muncul kepada pengguna karena mereka adalah sistem pengguna tunggal. Mereka berbagi memori, disk, dan pengguna tidak kesulitan menavigasi data. Pengguna menyimpan sesuatu di PC-nya dan file tersebut disimpan di beberapa lokasi yaitu komputer yang terhubung sehingga data yang hilang dapat dengan mudah dipulihkan.
Contoh sistem operasi terdistribusi:
- Windows Server 2003;
- Windows Server 2008;
- Windows Server 2012;
- UbuntuLinux (server Apache).
Jika ada komputer yang melakukan booting lebih tinggi, yaitu, jika banyak permintaan dipertukarkan di antara masing-masing PC, beginilah cara penyeimbangan beban terjadi. Dalam hal ini, permintaan disebarkan ke PC tetangga. Jika jaringan menjadi lebih dimuat, maka dapat diperluas dengan menambahkan lebih banyak sistem ke jaringan. File dan folder jaringan disinkronkan dan konvensi penamaan digunakan sehingga tidak terjadi kesalahan saat data diambil.
Caching juga digunakan saat memanipulasi data. Semua komputer menggunakan namespace yang sama untuk menamai file. Tetapisistem file berlaku untuk setiap komputer. Jika ada pembaruan pada file, itu ditulis ke satu komputer dan perubahan disebarkan ke semua komputer, sehingga file terlihat sama.
File dikunci selama proses baca/tulis, jadi tidak ada kebuntuan antara komputer yang berbeda. Sesi juga terjadi, seperti membaca, menulis file dalam satu sesi dan menutup sesi, kemudian pengguna lain dapat melakukan hal yang sama dan seterusnya.
Manfaat menggunakan
Sistem operasi yang dirancang untuk membuat kehidupan sehari-hari orang lebih mudah. Untuk manfaat dan kebutuhan pengguna, sistem operasi dapat menjadi pengguna tunggal atau terdistribusi. Dalam sistem sumber daya terdistribusi, banyak komputer yang terhubung satu sama lain dan berbagi sumber daya mereka.
Manfaat melakukan ini:
- Jika satu PC dalam sistem tersebut rusak atau rusak, maka node atau komputer lain akan menanganinya.
- Lebih banyak sumber daya dapat ditambahkan dengan mudah.
- Sumber daya seperti printer dapat melayani banyak komputer.
Ini adalah penjelasan singkat tentang sistem distribusi, mengapa digunakan. Beberapa hal penting untuk diingat: mereka kompleks dan dipilih untuk skala dan harga dan lebih sulit untuk dikerjakan. Sistem ini didistribusikan dalam beberapa kategori penyimpanan: komputasi, sistem file dan pesan, register, aplikasi. Dan semua ini hanya sangat dangkal tentang sistem informasi yang kompleks.