SpongeBob SquarePants esetblog: PERTEMUAN XI (SISTEM TERDISTRIBUSI)

WELCOME

ESETBLOG.BLOGGSPOT.COM

Rabu, 22 Januari 2014

PERTEMUAN XI (SISTEM TERDISTRIBUSI)


SISTEM TERDISTRIBUSI
CHAPTER 7
FAULT TOLERANCE
Sebuah fitur karakteristik sistem terdistribusi yang membedakan mereka dari sistem singlc-rnachinc adalah konsep kegagalan panial. Sebuah kegagalan parsial mungkin terjadi-pena ketika komponen onc dalam syste discributed: n gagal. Kegagalan ini dapat mempengaruhi operasi yang tepat dari komponen lainnya, whik pada saat yang sama meninggalkan belum componcnts lainnya benar-benar unaffectcd. Sebaliknya 1n, kegagalan dalam systerns nondistributed sering total dalam arti bahwa hal itu mempengaruhi semua komponen, dan casily dapat menurunkan aplikasi entirc.
Sebuah gol itnportant di terdistribusi sistem desain adalah untuk membangun sistem sedemikian rupa sehingga secara otomatis dapat pulih dari faitures parsial tanpa serius mempengaruhi kinerja secara keseluruhan. Secara khusus, setiap kali terjadi kegagalan, sistem terdistribusi THC harus terus beroperasi dengan cara yang dapat diterima ketika perbaikan sedang dilakukan, yaitu, harus mentolerir kesalahan dan terus beroperasi sampai batas tertentu bahkan dalam kehadiran mereka.
Dalam bab ini, kita melihat lebih dekat pada techniqucs untuk nutking terdistribusi sistem-sistem fault tolerant. Setelah memberikan beberapa latar belakang umum tentang toleransi kesalahan, kita akan melihat proses resdience dan tnniticasting handal. Ketahanan proses menggabungkan teknik dimana satu atau lebih proses bisa gagal tanpa serius mengganggu rcst dari THC systcm. Rclatcd untuk issuc ini multicasting handal, dimana transmisi pesan untuk koleksi proses dijamin berhasil. Multicasting handal sering diperlukan untuk proses kcep disinkronisasi.
Seperti yang sudah kita diseussed di Chap. 5, atornieity adalah properti yang penting dalam banyak aplikasi. Misalnya, dalam transaksi terdistribusi, perlu guaranicc bahwa semua operasi dalam suatu transaksi yang carricd keluar atau tidak ada Thera busur. Fundamcntal untuk atomieny dalam sistem terdistribusi adalah gagasan dari THC distrihmed COR1-mit protokol, yang dibahas dalam scction scparate dalam bab ini. Akhirnya, kita akan membahas bagaimana untuk pulih dari kegagalan. Panicular 1n, kita con-Sider kapan dan bagaimana keadaan sebuah systcm didistribusikan harus bc disimpan untuk memungkinkan recovcry untuk StatC yang kemudian.

7.1 INTRODUCT1ON UNTUK FAULT TOLERANSI
Toleransi kesalahan tunduk pada banyak rescarch dalam ilmu komputer. Dalam detik-tion, wc mulai dengan presentiag konsep dasar yang berkaitan dengan faitures pengolahan. fol ¬ melenguh dengan diskusi model kegagalan. The rechnique kunci untuk penanganan, kegagalan adalah redundansi. yang juga dibahas. Untuk Morc gencra / informasi toleransi kesalahan dalam sistem terdistribusi, lihat, misalnya (ialote, 1994).
7.1.1 Basic Consept
Untuk undetstand yang rolc toleransi Mult dalam sistem terdistribusi Kami pertama kali necd untuk mengambil closcr melihat apa yang sebenarnya berarti bulu systern discributed untuk mentolerir kesalahan. Menjadi fault tolerant yang sangat relatcd untuk apa yang disebut sys ¬ tems diandalkan. Ketergantungan adalah istilah yang mencakup sejumlah requiremcnts uscful untuk sistem terdistribusi termasuk yang berikut (Ropetz dan Verissimo, 1993):
1. Tersedianya
2. Keandalan
3. Keselamatan
4. Perawatan
Ketersediaan didefinisikan sebagai properti yang systent sudah siap untuk digunakan imrnediately. Di gencral, itu rcfers untuk probabilitas bahwa sistem beroperasi dengan benar pada saat tertentu dan tersedia untuk melakukan fungsi atas nama uscrs nya. Dengan kata lain, sistem yang sangat tersedia adalah salah satu yang kemungkinan besar akan bekerja di instrun waktu tertentu.
Keandalan untuk tite properti yang systent dapat Niti terus menerus tanpa kegagalan . Dalam kontras dengan ketersediaan, keandalan didefinisikan dalam hal interval tiRIC insmad dari instan di waktu. Sebuah sistem yang sangat reliablc adalah salah satu yang akan paling mungkin continuc untuk bekerja tanpa gangguan selama waktu oi periode rclatively lama. Ini adalah perbedaan yang halus namun imponant bila dibandingkan Jika sistem turun selama satu milidetik setiap jam, ia memiliki ketersediaan ovcr 99.9999percent, tapi masih sangat bisa diandalkan. Demikian pula, sebuah sistem yang tidak pernah crash tapi dimatikan selama dua minggu setiap bulan Agustus memiliki rcliability tinggi tetapi hanya 96 ketersediaan perecnt. Ttvo tersebut tidak sama.
Keselamatan reMrs dengan situasi yang ketika sistem sementara gagal beroperasi conectly, tidak ada bencana yang terjadi. Misalnya. tutmy protzss kontrol sys ¬ TCMS. seperti yang digunakan untuk mengendalikan tanaman powcr nucicar atau mengirim pcople ke ruang angkasa, busur diminta untuk memberikan de.gree keamanan yang tinggi. Jika sistem kontrol tersebut sementara fai / untuk hanya bricf saat vcry, yang effeets coulti menjadi bencana. Banyak examplcs dari masa lalu THC (dan mungkin banyak lagi belum datang) menunjukkan hovv sulitnya untuk membangun sysierm SAFC.
Akhirnya, maintainabllity mengacu pada seberapa casy sistem yang gagal dapat diperbaiki. Sistem dipertahankan sangat mungkin juga menunjukkan tingkat tinggi availabrtity, espe. cially jika kegagalan bisakah ia cletected dan diperbaiki secara otomatis. Namun, seperti yang akan kita lihat nanti dalam bab ini, otomatis pulih dari kegagalan lebih mudah diucapkan daripada dilakukan.
Sering. Sistem diandalkan juga rcqutred untuk memberikan tingkat tinggi securitas, cspccially ketika comcs untuk issucs seperti intcgrity. Kita akan membahas sccurity dalam bab berikutnya.
Systcm Sebuah kata co gagal ketika tidak bisa mect promiscs nya. Secara khusus, jika sistem terdistribusi dcsigned untuk menyediakan para penggunanya dengan sejumlah layanan, yang systmn Itas failcd whcn satu atau Morc layanan tersebut bisa tidak (sepenuhnya) provided. Sebuah kesalahan adalah bagian dari keadaan sistem yang ntay menyebabkan kegagalan. Untuk ujian ¬ ple, ketika transmisi paket di netsvork, itu diharapkan bahwa beberapa paket telah rusak ketika mereka tiba di penerima. Rusak dalam konteks ini berarti bahwa penerima mungkin salah merasakan nilai bit (misalnya, membaca 1 bukannya 0), atau mungkin cvcn bc co mampu mendeteksi bahwa sesuatu telah tiba.
Penyebab kesalahan yang meneleponku kesalahan. Jelas, mencari tahu apa yang menyebabkan kesalahan adalah imponam. Misalnya, media transmisi yang salah atau buruk dapat menyebabkan casily paket co bc drunaged. Dalam kasus ini, itu adalah rclatively casy untuk rcmovc kesalahan. Namun, crrors transinission juga bisa disebabkan oleh kondisi cuaca buruk sueh seperti pada jaringan nirkabel. Mengubah THC cuaca ro mengurangi atau mencegah kesalahan bukanlah suatu pilihan.
Membangun sistem dcpendable erat rclates untuk conuolling kesalahan. Sebuah pembedaan-tion adalah MADC betwecn mencegah, menghapus, dan kesalahan peramalan (Laprie, 1995). Untuk tujuan kita, masalah yang paling imponant adalah toleransi kesalahan, yang berarti bahwa sys ¬ TCM dapat pmvide serviees nya evon besarbesaran THC prescnce kesalahan.
Kerusakan gcnerally classificd sebagai transicnt, intermittcnt, atau permanen. Tran-slent kesalahan terjadi sekali dan kemudian menghilang. Lf operasi diulang, kesalahan THC hilang. Seekor burung terbang melalui sinar sebuah transtnitter microwave dapat menyebabkan bit hilang pada sorne nctwork (belum lagi burung panggang). Jika transmisi kali keluar dan dicoba lagi, mungkin akan bekerja untuk kedua kalinya.
Sebuah meurs intermiten kesalahan, maka vanisites dari ILS owr sesuai, maka rcappcars, dan sebagainya. Sebuah kontak longgar pada konektor akan sering menyebabkan kesalahan intermiten.
Kesalahan Internnuent menyebabkan banyak grcat dari asuravation bccause mereka sulit untuk cliagnose. Biasanya, whenevcr dokter kesalahan muncul, sistem bekerja dengan baik. Sebuah kesalahan permanen adalah orte yang terus eksis sampai komponen yang rusak THC diperbaiki. Burnt-out chip, bug perangkat lunak, dan kepala crash disk contoh kesalahan permanen.
7.1.2 Failure Models
Sebuah sistem yang gagal tidak adequatcly menyediakan layanan itu dirancang untuk. Jika kita considcr sebuah sptem distributcd sebagai kumpulan server tbat komunikasi. eate satu sama lain dan dengan klien mereka. tidak cukup Prosiding scrvices berarti bahwa server, saluran komunikasi, atau mungkin keduanya, tidak melakukan apa yang seharusnya mereka lakukan. llowevcr, sebuah server yang itsclf rnalfunctioning mungkin tidak selalu IVC kesalahan kita cari. Jika server tersebut tergantung pada server lain untuk adcquately provick serviecs nya. penyebab kesalahan mungkin neecl akan scarched di tempat lain.
Hubungan dcpendency Sucb muncul dalam kelimpahan dalam sistem terdistribusi. Sebuah gagal ing disk yang dapat membuat sulit bagi lik file server yang dirancang untuk menyediakan file systcm sangat availablc. Jika seperti file server merupakan bagian dari database distributect, kerja yang tepat dari database cntire mungkin dipertaruhkan. hanya sebagai bagian dari data dapat benar-benar bc diakses.
Untuk mendapatkan pemahaman bettcr pada seberapa serius kegagalan sebenarnya, beberapa schemcs klasifikasi memiliki bcen developcd. Satu schente seperti ditunjukkan pada Gambar. 7-1, dan didasarkan skema un descrihed di (Cristian, 1991, dan Iladzilacos dan Toueg, 1993).
Type of failure
Description
Crash failure
A server halts, but is working correctly until it halts
Omission failureReceive omission
     Send omission
A server fails to respond to incoming requests
A server fails to receive incoming messages
A server fails to send messages
Timing failure
A server's response lies outside the specified time interval
Response failure
Value failure
State transition failure
The server's response is incorrect
The value of the response is wrong
The server deviates from the correct flow of control
Arbitrary failure
A server may produce arbitrary responses at arbitrary times
Gambar 7-1. Differem cypcs dari tanures.
Sebuah kegagalan kecelakaan terjadi ketika sebuah scrver prcmaturely menghentikan. tetapi bekerja, corrixtly sampai berhenti. Sebuah aspek penting dengan kecelakaan failurcs adalah bahwa setelah scrver THC telah hatted, tidak ada hCard dari itu anymorc. Sebuah contoh khas dari kegagalan kecelakaan adalah sistem operasi yang datang berhenti grinding, dan yang hanya ada satu solusi: reboot. Banyak sistem komputer pribadi menderita crashfailures begitu sering bahwa orang memiliki comc mengharapkan mereka untuk menjadi nounal. Dalam sensc ini, bergerak reset hutton dari bagian belakang kabinet ke depan dilakukan untuk
alasan yang baik. Mungkin hari onc dapat rhoved ke belakang lagi, atau bahkan minoved altogether.
Kegagalan terjadi kelalaian whcn server gagal untuk menanggapi permintaan. Hal Scveral mungkin salah. Tn kasus THC kegagalan otnission mccive, scrver yang mungkin tidak pernah mendapat permintaan di tempat pertama. Perhatikan bahwa mungkin juga menjadi kasus bahwa bensteen koneksi client dan server telah BECN benar esta blished, tapi itu tidak ada benang mendengarkan permintaan ineonting. Juga, kegagalan kelalaian receive umumnya tidak akan mempengaruhi keadaan saat server, sebagai server THC tidak menyadari setiap pesan yang dikirim ke sana.
Demikian juga, kegagalan kelalaian kirim happcns ketika server telah melakukan pekerjaannya, tapi entah bagaimana gagal dalam scnding tanggapan. Seperti failurc mungkin happcn, misalnya, ketika mengirim buffcr ovcrflows whilc THC server yang tidak siap untuk situasi seperti ¬ tion. Notc bahwa, berbeda dengan kegagalan kelalaian reccive., Servcr mungkin sekarang berada dalam keadaan reficcling yang baru saja menyelesaikan layanan untuk ihe klien. Sebagai konsekuensi ¬ quence. jika pengiriman respon gagal. tho scrver mungkin nced untuk preparcd bahwa klien akan rcissuc permintaan proviOus nya.
Jenis lain dari kegagalan kelalaian tidak rclated untuk komunikasi dapat causcd oleh kesalahan perangkat lunak seperti loop tak terbatas atau manajemen inemory tepat dimana scrver dikatakan "menggantung."
Kelas lain dari kegagalan ini rclatcd ke waktu. Kegagalan waktu terjadi ketika respon terletak di luar interval real-time specificd. A $ kita lihat dengan strcams isochronous data dalam Bab. 2, data providine terlalu cepat dapat dengan mudah menyebabkan trOublc untuk penerima jika tidak ada cnough penyangga spacc untuk menampung semua data yang masuk THC. Ivlore umum, bagaimanapun, adalah bahwa server merespon terlambat, dalam hal kegagalan kinerja dikatakan terjadi.
Sebuah jenis serius kegagalan adalah kegagalan respon, dimana responsc yang Sener ini hanya inconect. Dua jenis rcsponse failurcs mungkin terjadi. Dalam kasus kegagalan valuc, ser-ver menyediakan salah rep / y 10 permintaan. Untuk examplc, sebuah mesin pencari yang secara sistematis retums halaman Web tidak relatcd l0 salah satu istilah pencarian yang digunakan. telah gagal.
Jenis othcr dari responsc failurc dikenal sebagai kegagalan transisi negara. Tnis jenis happcns kegagalan ketika server bereaksi unexpectcdly untuk permintaan yang masuk. Misalnya. jika scrver yang menerima mcssage tidak dapat mengenali, sebuah failurc transisi SISIC terjadi jika tidak ada tindakan telah takcn untuk menangani rnes tersebut bijak. Secara khusus. sebuah servcr rusak mungkin salah tindakan dcfault takc itu seharusnya tidak pernah dimulai.
Mos: serius kegagalan sewenang-wenang, juga dikenal sebagai kegagalan Bizantium. Akibatnya. ketika kegagalan sewenang-wenang terjadi, klien harus prcparcd untuk yang terburuk. khususnya, dapat terjadi bahwa server adalah produeing outpur itu seharusnya tidak pernah produccd, tetapi yang tidak bisa bc terdeteksi sebagai bcing incomect. Parahnya lagi ser fainly, eh bahkan mungkin jahat bekerja sama dengan server lain untuk menghasilkan answeis sengaja salah. Situasi ini menggambarkan mengapa sccurity juga con-sidercd persyaratan imponant ketika berbicara tentang sistem diandalkan. Istilah "Byzantinc" mengacu pada Kekaisaran Bizantium. waktu (330-1453) dan tempat (Balkan dan Turkcy modern) di mana konspirasi endlcss, intrik, dan untruthfuluess yang diduga conunon dalam mengesampingkan circlesj Bizantium kesalahan pertama kali dianalisis oleh Pease et al. (1980) dan Lampon et al. (1982). Kami rcturn kegagalan seperti di bawah ini.
Failurcs Arbruary berkaitan erat dengan kegagalan kecelakaan. The dcfinition kegagalan kecelakaan seperti yang disajikan di atas adalah cara yang paling jinak untuk server untuk menghentikan. Mereka busur juga disebut sebagai gagal-stop kegagalan. pada dasarnya, gagal-stop server yang hanya akan berhenti memproduksi omput sedemikian rupa sehingga perhentian yang bc dapat dideteksi oleh proccsses lainnya. Misalnya, THC setvcr mungkin telah begitu ramah mengumumkan akan kecelakaan.
Tentu saja, dalam kehidupan nyata. scrvers berhenti dengan menunjukkan kegagalan kelalaian atau kecelakaan, dan busur tidak begitu ramah untuk mengumumkan tbey adalah Goins untuk berhenti. Terserah kepada processcs lain untuk dccidc bahwa server telah prematur haltcd. Namun, dalam sistem tersebut gagal-diam, proses lain THC mungkin incoacctly menyimpulkan bahwa server telah haltcd. Sebaliknya, server mungkin hanya bc terduga lambat, yaitu, itu exhibirittg kegagalan performansi bisnis.
Akhirnya, therc juga kesempatan di mana server memproduksi acak ° M ¬ keluar, tapi output ini dapat dikenali oleh procc.sses lain sebagai sampah biasa. Server kemudian menunjukkan Milures arbitraty, tetapi dengan cara byttign. Ini kesalahan juga disebut sebagai gagal-aman.
7.1.3 Kegagalan Masking oleh Redtoulancy
Jika sistem adalah untuk bc fault tolerant, yang terbaik yang dapat dilakukan adalah mencoba untuk hidc terjadinya kegagalan dari othcr processcs. The kcy tcchnique untuk kesalahan masking adalah dengan menggunakan mdundancy. Tiga jenis yang mungkin: Informasi tedundancy, redundansi, dan redundansi fisik (lihat juga Johnson, 1995). Dengan mdundancy informasi, tambahan bit busur ditambahkan untuk memungkinkan pemulihan dari bit kacau. Untuk ujian ¬ ple. kode Hamming dapat ditambahkan ke data yang dikirimkan untuk pulih dari kebisingan ou saluran transmisi.
Dengan redundansi fune, suatu tindakan performcd. dan kemudian, jika necd menjadi, itu adalah per-terbentuk lagi. transaksi lising (describcd dalam Bab. 5) adalah contoh dari pendekatan ini. Saya • a abons transaksi, dapat rcdone tanpa Hann. Waktu redundansi - terutama hclpful whcn THC Mults busur sementara atau intemthtent.
Dengan redundansi fisik, peralatan tambahan atau proses yang ditambahkan untuk memungkinkan untuk sistem secara keseluruhan untuk mentolerir kerugian dic atau malfunctionmg dari beberapa komponen. Redundansi fisik sehingga dapat dilakukan baik di hardwarc atau perangkat lunak. Sebagai contoh, proses cxtra dapat addcd ke sistem sehingga jika sejumlah kecil dari mereka kecelakaan, sistem masih dapat berfungsi conectly. 1n otherwords, oleh processcs replikasi, tingkat tinggi toleransi kesalahan dapat dicapai. Kami dikembalikan ke negaranya untuk jenis softwarc rcdundancy bawah.
Redundansi fisik adalah teknik terkenal untuk menyediakan faul «olerance. Hal ini uscd dalam biologi (mainmals havc dua cyes, dua telinga, dua paru-paru, e (c.), iucraft (747 haye empat mesin tetapi dapat terbang pada tiga), dan spons (rcfclecs nuitiple di casc onc misscs acara). Ini juga telah digunakan untuk kesalahan toleranee dalam rangkaian elektronik untuk ycars:... itu ilustrasi o melihat bagaimana telah applithi ada Pertimbangkan, fo • examplc, THC cimuit pada Gambar 7-2 (a) sinyal licre melewati perangkat A, B, dan C, secara berurutan. onc Jika mereka rusak, hasil akhir mungkin akan menjadi tidak benar.






Gambar 7.2. Redundansi modular tiga
Gambar. 7-2 (b). masing-masing perangkat direplikasi kali threc. Mengikuti setiap tahap dalam rangkaian adalah pemilih triplicated. Setiap votcr adalah eireuit yang memiliki input dan output threc onc. 1f dua atau thrce dari input yang sama, output yang THC adalah cqual masukan itu. Jika ketiga input diffcrent. output undefincd. Ini Icind desain dikenal sebagai TNIR (Triple Modular Redundancy).
Supposo bahwa Clement A2 gagal. Setiap pemilih, v, V2, dan 173 mendapat dua baik (identik) input dan satu input nakal, dan masing-masing output nilai yang benar untuk tahap kedua. Pada dasarnya, efek, 42 gagal benar-benar maskcd, sehingga input ke B,, B2, dan 53 yang persis sama dengan thcy akan telah memiliki tidak ada kesalahan occurryd.
Sekarang perhatikan apa yang terjadi jika B3 dan Ci juga rusak, selain A2. Efek ini juga bertopeng, sehingga output futal thrcc masih benar.
Pada awalnya Tnay tidak bc jelas mengapa tiga pemilih busur yang dibutuhkan pada setiap Stnge. Setelah semua, onc pemilih juga bisa mendeteksi dan lulus meskipun pandangan mayoritas. Namun, pemilih juga komponen dan juga dapat rusak. Misalkan, misalnya. bahwa malfungsi. Input ke B1 maka akan salah. bul asalkan evcrything karya lain, B2 dan 83 akan menghasilkan output samc THC dan V4. Vs. dan V6 akan semua producc hasil yang benar ke tahap ketiga. Sebuah kesalahan dalam Vi secara efektif tidak berbeda dari kesalahan dalam 131. Dalam kedua kasus Bi menghasilkan ouiput tidak benar, tetapi di Boch CaSCS jika yang ditolak Izzier.
Meskipun 001 systcms didistribusikan fault-tolerant menggunakan TMR, teknik ini s.ery 2eneral, dan harus memberikan perasaan yang jelas untuk apa sebuah sistem fault-tolerant adalah. sebagai lawan Lo yang systern yang componcnts individu sangat handal tetapi yang organisasinya bukan kesalahan tolcrant. Tentu saja, TMR carl diterapkan recursrvelY) misalnya, untuk membuat sebuah chip yang sangat reliablc dengan menggunakan 1MR dalamnya, unknowm kepada para desainer yang menggunakan chip.
7.2 PROCESS RESILIENCE
Sekarang bahwa isu-isu dasar toleransi kesalahan telah dibahas, ict kami con ¬ centrate tentang bagaimana kesalahan toleranee sebenarnya dapat dicapai dalam sistem terdistribusi. Topik pertama kita bahas adalah perlindungan terhadap kegagalan proses, yang achicand oleh proses replikasi ke dalam kelompok. Dalam pagcs berikut, kita mempertimbangkan gen ¬ masalah desain eral kelompok proses, dan mendiskusikan apa kesalahan-tolennt kelompok aczu ¬ sekutu adalah. Juga, kita melihat bagaimana untuk mencapai agroement dalam kelompok proses ketika satu atau lebih anggotanya tidak dapat dipercaya untuk jawaban yang benar givc.
7.2.1 Desigu Issucs
Pendekatan kunci untuk menoleransi suatu proses yang rusak adalah untuk mengatur proses identik scvcral dalam kelompok. Kunci properti yang semua kelompok miliki adalah bahwa ketika sebuah mes ¬ bijak dikirim ke kelompok itu sendiri, semua anggota kelompok menerimanya. Dengan cara ini, jika satu proses dalam kelompok gagal, mudah-mudahan beberapa proses othcr dapat mengambil alih untuk itu (Guerraoui dan Schiper. 1997).
Kelompok proses mungkin dynawric. Gmups baru dapat dibuat dan kelompok tua dapat dcstroyed. Sebuah proses dapat bergabung dengan grup atau meninggalkan satu selama sistem opera ¬ tion. Sebuah proses dapat menjadi anggota kelompok sevcral pada waktu yang sama. Konsekuensi ¬ paling sering, mekanisme yang diperlukan untuk mengelola kelompok dan keanggotaan kelompok.
Grup secara kasar analog dengan organisasi sosial. Alice mungkin menjadi anggota dari sebuah klub buku, klub tenis, dan orannization environmemal. Pada hari-hari tertentu. dia rnight menerima surat (nessages) mengumumkan kue ulang tahun buku resep baru dari klub buku, Bunda tahunan Hari tenis toumament dari klub temtis, dan statt dari kampanye untuk menyelamatkan Groundhog Selatan dari organisasi environrnental. Setiap saat, ia bebas untuk meninggalkan salah satu atau semua kelompok-kelompok ini. dan mungkin bergabung dengan kelompok lain.
Tujuan memperkenalkan gmups adalah untuk memungkinkan proses untuk dcal dengan collcc ¬ tions prosedur, SSK aS abstraksi tunggal. Dengan demikian proses dapat mengirim pesan ke sekelompok server tanpa harus mengetahui berapa banyak thete atau di mana mereka berada, yang mungkin changc frorn satu panggilan ke yang berikutnya.
Grup datar dibandingkan Grup Dierarchical
Sebuah distinctio »betWecn kelompok diffcrent penting harus dilakukan dengan stractum internal mereka. Dalam beberapa kelompok, semua processcs busur yang sama. Tidak ada bos dan semua Deci ¬ aksesi dibuat secara kolektif. 1n kelompok lain, jenis sorr.e hirarki ada. Untuk examplc, satu proses adalah koordinator dan semua yang lain adalah pekerja. Dalam model ini, ketika permintaan untuk pekerjaan gencrated, baik oleh clicnt eksternal atau oleh salah satu pekerja, itu dikirim ke koordinator. Koordinator yang kemudian memutuskan pekerja yang paling cocok ILO melaksanakannya. dan ke depan sana. Lebih kompleks hierarki ¬ chies busur juga mungkin, tentu saja. Pola-pola komunikasi diilustrasikan pada Gambar. 7-3.
Organisasi-organisasi ini memiliki kelebihan dan disadvantsges sendiri. Kelompok datar simetris dan tidak memiliki satu titik orang gagal. Jika salah satu proses crash, thegroup hanya menjadi lebih kecil, tapi othcrwise dapat melanjutkan. Sebuah disad ¬ pandang adalah bahwa Makine keputusan lebih rumit. Sebagai contoh, untuk memutuskan apa ¬ Mu, suara sering harus diambil, ineuning beberapa penundaan dan overhead.Kelompok hicrarchical memiliki sifat berlawanan. Kehilangan koordinator membawa seluruh kelompok berhenti ginding, tapi selama itu sedang berjalan, dapat membuat keputusan tanpa mengganggu orang lain.
Kelompok Memhership
Ketika komunikasi kelompok presenc, beberapa metode yang dibutuhkan untuk membuat dan menghapus wroups. serta untuk memungkinkan proses untuk bergabung dan meninggalkan kelompok. Salah satu pendekatan yang mungkin adalah untuk memiliki sebuah server kelompok yang semua permintaan tersebut dapat dikirim. Kelompok server kemudian dapat mempertahankan completc Data basc dari semua kelompok dan keanggotaan mereka dengan tepat. Metode ini straiehtforvvard, efisien. dan mudah

implentent. Unfonunately, itu saham kerugian yang besar dengan semua tcchniqucs terpusat: satu titik kegagalan. Jika kelompok scrver crash, kelompok mengelola ¬ mcnt berhenti ada. Mungkin sebagian besar atau semua kelompok akan memiliki LO ia direkonstruksi dari awal. mungkin mengakhiri kerja whatevcr sedang terjadi.
Pendekatan berlawanan m kelompok manage keanggotaan dalam cara distributcd. Untuk examplc, f (handal) multicasting adalah availablc, orang luar dapat mengirim mes ¬ bijak untuk semua anggota kelompok yang mengumumkan keinginan LO bergabung dengan grup. Idealnya, untuk leavc kelompok. anggota hanya seuds sebuah messag selamat tinggal, e ke penghujan ¬ satu. Dalam konteks toleransi kesalahan, dengan asumsi gagal-stop semanties adalah gcnerally tidak appropriatc. Thc troublc adalah, tidak ada pengumuman sopan bahwa proses sering berhenti karena ada ketika proccss sebuah Icaves sukarela. Para anggota othet harus menemukan thts experintentally dengan memperhatikan bahwa membcr jatuh tidak lagi merespon co apapun. Setelah dipastikan bahwa mcmber jatuh benar-benar turun (dan bukan hanya lambat), itu bc dapat dihapus dari grup.
Isu lain rumit adalah bahwa meninggalkan dan bergabung harus sinkron dengan pesan data yang dikirim. Dengan kata lain, mulai dari saat itu proses telah bergabung dengan grup, ia harus reccive semua rnessages dikirim ke grup tersebut. Demikian pula, segera setelah proccss yang telah meninggalkan 2r0Up, itu harus tidak menerima pesan Morc dari kelompok, dan anggota lain tidak harus menerima lagi messagcs dari itu. Cara Onc untuk memastikan bahwa bergabung atau meninggalkan yang integratcd ke dalam aliran messatze di tempat yang tepat adalah untuk mengkonversi operasi ini menjadi urutan pesan yang dikirim ke grup THC wholc.
Salah satu isu terakhir yang berkaitan dengan keanggotaan kelompok adalah apa yang harus dilakukan jika begitu banyak machincs turun bahwa kelompok tidak lagi dapat berfungsi sama sekali. Protokol Soine yang ncedcd untuk rcbuild kelompok. Invarinbly, beberapa proses harus mengambil prakarsa ¬ tive untuk memulai che bola rotiing, tetapi apa yang terjadi jika dua atau tiga mencoba pada saat Sarne? "Protokol fhe harus mampu menahan Lo ini.
7.2.2KegagalanMaskingdan Replikasi
Kelompok proses tersebut adalahwadahsolusiuntuk membangun sistemfault-tolerant. Secara khusus, memiliki kelompokprosesidentikmemungkinkan kitauntuk menutupisatu atau lebih prosesrusakdalam kelompok itu. Dengan kata lain, kita bisa meniruproses danmengaturnya dalamkelompok untukmenggantiproses tunggal(rentan) dengan(fault tolerant) kelompok. Sebagaimana dibahasdalam bab sebelumnya, ada dua carauntuk mendekatireplikasiseperti: dengan caraberbasis protokolutama, ataumelalui protokoldireplikasi-menulis.
Replikasiberbasisutamadalam kasustoleransi kesalahanumumnya munculdilonadariprotokol utama-backup. Dalamkasus ini, sekelompokprosesyangdiorganisasisecarahirarkis di manaprimermengkoordinasikan semuaoperasi menulis. Dalam prakteknya, utamaadalah tetap, meskipunperannyadapat diambilalih olehsalah satu backup, jika perlu. Akibatnya, ketikacrashutama, backupmenjalankan beberapaalgoritmapemiluuntuk memilihdasar yang baru.
Seperti dijelaskan dibab sebelumnya, protokoldireplikasi-write digunakan dalam
bentuk replikasi aktif, serta melalui protokol berbasis kuorum. Solusi ini sesuai dengan mengorganisir koleksi proses yang identik ke dalam kelompok datar.
Keuntungan utama adalah bahwa kelompok-kelompok tersebut tidak memiliki titik tunggal kegagalan, pada biaya koordinasi terdistribusi. Suatu hal yang penting dengan menggunakan kelompok proses untuk mentolerir kesalahan, adalah berapa banyak replikasi yang dibutuhkan. Untuk menyederhanakan diskusi kita, mari kita hanya mempertimbangkan sistem direplikasi-menulis. Suatu sistem dikatakan k fault tolerant jika dapat bertahan kesalahan dalam komponen k dan masih memenuhi spesifikasinya. Jika komponen, mengatakan proses, gagal diam-diam, kemudian setelah k I dari mereka cukup untuk menyediakan A: toleransi kesalahan. Sejenisnya dari mereka hanya berhenti. maka jawaban dari yang lainnya dapat digunakan.
Di sisi lain, jika proses menunjukkan kegagalan Bizantium, terus berjalan ketika sakit dan mengirimkan salah atau acak balasan, minimal 2k + 1 prosessors busur yang diperlukan untuk mencapai toleransi kesalahan k. Dalam kasus terburuk, proses gagal k bisa sengaja (atau bahkan sengaja) menghasilkan jawaban yang sama. Namun, k tersisa + Saya juga akan menghasilkan answez yang sama, sehingga klien atau pemilih hanya bisa percaya mayoritas.
Tentu saja, dalam teori boleh saja mengatakan bahwa sistem adalah k fault tolerant dan hanya membiarkan k + I identik balasan mengalahkan dlm pemilihan balasan identik k, tetapi dalam prakteknya sulit untuk membayangkan keadaan di mana seseorang dapat mengatakan dengan pasti bahwa k proses dapat gagal tetapi proses k aku tidak bisa gagal. Jadi bahkan dalam sistem fault-tolerant semacam analisis statistik mungkin diperlukan. Sebuah prasyarat implisit untuk model ini menjadi relevan adalah bahwa semua permintaan tiba di semua server dalam urutan suci, juga disebut masalah multicast atom. Sebenarnya, kondisi ini bisa santai sedikit, karena membaca tidak penting dan beberapa menulis yang selanjutnya, tapi masalah umum tetap. Multicasting atom dibahas secara rinci pada bagian selanjutnya.
7.2.3 Perjanjian dalam Sistem rusak
Pengorganisasian proses direplikasi ke dalam kelompok membantu meningkatkan toleransi kesalahan. Seperti yang telah disebutkan, jika klien dapat mendasarkan keputusan melalui mekanisme voting, kita bisa bahkan menoleransi bahwa Jr dari + I proses 2k berbohong tentang hasil mereka. Asumsi kita membuat, bagaimanapun, adalah bahwa proses tidak membentuk tim untuk cara hasil yang salah.
Secara umum, hal-hal menjadi lebih rumit jika kita menuntut bahwa kelompok proses mencapai kesepakatan. Perjanjian ini diperlukan dalam banyak kasus. Contoh Sonic adalah: pemilihan koordinator, memutuskan apakah atau tidak untuk melakukan transaksi. membagi tugas di antara para pekerja, dan sinkronisasi. Ketika proses komunikasi dan semuanya sempurna, mencapai kesepakatan tersebut sering langsung, tetapi ketika mereka tidak, masalah timbul. Tujuan umum algoritma kesepakatan terdistribusi adalah memiliki semua proses non-rusak mencapai konsensus pada beberapa masalah, dan membangun konsensus bahwa dalam jumlah terbatas langkah. Kasus yang berbeda mungkin tergantung pada parameter sistem, termasuk apakah atau tidak komunikasi adalah reliahle, atau semantik kecelakaan-kegagalan proses.
Sebelum mempertimbangkan kasus proses rusak, mari kita lihat pada "mudah" kasus proses sempurna tapi di mana jalur komunikasi bisa kehilangan pesan. Ada masalah yang terkenal, yang dikenal sebagai masalah dua tentara, yang menggambarkan bagaimana susahnya mendapatkan bahkan dua proses yang sempurna untuk mencapai kesepakatan tentang saya bit informasi. Tentara merah, dengan 5000 pasukan, yang berkemah di sebuah lembah. Dua tentara biru, masing-masing 3000 yang kuat, yang berkemah di lereng bukit sekitarnya menghadap ke lembah. Jika kedua pasukan biru dapat mengkoordinasikan serangan mereka pada tentara merah, mereka akan menang. Namun, jika salah satu serangan dengan sendirinya jika akan slanghtered. Tujuan dari tentara biru untuk mencapai kesepakatan tentang menyerang. Menangkap adalah bahwa mereka hanya dapat berkomunikasi menggunakan saluran tidak dapat diandalkan: mengirim utusan yang dikenakan untuk menangkap oleh tentara merah.
Misalkan, panglima tentara biru 1. Jenderal Alexander, mengirimkan pesan itu kepada komandan pasukan biru 2, Agung Bonaparte, membaca: "Saya memiliki rencana serangan-mari kita saat fajar besok." Utusan itu akan melalui dan Bonaparte mengirim dia kembali dengan catatan mengatakan: ". Ide Splendid Alex ketemu subuh tomor baris.." Utusan itu akan kembali ke markasnya aman, memberikan pesan, dan Alexander mengatakan pasukannya untuk mempersiapkan diri untuk pertempuran saat fajar.
Namun, hari itu, Alexander menyadari bahwa Bonaparte tidak tahu apakah utusan kembali aman dan tidak mengetahui hal ini, mungkin tidak berani menyerang. Konsekuensinya, Alexander mengatakan utusan untuk pergi memberitahu Bonaparte bahwa pesannya (13onaparte ini) tiba dan bahwa pertempuran diatur.
Sekali lagi utusan bisa lewat dan memberikan pengakuan. Tapi sekarang Bonaparte khawatir bahwa Alexander tidak tahu apakah mengakui-ment berhasil melewatinya. Dia beralasan bahwa jika Bonaparte berpikir bahwa utusan itu ditangkap, ia tidak akan yakin tentang (Alexander) nya rencana, dan mungkin tidak risiko serangan, sehingga ia mengirimkan utusan kembali lagi.
Bahkan jika utusan membuatnya melalui setiap waktu, mudah untuk menunjukkan bahwa Alexander dan Bonaparte tidak akan mencapai kesepakatan, tidak peduli berapa banyak mereka mengirim ucapan terima kasih. Asumsikan bahwa ada beberapa protokol yang berakhir dalam jumlah terbatas langkah. Hapus semua langkah tambahan di akhir untuk mendapatkan protokol minimum yang bekerja. Beberapa pesan sekarang yang terakhir dan sangat penting untuk perjanjian (karena ini adalah protokol minimum). Jika pesan ini gagal untuk tiba. perang dimatikan.
Namun, pengirim pesan terakhir tidak tahu apakah pesan terakhir tiba. Jika tidak, protokol tidak lengkap dan umum lainnya tidak akan menyerang. Jadi pengirim pesan terakhir tidak bisa tahu apakah perang dijadwalkan atau tidak, dan karenanya tidak dapat dengan aman melakukan pasukannya. Karena penerima dari pesan itu lalu tahu pengirim tidak bisa yakin, dia tidak akan risiko kematian baik, dan tidak ada kesepakatan. Bahkan dengan proses nonfaulty (jenderal), kesepakatan akan-tween bahkan dua proses tidak mungkin dalam menghadapi komunikasi tidak dapat diandalkan.
Sekarang mari kita asumsikan bahwa komunikasi yang sempurna tetapi proses yang tidak. Masalah klasik di sini juga terjadi dalam pengaturan militer dan disebut masalah jenderal Bizantium. Dalam masalah ini tentara merah masih berkemah di lembah, tapi n biru jenderal semua tentara kepala di bukit dekatnya. Komunikasi dilakukan berpasangan melalui telepon dan seketika dan sempurna, tetapi dari ¬ erals gen adalah pengkhianat (rusak) dan secara aktif berusaha untuk mencegah para jenderal yang setia dari mencapai kesepakatan dengan memberi mereka informasi yang salah dan bertentangan (untuk model proses rusak). Pertanyaannya sekarang apakah para jenderal yang setia masih dapat mencapai kesepakatan.
Demi umum, kita akan mendefinisikan kesepakatan dengan cara yang sedikit berbeda di sini. Setiap umum diasumsikan untuk mengetahui berapa banyak tentara yang ia miliki. Tujuan dari masalah adalah para jenderal untuk kekuatan pasukan tukar, sehingga pada akhir algoritma, setiap umum memiliki vektor dengan panjang yang sesuai dengan semua tentara. Jika umum saya setia, maka elemen i adalah kekuatan pasukannya: jika tidak, itu tidak terdefinisi.
Sebuah algoritma rekursif ditemukan oleh Lampon et al. (1982) yang memecahkan masalah ini dalam kondisi tertentu. Dalam Gambar. 7-4 kami menggambarkan kerja algoritma untuk kasus itu = 4 dan = 1. Untuk parameter ini. algoritma beroperasi di empat langkah. Dalam langkah pertama, setiap jenderal mengirimkan pesan (handal) untuk setiap umum lainnya mengumumkan kekuatan pasukannya. Jenderal Loyal mengatakan kebenaran, pengkhianat dapat memberitahu setiap umum lainnya kebohongan yang berbeda. Dalam Gambar. 7-4 (a) bahwa general 1 laporan pasukan 1K. umum 2 laporan pasukan 2K. umum 3 terletak untuk semua orang. memberi. c. y, dan z, masing-masing, dan umum 4 laporan 4K tentara. Pada langkah 2. hasil pengumuman tahap I dikumpulkan bersama-sama dalam bentuk 
 

satupengkhianat. (a) Para jenderalmengumumkankekuatanhoopmereka(dalam satuan OfMosuldiersi. (dalamveCIONThebahwasetiap umummerakitdidasarkan pada(a). (e) vec¬torbahwa setiapteceivesumumpada langkah 3.
Langkah3terdiri darisetiap jenderallewatvektornyadari Gambar. 7-4(5) kepada setiapumum lainnya. Setiap umummendapat tigavektor, satu dari setiap umum lainnya. Di sini, juga.umum3terletakmelalui giginya, menciptakannilai-nilai baru12, melaluiLHasillangkah 3ditunjukkan pada Gambar. 7-4(c). Akhirnya, pada langkah 4, setiap ujianumumelemeni darimasing-masingvektorbaru diterima. Jikanilai apapunmemilikimayoritas,nilaiyangdimasukkan ke dalamvektorhasil. Jika tidak ada nilaimemilikimayoritas.elemensesuaivektorhasilditandaiUNKNOWN. Dari Gambar. 7-4(c) kita melihat bahwajenderal1, 2, dan 4semuamencapai kesepakatan tentang(1, 2, UNKNOWN, 4) yang merupakanhasil yang benar. Pengkhianattidak bisacon-apt informasi daripara jenderalyang setia, ia tidak mampumengotori bekerja.
Sekarangmari kitakembalimasalah iniuntuk n=3dan=I,yaitu. hanya duajenderalyang setiadan satupengkhianat, seperti yang diilustrasikanpada Gambar. 7-5. Di sini kitamelihat bahwapada Gambar. 7-5(e) tidak satu pun daripara jenderalyang setiamelihatmayoritasuntuk elemen1, elemen2, 3atau elemen, sehingga semuadari mereka ditandaiUNKNOWN. Algoritmatbetelahgagal menghasilkankesepakatan.



Dalam tulisan mereka. Lamport et al. (1982) membuktikan bahwa dalam sistem dengan proses rusak nc, perjanjian dapat dicapai hanya jika 2m + 1 benar berfungsi proses busur ini, untuk total 3m + 1. Dimasukkan ke dalam istilah yang sedikit berbeda, setuju-pemerintah hanya mungkin jika lebih dari dua-pertiga dari proses bekerja propaganda benar. Cara lain untuk melihat masalah ini, adalah sebagai berikut. Pada dasarnya, apa yang kita butuhkan untuk mencapai adalah suara mayoritas di antara sekelompok jenderal yang setia terlepas dari apakah ada juga pengkhianat di antara midsts mereka. jika ada di pengkhianat, kita perlu memastikan bahwa suara mereka, bersama dengan setiap loyalis yang telah menyesatkan oleh para pengkhianat, masih sesuai dengan suara mayoritas dari para loyalis. Dengan 2m + 1 loyalis, hal ini dapat dicapai dengan mewajibkan kesepakatan yang tercapai hanya jika lebih dari dua-pertiga suara yang sama. Dengan kata lain, jika lebih dari dua-pertiga dari para jenderal setuju pada keputusan yang sama, keputusan ini sesuai dengan suara mayoritas yang sama oleh sekelompok jenderal yang setia.
Sayangnya, mencapai kesepakatan dapat menjadi lebih buruk. Fischer dkk. (1985) membuktikan bahwa dalam sistem terdistribusi di mana pesan tidak dapat dijamin bedelivered dalam diketahui, waktu yang terbatas, tidak ada kesepakatan mungkin ir bahkan satu process rusak (meskipun jika proses satu gagal diam-diam). Masalah dengan systems tersebut adalah bahwa proses sewenang-wenang lambat yang bisa dibedakan dari yang jatuh. Banyak hasil teoritis lain yang dikenal tentang kapan kesepakatan yang mungkin dan jika tidak. Survei hasil ini diberikan dalam (Barborak et al, 1993;. Dan Turck dan Shasha 1992.).

7.3 Diandalkan Client-Server Komunikasi
Dalam banyak kasus, toleransi kesalahan dalam systcms didistribusikan berkonsentrasi pada proses rusak. Namun, kita juga perlu mempertimbangkan kegagalan komunikasi. Sebagian besar model kegagalan dibahas sebelumnya berlaku juga untuk saluran komunikasi. Secara khusus, sebuah saluran komunikasi mungkin menunjukkan kecelakaan. kelalaian, waktu, dan kegagalan sewenang-wenang. Dalam prakteknya, ketika membangun saluran komunikasi yang handal, fokusnya adalah pada masking kecelakaan dan kelalaian kegagalan. Sewenang-wenang kegagalan dapat terjadi dalam bentuk duplikat pesan, hasil dari kenyataan bahwa dalam pesan jaringan komputer dapat buffered untuk waktu yang relatif lama, dan busur diinjeksikan ke dalam jaringan setelah pengirim asli telah mengeluarkan transmisi (lihat, misalnya . Tanenbaum, 1996).

7.3.1 Point-to-Point Komunikasi
Dalam banyak sistem terdistribusi, komunikasi point-to-point yang dapat diandalkan esta-blished dengan memanfaatkan protokol transportasi yang dapat diandalkan, seperti TCP. TCP masker kegagalan kelalaian, yang terjadi dalam bentuk pesan yang hilang, dengan menggunakan mendorong adanya edgements dan transmisi ulang. Kegagalan tersebut benar-benar tersembunyi dari klien TCP. Namun, kegagalan kecelakaan koneksi sering tidak bertopeng. Sebuah kegagalan kecelakaan dapat terjadi ketika, untuk alasan apa pun, koneksi TCP tiba-tiba rusak sehingga pesan tidak lagi dapat ditularkan melalui saluran tersebut. Dalam kebanyakan kasus, klien diberitahu bahwa saluran tersebut telah jatuh dengan menaikkan pengecualian. Satu-satunya cara untuk menutupi kegagalan tersebut adalah membiarkan sistem terdistribusi upaya untuk secara otomatis mengatur koneksi baru.

7.3.2 RPC Semantik dalam Kehadiran Kegagalan
Mari kita lihat lebih dekat pada komunikasi client-server saat menggunakan fasilitas komunikasi tingkat tinggi seperti Remote Procedure Calls (RPC) atau Remote Method Doa (R.TvIls). Pada halaman berikut, kita fokus pada RPC, tetapi diskusi yang sama berlaku untuk komunikasi dengan objek remote.
Tujuan dari RPC adalah untuk menyembunyikan komunikasi dengan membuat prosedur panggilan jarak jauh terlihat seperti orang lokal. Dengan beberapa pengecualian, sejauh ini kami telah datang cukup dekat.
Memang, selama kedua klien dan server telah berfungsi dengan sempurna., RPC melakukan pekerjaannya dengan baik. Masalah conies tentang kapan kesalahan terjadi. ft kemudian bahwa perbedaan-perbedaan antara panggilan lokal dan remote tidak selalu mudah untuk menutupi. Untuk struktur diskusi kita, mari kita membedakan antara kelas hidup yang berbeda dari kegagalan yang dapat terjadi pada sistem RPC, sebagai berikut:
1.    Klien tidak dapat menemukan server.
2.    Permintaan pesan dari klien ke server hilang.
3.    Server crash setelah menerima permintaan.
4.    Balasan pesan dari server ke klien hilang.
5.    Klien crash setelah mengirimkan permintaan.
Masing-masing kategori menimbulkan masalah yang berbeda dan membutuhkan solusi yang berbeda. Klien tidak bisa Cari Server. Untuk mulai dengan, hal ini bisa terjadi bahwa klien tidak dapat menemukan server yang cocok. Server mungkin turun, misalnya. Atau, anggaplah bahwa klien menumpuk menggunakan versi tertentu dari rintisan klien, dan biner tidak digunakan untuk jangka waktu yang cukup lama. Sementara itu, server berkembang dan baru ver-sion antarmuka diinstal: busur bertopik baru yang dihasilkan dan mulai digunakan. Ketika klien akhirnya dijalankan, pengikat tidak akan dapat mencocokkannya dengan server dan akan melaporkan kegagalan. Sementara mekanisme ini digunakan untuk melindungi klien dari sengaja mencoba untuk berbicara dengan server yang mungkin tidak setuju dengan itu dalam hal apa parameter yang dibutuhkan atau apa yang seharusnya dilakukan, masalah tetap tentang bagaimana seharusnya kegagalan ini harus ditangani.
Salah satu solusi yang mungkin adalah untuk memiliki kesalahan meningkatkan pengecualian. Dalam beberapa bahasa. (Misalnya, lava), programmer dapat menulis prosedur khusus yang busur dipanggil pada kesalahan tertentu, seperti pembagian dengan nol. Dalam C, penangan sinyal dapat digunakan untuk tujuan ini. dengan kata lain, kita bisa menentukan jenis sinyal baru SIG-iyosERvER, dan memungkinkan Lobe ditangani dengan cara yang sama sebagai sinyal lainnya.
Pendekatan ini juga memiliki kelemahan. . Untuk mulai dengan, tidak setiap bahasa memiliki "pengecualian atau sinyal Poin lain adalah bahwa harus menulis pengecualian atau sinyal handler menghancurkan transparansi kami telah mencoba untuk mencapai:. C Misalkan Anda adalah seorang programmer dan bos Anda memberitahu Anda untuk menulis prosedur penjumlahan anda tersenyum dan mengatakan padanya akan ditulis, diuji, dan didokumentasikan dalam lima menit Kemudian dia menyebutkan bahwa Anda juga harus menulis pengecualian handler juga, hanya di cale:. prosedur ini tidak ada hari Pada titik itu cukup sulit untuk mempertahankan sion bahwa prosedur remote tidak berbeda dari orang-orang lokal, karena menulis handler pengecualian untuk "Tidak dapat menemukan server" akan menjadi permintaan iiij agak tidak biasa sebuah sistem prosesor tunggal. Begitu banyak untuk transparansi.

Kehilangan Pesan Permintaan
Kedua item pada daftar yang berhadapan dengan kehilangan pesan permintaan. Ini adalah yang paling mudah untuk menangani: hanya memiliki sistem operasi atau rintisan klien memulai timer saat mengirim permintaan. Jika timer berakhir sebelum balasan atau pengakuan kembali, pesan dikirim lagi. jika pesan itu benar-benar hilang, server tidak akan dapat membedakan antara transmisi dan
dan semuanya akan bekerja dengan baik. Kecuali, tentu saja, begitu banyak pesan permintaan yang hilang bahwa klien menyerah dan palsu menyimpulkan bahwa server sedang down, dalam hal ini kita kembali ke "Tidak dapat menemukan server." Jika permintaan itu tidak hilang, satu-satunya hal yang perlu kita lakukan adalah membiarkan server dapat mendeteksi itu berurusan dengan retransmisi. Sayangnya, hal tersebut tidak begitu sederhana, seperti yang kita menjelaskan kapan balasan hilang.

Gangguan Server
Kegagalan berikutnya dalam daftar adalah server crash. Urutan normal peristiwa di server ditunjukkan pada Gambar. '7 -6 (A). Permintaan tiba, dilaksanakan, dan balasan dikirim. Sekarang perhatikan Gambar. 7-6 (b). Permintaan tiba dan dilakukan, sama seperti sebelumnya, tetapi server crash sebelum dapat mengirim balasan. Akhirnya, lihat Gambar. 7-6 (c). Lagi permintaan datang, tapi kali ini server crash sebelum bahkan bisa.






Pada Gambar. 7-6adalah bahwapengobatan yang tepatberbedauntuk(b) dan(c). Di(b) sistem harusmelaporkankegagalankembali ke klien(misalnya, menaikkanperkecualian), sedangkan pada(c) hanyadapatmemancarkan kembalipermintaan. Masalahnya adalah bahwasistem operasiklientidak bisatolyang mana.Semua ia tahuadalah bahwatimertelah berakhir. Tigasekolah pemikiranada padaapa yang harus dilakukandi sini(Spector, 1982). Satuphilo¬sophyadalah menunggu sampaiserver reboot(atau rebindke server baru) danmencoba operasi lagi. Idenya adalah untukterus mencoba sampaibalasantelah diterima, kemudianmemberikannya kepadaklien. Teknik ini disebutsetidaknya sekalisemantik dan(Guaranteed ¬teebahwaRPCtelah dilakukansetidaknya satu kali, tapi mungkin lebih.
Filosofikedua memberikansegera danmelaporkan kembaligagal. Caraini disebutpalingsemantiksekali danjaminanbahwaRPCtelahmobil¬Riedkeluarpaling banyak satukali, tapi mungkintidak ada sama sekali.
Filosofiketiga adalahuntuk menjaminapa-apa. Ketika servercrash, klientidak mendapatkanbantuan dantidakmenjanjikantentang apa yang terjadi. RPCmungkin memiliki dilakukan di mana saja dari nol sampai sejumlah besar kali. Keutamaan utama dari skema ini adalah bahwa hal itu mudah untuk diimplementasikan. Tak satu pun dari busur ini sangat menarik. Apa yang ingin saya adalah Semantik tepat sekali, tetapi secara umum, tidak ada cara untuk mengatur ini. Bayangkan bahwa operasi remote terdiri dari mencetak beberapa teks, dan bahwa server akan mengirimkan pesan penyelesaian ke klien ketika teks dicetak. Juga menganggap bahwa ketika klien mengeluarkan permintaan, menerima pengakuan bahwa permintaan telah disampaikan ke server. Ada dua strategi server dapat mengikuti. Ini dapat mengirim pesan selesai sebelum itu benar-benar memberitahu printer untuk melakukan tugasnya, atau setelah teks tersebut telah dicetak.
Asumsikan bahwa server crash dan kemudian pulih. Ini mengumumkan kepada semua klien yang baru saja jatuh tetapi sekarang berdiri dan berjalan lagi. Masalahnya adalah bahwa klien tidak tahu apakah permintaan untuk mencetak beberapa teks akan benar-benar dilaksanakan.
Ada empat strategi klien dapat mengikuti. Pertama, klien dapat memutuskan untuk tidak pernah diterbitkan ulang permintaan, dengan risiko bahwa teks tidak akan dicetak. Kedua, dapat memutuskan untuk selalu diterbitkan ulang permintaan, tapi ini dapat mengakibatkan teks yang dicetak dua kali. Ketiga, dapat memutuskan untuk menerbitkan kembali permintaan hanya jika belum mendapat pengakuan bahwa permintaan cetak yang telah disampaikan ke server. Dalam kemudahan itu, klien mengandalkan pada kenyataan bahwa server jatuh sebelum permintaan cetak dapat disampaikan. Strategi keempat dan terakhir adalah untuk mengeluarkan kembali permintaan hanya jika telah menerima pengakuan untuk permintaan cetak.
Dengan dua strategi untuk server, dan empat untuk klien, ada total delapan kombinasi untuk dipertimbangkan. Sayangnya, tidak ada kombinasi memuaskan. Untuk menjelaskan, diketahui bahwa ada tiga peristiwa yang dapat terjadi pada server: mengirim pesan selesai (M), mencetak teks (P), dan kecelakaan (C). Peristiwa ini dapat terjadi dalam enam orderings yang berbeda:
1.    M-> P-4C: A kecelakaan terjadi setelah mengirim pesan selesai dan mencetak teks.
2.    M-4C (P): Sebuah kecelakaan terjadi setelah mengirim penyelesaian mes ¬ bijak, tapi sebelum teks bisa dicetak.
3.    P-01-C: A kecelakaan terjadi setelah mengirim pesan selesai dan mencetak teks.
4.    P-4C (-> M): Teks dicetak, setelah kecelakaan terjadi sebelum 'pesan selesai bisa dikirim.
5.    C (-> P-> M): Sebuah kecelakaan terjadi sebelum server bisa melakukan apa saja.
6.    C (-> A4 -41: A kecelakaan terjadi sebelum server bisa melakukan apa saja.
Tanda kurung menunjukkan suatu peristiwa yang tidak bisa lagi terjadi karena server sudah jatuh. Gambar. 7-7 menunjukkan semua kombinasi yang mungkin. Seperti dapat segera diverifikasi, tidak ada kombinasi strategi klien dan strategi server yang akan bekerja dengan benar di bawah semua urutan acara mungkin. Intinya adalah bahwa klien tidak pernah bisa mengetahui apakah server jatuh sebelum atau setelah teks dicetak.
Client



Server




Strategy M -> P

Strategy P -> M
Reissue strategy

MPC
MC(P)
C(MP)

PMC
PC(M)
C(PM)
Always

DUP
OK
OK

DUP
DUP
OK
Never

OK
ZERO
ZERO

OK
OK
ZERO
Only when ACKed

DUP
OK
ZERO

DUP
OK
ZERO
Only when not ACKed

OK
ZERO
OK

OK
DUP
OK













Pleura7-7. Differen: kombinasiclient dan serverstrategidalampres¬enceOfServescrash.
Singkatnya, kemungkinanservercrashradikalmengubah sifatRFCdan jelasmembedakan sistemprosesor tunggaldarisistem terdistribusi. Di bekaskemudahan, server crashjuga menyiratkankecelakaanklien, sehinggapemulihanbukanlahpos¬jawabdan tidak perlu. Dalamkeduaitu adalahmungkin dan perluuntuk mengambil tindakan.
KehilanganBalasPesan
Balasanhilangjugabisa sulituntuk menangani. Solusi yang jelas adalahhanyamengandalkanpada timerlagiyang telahditetapkan olehsistem operasiklien. Jika tidak adajawabanyang akan datangdalam periode yang wajar, hanya mengirimpermintaanlagi. Masalahnya dengansolusi ini adalah bahwaklientidak benar-benaryakin mengapatidak ada jawaban. Apakahpermintaanatau membalastersesat, atauserverhanyalambat? Ini mungkinmembuat perbedaan.Secara khusus, beberapa operasidengan amandapat diulangsesering yang diperlukandengantidak ada kerusakanyang dilakukan. Permintaanseperti memintauntuk pertama1024 bytefiletidak memiliki efek sampingdandapat dijalankansesering mungkintanpaartybahayasedang dilakukan. Permintaanyang memilikiproperti inidikatakanidempotent.
Sekarangmempertimbangkan permintaanke serverperbankanmemintauntuk mentransfersatu juta dolardari satuaccount ke account lainnya. Jikapermintaantiba dandilakukan, tetapi jawabannyahilang, klien tidakakantahu inidan akanmemancarkanpesan.ServerBankakan menafsirkanpermintaan inisebagaiyang baru, dan akanmelaksanakannyajuga.Duajutadolarsingapuraakan ditransfer. Surga melarangbahwamg!), Hilang10kali. Mentransferuang tidakidempotent.
Salah satucara untuk memecahkan masalahini adalah untukmencoba untuk struktursemua permintaandalamidem: caraampuh. dalam prakteknya, bagaimanapun, banyak permintaan(misalnya, mentransferuang) yang inheren nonidetnpotent, sehingga sesuatu yang lain yang diperlukan. Cara lain adalah dengan memiliki klien menetapkan setiap permintaan nomor urutan. Dengan memiliki server melacak nomor urutan paling baru diterima dari setiap klien yang menggunakannya, yang dikirim dapat membedakan antara permintaan asli dan transmisi dan dapat menolak untuk melaksanakan setiap permintaan untuk kedua kalinya. Namun, server masih harus mengirim respon ke klien. Perhatikan bahwa pendekatan ini tidak mengharuskan server memelihara administrasi pada setiap klien. Sebuah perlindungan tambahan adalah memiliki sedikit di header pesan yang digunakan untuk membedakan permintaan awal dari transmisi ulang (gagasan bahwa selalu aman untuk melakukan permintaan asli, transmisi ulang membutuhkan lebih banyak perawatan).


Gangguan klien
Final item pada daftar kegagalan adalah kecelakaan klien. Apa yang terjadi jika klien mengirimkan permintaan ke server untuk melakukan beberapa pekerjaan dan crash sebelum reply dari server? Pada titik ini perhitungan yang aktif dan tidak ada orang tua yang menunggu hasilnya. Seperti perhitungan yang tidak diinginkan disebut yatim piatu.
Yatim dapat Penyebab berbagai masalah. Sebagai minimum kelinci, mereka buang siklus CPU. Mereka juga dapat mengunci file atau mengikat sumber daya berharga. Akhirnya, jika reboot klien dan melakukan RPC lagi, tetapi jawaban dari anak yatim datang kembali segera setelah itu, dapat mengakibatkan kebingungan.
Apa yang dapat dilakukan tentang bc anak yatim? Nelson (1981) mengusulkan empat solusi. Dalam larutan I. sebelum rintisan klien mengirimkan pesan RPC, itu membuat entri log menceritakan Apa itu lakukan. Log disimpan pada disk atau media lain yang bertahan crash. Setelah reboot, log tersebut akan diperiksa dan anak yatim secara eksplisit dibunuh. Solusi ini disebut pemusnahan.
Kerugian dari skema ini adalah biaya menghebohkan menulis catatan disk setiap RPC. Selain itu, bahkan mungkin tidak bekerja, karena anak yatim diri mereka dapat melakukan RPC, sehingga menciptakan grandorphan.s atau keturunan lanjut bahwa busur sulit atau tidak mungkin untuk menemukan. Akhirnya, jaringan mungkin ia dipartisi, karena gateway gagal, sehingga mustahil untuk membunuh mereka, bahkan jika mereka dapat ditemukan. Semua dalam semua, ini bukan pendekatan yang menjanjikan.
Solusi ke2, yang disebut reinkarnasi, semua masalah ini dapat diselesaikan tanpa perlu menulis catatan disk yang. Cara kerjanya adalah dengan membagi waktu menjadi nomor zaman berurutan. Ketika reboot klien, menyiarkan pesan ke semua mesin menyatakan ia mulai dari zaman NCW. Ketika siaran tersebut masuk, semua perhitungan remote dengan mengatasnamakan bahwa klien dibunuh. Tentu saja, jika jaringan dipartisi, beberapa anak yatim dapat bertahan hidup. Namun, ketika mereka melaporkan kembali, mereka. balasan akan berisi nomor zaman usang, membuat mereka mudah untuk dideteksi.
Solusi 3 adalah varian ide ini, tapi kurang Draconian. Hal ini disebut kendali lembut, anyelir. Ketika siaran zaman datang, setiap mesin memeriksa untuk melihat apakah telah ada perhitungan jarak jauh, dan jika demikian, mencoba untuk menemukan pemiliknya. Hanya jika pemilik tidak dapat ditemukan adalah perhitungan dibunuh.
Akhirnya, kami memiliki solusi 4, kedaluwarsa, di mana setiap RPC diberi standard jumlah waktu. T, untuk melakukan pekerjaan itu. Jika tidak bisa menyelesaikan, secara eksplisit harus meminta lain kuantum, yang merupakan gangguan. Di sisi lain, jika setelah kecelakaan klien menunggu waktu 7 'sebelum reboot, semua anak yatim pasti akan hilang. Masalah yang harus diselesaikan di sini adalah memilih nilai wajar Tin wajah RPC dengan liar persyaratan yang berbeda.
Dalam prakteknya, tidak satupun dari metode ini diinginkan. Lebih parah lagi, membunuh seorang anak yatim piatu mungkin memiliki konsekuensi yang tak terduga. Misalnya, bahwa anak yatim telah memperoleh kunci pada satu atau lebih file atau catatan data base. Jika anak yatim tiba-tiba Aiited. kunci ini mungkin tetap selamanya. Juga, anak yatim mungkin telah membuat entri dalam berbagai antrian terpencil untuk memulai proses-proses lain di masa mendatang, bahkan membunuh anak yatim mungkin tidak menghapus semua jejak itu. Eliminasi Orphan adalah dibahas secara lebih rinci dengan Panzieri dan Shrivastava (1988).





Tidak ada komentar:

Posting Komentar