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.
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.
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.
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.
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.
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 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.
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.
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.
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.
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.
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.
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:
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.
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.
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).
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