Senin, 28 Oktober 2013

Sistem terdistribusi Toleransi kesalahan

TOLERANSI KESALAHAN
Sebuah fitur karakteristiksistem terdistribusiyang membedakan mereka darisistemmesin tunggaladalahkonsep kegagalanparsial. Sebuah kegagalanparsialdapatterjadi ketikasalah satu komponen dalamsistem terdistribusigagal. Kegagalan inidapat mempengaruhioperasi yang tepat darikomponen lainnya, sementara pada saatyang samakomponen lainnyasama sekali tidak terpengaruh. Sebaliknya, kegagalandalam sistemnondistributedseringtotal dalamarti, bahwahal itu mempengaruhisemua komponen, dan dapatdengan mudahmenurunkan seluruhaplikasi.
Untuk  memahami  peran  dari  toleransi  kesalahan  di  dalam  sistem tersebar, kebutuhan pertama kita untuk melihat  lebih dekat, apa itu  benar-benar  berarti  karena  suatu  sistem  tersebar  untuk toleransi  terhadap  kesalahan-kesalahan.  Toleran  kesalahan  adalah betul-betul  dihubungkan  dengan  apakah  menyebut  sistem  yang ketergantungan. 


7.1 Pendahuluan(By Ikhwannul Muslimin)
Dalam bab ini kita akan lebih memahamimodelpenyajiankonsep-konsep dasaryang berhubungan denganpengolahankegagalan,diikuti dengan diskusimodelkegagalan.Teknikutama untukpenanganankegagalan adalahredundansi, yang jugadibahas.
Toleransi kesalahantunduk padabanyak penelitiandalam ilmu komputer. Pada bagian ini, kita mulai denganmenyajikankonsep-konsep dasaryang berhubungan dengankegagalanpengolahan,diikuti dengan diskusimodelkegagalan.Teknikutama untukkegagalanpenangananadalahredundansi, yang jugadibahas.

7.1.1     KonsepDasar
Untukmemahami perantoleransi kesalahan dalamsistem terdistribusipertama kita perlumelihat lebih dekatapa maksudsebenarnyapadasistem terdistribusiuntuk mentolerirkesalahan. Toleransi kesalahaninisangat terkait denganapa yang disebutSistem Ketergantungan. Ketergantunganadalah istilahyang mencakupsejumlah persyaratanyang bergunauntuk sistemterdistribusitermasuk pada beberapa hal berikut:

1.    Ketersediaan
Ketersediaandidefinisikan sebagaiproperti dimanasistemsiap untuksegera digunakan. Secara umum,mengacu padaprobabilitasbahwa sistemberoperasi dengan benarpada saat tertentudan tersediauntuk melakukan fungsiatas namapenggunanya. Dengan kata lain, sistem yang sangattersediaadalah salah satukemungkinan besar akanbekerjapada suatu saat tertentudalam waktu.
Ketersediaan menjamin bahwa informasi dan layanan dapat diakses dan  berfungsi  dengan  benar  (accessible  and  functional)  pada  saat dibutuhkan. Untuk menyediakan jaringan dengan availability yang tinggi, maka harus  dijamin  bahwa  security  proses  adalah  handal  (reliable)  dan responsif.  Sistem  dan  software  termasuk  system  security  yang modular perlu saling Interoperable. Sistem  yang  mempunyai  availability  yang  tinggi  mempunyai karakteristik  antara  lain  mempunyai  MTBF  (Mean  Time  Between Failur)  yang  panjang  dengan  dukungan  redundant  power  suplay  dan hot-swappable module.

2.    Keandalan
Keandalanmengacu padapropertibahwa sistemdapat terus berjalantanpa kegagalan. Berbeda denganketersediaan, keandalandidefinisikandalam halinterval waktubukaninstandalam waktu.Sebuah sistemyang sangat handalkemungkinan besar akanterus bekerjatanpa gangguanselama waktu yang relatiflama. Ini adalahperbedaan yang halusnamun pentingbila dibandingkan denganketersediaan. Jika sistemturunselama satumilidetiksetiap jam, ia memilikiketersediaanlebih dari99,9999 persen, tapi masihsangat bisa diandalkan. Demikian pula, sebuah sistemyang tidak pernahcrashtapidimatikanselama dua minggusetiap bulan Agustusmemiliki keandalan yang tinggitetapi hanya96persenketersediaan. Keduanyatidak sama.
Keandalan  sistem  (system  reliability)  sangat  penting  di  dalam  sebuah sistem  terdistribusi  karena  di  dalam  system  tersebut  terkandung sejumlah  besar  komponen  dan  kemungkinan  terjadinya  kegagalan sangat besar. Fault atau kesalahan suatu sistem dapat dibedakan menjadi:  Fail-silent faults dan Bizantine Faults.  Fail-silent faults atau fail stop faults : sistem berhenti dan tidak memberikan respon terhadap masukan yang ada.   Bizantine  Faults  :  sistem  terus  bekerja  meskipun  fault  dan memberikan hasil yang salah.Sistem  yang  mempunyai  sifat  dalam  kondisi  normal  bekerja  akan memberikan  respon  terhadapat  input  dalam  waktu  terbatas  yang telah diketahui disebut sistem synchronous. Sistem yang  tak punya  sifat  seperti  itu  disebut  sistem  synchronous. Sistem  synchronous  sangat  sulit  dikelola  dibandingkan  dengan synchronous.

3.    Keselamatan
Keselamatanmengacu padasituasiketikasistemsementaragagaluntuk beroperasi dengan benar, tidak adabencanayang terjadi. Sebagai contoh,banyak sistemkontrol proses, seperti yang digunakanuntuk mengendalikanpembangkit listrik tenaga nukliratau mengirimorangke luar angkasa, diwajibkan untuk memberikan tingkatkeamanan yang tinggi. Jikasistem kontrol tersebutsementaragagal karenahanyamomen yang sangatsingkat, efekbisa menjadi bencana. Banyak contohdari masa lalu(dan mungkin banyak lagibelum datang) menunjukkanbetapa sulitnyauntuk membangunsistem yang aman.
Integrity  (keutuhan)  menjamin  bahwa  informasi  atau  software adalah  lengkap,  akurat  dan  otentik.  Dengan  integrity  orang  atau proses  yang  tak  berhak  tak  bisa membuat  perubahan  pada  sistem. Untuk  network  entegrity  kita  perlu  menjamin  bahwa  message  yang diterima adalah sama dengan message yang dikirim.    Isi dari message harus lengkap dan tak dimodifikasi, dan link antara sumber dan tujuan node valid.   Connection  integrity dapat disediakan oleh cryptography dan routing control. Confidentiality  (kerahasiaan)  melindungi  informasi  sensitif  dari penyingkapan/pengaksesan  yang  tak  berhak.  Cryptography  dan access control digunakan untuk melindungi kerahasiaan. Usaha  penerapan  perlindungan  kerahasiaan  tergantung  pada sensitivitas  dari  informasi  dan  kemungkinan  sifat  pengamat  atau penyusup.

4.    Pemeliharaan
Pemeliharaanmengacu pada seberapamudahsistem yang gagaldapat diperbaiki. Sebuah sistemyang sangatdipertahankanjuga dapat menunjukkantingkat tinggiketersediaan, terutama jikakegagalandapat dideteksidan diperbaikisecara otomatis.
Perlindungan  terhadap  semua  ancaman  dengan  hanya berdasarkan  Host  sangat  sulit  diterapkan.  Untuk  melindungi infrastruktur  kita  harus  menerapkan  perlindungan/security berdasarkan  layer.    Kita  seharusnya  membangun  pertahanan  yang sesuai yang berada di dalam sistem sehingga penyusup yang mungkin bisa  mengakses  salah  satu  bagian  dari  sistem  tidak  akan  secara otomatis dapat mengakses bagian lain dari sistem tersebut. Akses  terhadap  host  yang  berisi  informasi  rahasia  membutuhkan pengontrolan  yang  hati-hati.    Host  di  dalam  sistem  jaringan  kita sebaiknya  diinventarisir  dan  dilakukan  klasifikasi  jenis  perlindungan atau security yang sesuai.

Suatu sistem dikatakan gagal ketika tidak dapat memenuhi janjinya. Secara khusus, jika sistem terdistribusi dirancang untuk menyediakan pengguna dengan sejumlah layanan, sistem ini telah gagal ketika satu atau lebih dari layanan tersebut tidak dapat (sepenuhnya) disediakan. Sebuah kesalahan adalah bagian dari sistem yang dapat menyebabkan kegagalan. Misalnya, ketika transmisi paket di seluruh jaringan, 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 bahkan mungkin tidak dapat mendeteksi bahwa sesuatu telah tiba.
Penyebabkesalahanini disebutkesalahan. Jelas,mencari tahuapa yang menyebabkankesalahanpenting. Misalnya,media transmisiyang salahatau burukdapatdengan mudahmenyebabkanpaket yang akanrusak.Dalamhal ini, relatif mudahuntuk menghapuskesalahan. Namun, kesalahan transmisijuga bisa disebabkanoleh kondisicuaca buruksepertidalam jaringan nirkabel. Mengubahcuacauntuk mengurangi ataumencegah kesalahanbukanlah suatu pilihan.
Membangun sistemketergantunganeratberkaitan dengan mengendalikankesalahan. Sebuah perbedaan dibuatantaramencegah, menghapus, danmeramalkan kesalahan(Laprie, 1995). Untuk tujuan kita, hal yang palingpenting adalahtoleransi kesalahan, yang berarti bahwasistem dapatmenyediakan layananbahkan dalamadanya kesalahan.

7.1.2        Model Kegagalan
Sebuah sistem yanggagaladalah tidak cukup menyediakan layananitu dirancang. Jika kitamempertimbangkansistem terdistribusisebagaikumpulan server yangberkomunikasi satu samalain dandengan klien mereka, tidak cukupmemberikan pelayananberarti bahwa server, saluran komunikasi, ataumungkin keduanya, tidak melakukan apayang seharusnya merekalakukan. Namun, serverrusaksendirimungkin tidak selalumenjadi kesalahanyang kita cari. Jika servertersebuttergantung padaserver lainuntuk menyediakan layananyangmemadai, penyebabkesalahanmungkin perludicaridi tempat lain.
Hubungan ketergantungansemacam itu munculdalam jumlah besar disistem terdistribusi. Sebuah diskgagalmungkinmembuat hidup sulit bagifile server yangdirancanguntuk menyediakan sistemfile yang sangattersedia.Jika sepertifile servermerupakan bagian daridatabase terdistribusi, kerja yang tepat dariseluruh databasemungkin dipertaruhkan, karena hanya sebagiandatayang benar-benardapat diakses.
Sistem  dikatakan  gagal  (fail)  apabila  tidak  mampu  memenuhi spesifikasi tekniknya.  Sistem Komputer dapat gagal karena kesalahan beberapa  komponen  seperti:  processor, memory,  I/O  device,  cable atau software. Kesalahan  dapat  diklasifikasikan  sebagai:  transient,  intermittent, permanent.  Kesalahan  transientterjadi  sekali  dan  kemudian menghilang.  Jika operasi diulangi, kesalahan tidak muncul.  Kesalahan intermittent  terjadi  kemudian  menghilang,  lalu  muncul  lagi,  lalu menghilang  lagi,  dst.    Contohnya  seperti  hubungan  konektor  yang loggar.    Keslahan  permanent  terjadi  seterusnya  sampai  komponen yang  fault  diperbaiki.  Contoh  chips  terbakar,  software  bugs,  disk head crash. Tujuan  perancangan  dan  pembuatan  toleransi  kesalahan  adalah menjamin bahwa system secara keseluruhan mampu terus berfungsi secara  benar meskipun  fault  terjadi. Jadi  disini  tidak mensyaratkan individual komponen yang sangat reliable.

Untukmendapatkan pemahaman yanglebih baik tentang bagaimanaseriuskegagalansebenarnya, beberapa skemaklasifikasi telah dikembangkan. Salah satuskema tersebutditunjukkan pada Gambardan didasarkan padaskemayang dijelaskan dalam(Cristian, 1991, dan HadzilacosdanToueg, 1993).
Type of failure
Description
Crash failure
A server halts, but is working correctly until it halts
Omission failure
Receive 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

Sebuah crash failureterjadi ketikaserversecara premature menghentikan, tetapibekerja dengan benarsampai berhenti. Sebuah aspek pentingdengancrash failureadalah bahwa setelahservertelahdihentikan, tidak ada ada lagi yang didengar. Sebuah contoh khas daricrash failureadalah sistem operasiyang datangberhenti grinding, danyanghanya ada satusolusi: reboot.
Omission failureterjadi ketikaserver gagaluntuk menanggapipermintaan. Beberapa halyang mungkin salah. Dalamkasus receive omission failure, servermungkintidak pernah mendapatpermintaandi tempat pertama. Perhatikan bahwamungkin jugamenjadi kasusbahwa hubungan antaraklien danservertelahditetapkan dengan benar, tapi itutidak adayangmengetahuipermintaan masuk. Juga, receive omission failure umumnyatidak akan mempengaruhikeadaanserver saat itu, karenaservertidak menyadarisetiap pesan yangdikirim ke sana.
Demikian juga, send omission failure terjadiketika servertelah melakukan pekerjaannya, tapi entah bagaimanagagaldalam mengirimkantanggapan.Kegagalan tersebutdapatterjadi, misalnya, ketikamengirimbuffer overflowssementara servertidak siap untuksituasi seperti ini. Perhatikan bahwa, berbeda dengan receive omission failure, server sekarangmungkindalam keadaanyang mencerminkanbahwa iabaru saja menyelesaikanlayanan untukklien. Sebagaikonsekuensinya, jikapengirimanrespongagal, servermungkinperlu dipersiapkanbahwa klienakanmengulang kembalipermintaansebelumnya.
Kelas lain darikegagalanberhubungan denganwaktu. Timing failureterjadi ketikaresponterletak di luarintervalreal-waktu tertentu. Seperti yang kita lihatdengan aliran dataisochronous, menyediakan dataterlalu cepatdapatdengan mudahmenimbulkan masalah bagipenerimajikaadatidak cukuptempat penyanggauntuk menampung semuadata yang masuk. Lebihumum, bagaimanapun, adalah bahwaservermeresponterlambat, dalam halkegagalankinerjadikatakan terjadi.
Sebuah jenisseriuskegagalanadalah kegagalanrespon, olehrespon serveryang salah.Dua jeniskegagalanresponmungkin terjadi. Dalamkasus kegagalannilai, servermemberikanjawabanyang salah untukpermintaan. Sebagai contoh,sebuah mesin pencari yangsistematismengembalikanhalaman Webtidak berhubungan dengansalah satuistilah pencarian yang digunakan, telah gagal.
Jenis lain darikegagalanrespondikenalsebagai state transition failure.Inibentuk kegagalanterjadi ketikaservertiba-tibabereaksidenganpermintaan yang masuk. Sebagai contoh, jikaservermenerima pesantidak dapat mengenali, state transition failureyang terjadi jikatidak ada tindakantelah diambiluntuk menanganipesan tersebut. Secara khusus, serverrusakmungkinsalahmengambil tindakandefaultyang seharusnya tidak pernahdimulai.
Yang paling seriusadalahArbitrary failure, juga dikenal sebagaikegagalanBizantium. Akibatnya, ketika Arbitrary failureterjadi,klienharussiap untuk yang terburuk. Secara khusus, dapat terjadi ketikaservermemproduksioutputyang seharusnya tidak pernahdiproduksi,tetapi yang tidakdapat dideteksiyangsalah.Parahnya lagiserversalahbahkanmungkinburukbekerja samadengan server lainuntuk menghasilkanjawabansalah dengan sengaja.
Arbitrary failure terkait erat dengancrash failure. Definisicrash failureseperti yangdisajikan di atasadalah cara yang palingjinakuntuk serveruntuk menghentikan. Merekajuga disebut sebagaikegagalan gagal-stop. Akibatnya, server gagal-berhenti yanghanya akanberhenti memproduksioutput dalamsedemikian rupa sehinggayangmenghentikandapat dideteksioleh proses lainnya. Sebagai contoh,servermungkin begitu ramahuntuk mengumumkanini adalah crash.
Tentu saja,dalam kehidupan nyata, servermenghentikandengan menunjukkankegagalankelalaianataucrash, dantidak begituramahuntuk mengumumkan merekaakan berhenti. Terserahproses lainuntuk memutuskan bahwaservertelahdihentikansecara prematur. Namun, dalamsistem fail-silent, proseslain mungkinsalahmenyimpulkan bahwaservertelahdihentikan. Sebaliknya, servermungkin hanyatiba-tibalambat, yaitu,itumenunjukkankegagalankinerja.
Akhirnya, ada jugakesempatan di manaservermenghasilkan outputacak, tapioutput inidapat dikenalioleh proses lainnyasebagai sampahbiasa.Serverkemudianmenunjukkanarbitrary failuretetapi dengan cara yangjinak. Inikesalahanjuga disebutsebagaifail-safe.
7.1.3        KegagalanMaskingolehredundansi
Jika system menjadifault tolerant, yang terbaikyang dapat dilakukan adalahmencobauntuk menyembunyikanterjadinyakegagalandari proses lainnya. Teknikutama untukkesalahanmaskingadalah dengan menggunakanredundansi. Tiga jenisyang mungkin: redundansiinformasi, redundansiwaktu, dan redundansifisik.
a.    Information Redundancy
Metodainimenambahkan  extra  bit  untukmembuatsedemikianhinggadapatmerecoveryinformasi  yang  telahrusak.  Contoh Hamming code ditambahkanpada transmitted data.
b.    Time Redundancy
Sebuahoperasidilakukandankemudianjikadiperlukandiulangilagi.  Contoh,  penggunaan  atomic  transaction.  Jika  transactiondibatalkan, proses  tersebutdapatdiulangilagitanpamenimbulkanmasalah.  Metoda  ini  sangat  bermanfaat  jika  fault-nya  adalah transient atau intermittent.\
c.    Physical Redundancy
Pendekatan  ini  menggunakan  penambahan  perangkat  ekstra. Prosestambahan yang dapat ditambahkanke sistemsehingga jikasejumlahkecil dari merekakecelakaan, sistem masihdapatberfungsi dengan benar. Dengan kata lain, dengan proses replikasi, tingkat tinggitoleransi kesalahandapat dicapai. Sebagai  contoh  ekstra  processor  dapat  ditambahkan  ke  System sehingga  jika  beberapa  processor  rusak  maka  System  secara keseluruhan  masih  dapat  berfungsi  dengan  benar.  Ada  duacarauntukmengelolaekstra  processor  tersebut:  activereplicationdan primary backup.

Perhatikan,Gambar(a). SinyalmelewatiperangkatA, B, dan C,secara berurutan. Jikasalah satu dari merekarusak, hasil akhirmungkin akansalah.

 









Gambarmenunjukkan  sinyal  melalui  device  A,B,C  secara berurutan.  Setiap  device  memiliki  3  replikasi.  Dan  setiap  replikasi diikuti sebuah voter. Setiap voter memiliki 3  input dan satu output. Jika dua atau tiga input sama, maka output sama dengan input.  Jika 3 input berbeda hasil output tak terdefinisi. Misalkan element A2 gagal. Setiap voter V1, V2 dan V3 mendapatkan 2 masukan  identik  yang  benar  dan  sebauh  salah,  tetapi  Voter  tetap menghasilkan  output  yang  benar  untuk  masukan  tahap  berikutnya. Sehingga  pada  dasarnya  efek  A2  tidak  berpengaruh  secara keseluruhan System.

Kesimpulan
Toleransi kesalahansangat terkait denganapa yang disebutSistem Ketergantungan. Ketergantunganadalah istilahyang mencakupsejumlah persyaratanyang bergunauntuk sistemterdistribusitermasuk yaitu : Ketersediaan, Keandalan, Keamanan dan Pemeliharaan. Ada beberapa model-model kegagalanyaituCrash failure, Omission failure (Receive &Send omission), Timing failure, Response failure (Value &State transition failure), danArbitrary failure

7.2 Process Resilience(By Nasrullah Yusuf)
Topik pertamakitabahas adalahperlindungan terhadapkegagalanproses, yangdicapai denganprosesreplikasike dalam kelompok. Juga, kita melihat bagaimanauntuk mencapai kesepakatandalam kelompokproses ketikasatu ataulebih anggotanyatidak bisa dipercayauntuk memberikanjawaban yang benar.
Untuk mentoleransi suatu proses yang rusak adalah untuk mengatur proses beberapa identik dalam kelompok, artinya bahwa ketika sebuah pesan itu dikirim ke kelompok itu sendiri, semua anggota kelompok menerimanya. Dengan cara ini, jika satu proses dalam kelompok gagal, mudah-mudahan beberapa proses lain dapat mengambil alih untuk itu. Proses kelompok memungkin proses yang dinamis. Kelompok baru dapat diciptakan dan kelompok tua dapat dihancurkan. Sebuah proses dapat bergabung dengan grup atau meninggalkan satu selama sistem operasi. Sebuah proses dapat menjadi anggota dari beberapa kelompok pada waktu yang sama. Konsekuensi-konsekuensinya, mekanisme yang diperlukan untuk mengelola kelompok dan keanggotaan kelompok. Setiap saat, ia bebas untuk meninggalkan salah satu atau semua dari kelompok-kelompok ini, dan mungkin bergabung dengan kelompok lain. Tujuan kelompok memperkenalkan adalah untuk memungkinkan proses untuk menangani kolektifasi  proses sebagai abstraksi tunggal. Dengan demikian proses dapat mengirim pesan ke sekelompok server tanpa harus mengetahui berapa banyak ,ada atau di mana mereka berada, yang dapat berubah dari satu panggilan ke yang berikutnya.

Grup Setara versus Grup hirarkis.
 Sebuah perbedaan penting antara kelompok yang berbeda berkaitan dengan struktur internal mereka. Dalam kelompok setara, semua proses adalah sama. Tidak ada yang bos dan semua keputusan-keputusan dibuat secara kolektif. Sedangkan di kelompok hirarki ada. Sebagai contoh, satu proses adalah koordinator dan semua yang lain adalah pekerja. Dalam model ini, ketika permintaan untuk pekerjaan yang dihasilkan, baik oleh klien eksternal atau oleh salah satu pekerja, itu dikirim ke koordinator. Koordinator kemudian memutuskan mana pekerja yang paling cocok untuk keluar, dan ke depan sana. Lebih kompleks hirarki juga mungkin, tentu saja. Pola-pola komunikasi yang diilustrasikan pada Gambar. 7-3.


Gambar 7-3. (A) Komunikasi dalam kelompok datar. (B) Komunikasi dalam kelompok hirarkis yang sederhana.

Masing-masing organisasi memiliki kelebihan dan kekurangan. Pada Kelompok setara simetris dan tidak memiliki titik tunggal kegagalan Jika salah satu crash proses, kelompok hanya menjadi lebih kecil, tetapi tetap dapat berjalan terus. Namun kelemahannya adalah bahwa pengambilan keputusan yang lebih rumit. Misalnya, untuk memutuskan apa yang harus dilakukan , suara seringkali harus diambil, menimbulkan beberapa penundaan dan overhead. Sedangkan Kelompok hirarkis memiliki sifat berlawanan. Kehilangan 'koordinator membawa seluruh kelompok berhenti grinding, tapi selama itu berjalan, dapat membuat keputusan tanpa mengganggu orang lain.

Keanggotaan Grup
Ketika komunikasi kelompok hadir, beberapa metode diperlukan untuk membuat dan menghapus kelompok, serta untuk memungkinkan proses untuk bergabung dan meninggalkan kelompok. Salah satu pendekatan yang mungkin adalah untuk memiliki sebuah server kelompok yang semua permintaan dapat mengirim ke server kelompok kemudian dapat mempertahankan basis data lengkap dari semua kelompok dan keanggotaan mereka dengan tepat Metode ini sangat mudah, efisien, dan mudah diimplementasikan Sayangnya, itu saham kerugian yang besar dengan semua teknik terpusat, satu titik kegagalan .
Mungkin sebagian besar atau semua kelompok harus direkonstruksi dari awal, mungkin tenninating pekerjaan apapun yang terjadi. Pendekatan yang berlawanan adalah untuk mengelola keanggotaan grup dalam cara didistribusikan. Untuk Misalnya, jika (handal) multicasting tersedia, orang luar bisa mengirim mes ~ bijak untuk semua anggota kelompok mengumumkan keinginannya untuk bergabung dengan grup Idealnya, untuk meninggalkan kelompok, anggota  hanya mengirimkan pesan selamat tinggal kepada setiap orang. Dalam konteks toleransi kesalahan, dengan asumsi gagal-stop semantik umumnya tidak tepat. Masalahnya adalah, tidak ada pengumuman sopan bahwa proses crash karena ada adalah ketika proses meninggalkan secara sukarela Para anggota lain harus menemukan eksperimental ini dengan memperhatikan. bahwa anggota jatuh tidak lagi merespon apa-apa. Setelah dipastikan bahwa anggota benar-benar jatuh ke bawah (dan bukan hanya lambat), dapat dihapus dari grup.
Masalah rumit adalah bahwa meninggalkan dan bergabung harus sinkron dengan pesan data yang dikirim Dengan kata lain, mulai instan bahwa proses telah bergabung dengan kelompok, ia harus menerima semua pesan yang dikirim ke grup tersebut. Demikian pula, segera setelah proses telah meninggalkan grup, tidak harus menerima pesan lagi dari grup , dan anggota lain tidak boleh menerima pesan lagi adalah Salah satu cara untuk memastikan bahwa bergabung atau meninggalkan terintegrasi ke dalam aliran pesan di tempat yang tepat adalah untuk mengubah operasi ini menjadi urutan pesan yang dikirim ke seluruh kelompok. Satu Edisi terakhir yang berkaitan dengan keanggotaan kelompok adalah apa yang harus dilakukan jika mesin begitu banyak turun bahwa kelompok tidak dapat lagi berfungsi sama sekali. Beberapa protokol dibutuhkan untuk membangun kembali kelompok. lnvatiably, beberapa proses akan harus mengambil inisiatif untuk memulai Bola bergulir, tetapi apa yang terjadi jika dua atau tiga mencoba pada saat yang sama?, Protokol harus untuk mampu menahan ini.

7.2.2 Kegagalan Masking dan kelompok Replikasi
Proses adalah bagian dari solusi untuk membangun toleransi kegagalan sistem. Secara khusus, memiliki sekelompok proses yang identik memungkinkan kita untuk menutupi satu atau lebih proses yang salah dalam kelompok itu. Dengan kata lain, kita bisa meniru proses dan mengatur mereka ke dalam kelompok untuk mengganti proses (rentan) tunggal dengan kelompok (fault tolerant). Sebagaimana dibahas dalam bab sebelumnya, ada dua cara untuk mendekati replikasi tersebut: dengan cara primer berbasis protokol, atau melalui direplikasi-menulis protokol. Sebuah replikasi Primer berbasis dalam kasus toleransi kesalahan umumnya muncul dalam bentuk protokol utama-backup. Dalam hal ini, sekelompok proses adalah pengatur dalam mode hirarkis di mana primer mengkoordinasikan semua operasi menulis.
Dalam praktek utama adalah tetap, meskipun perannya dapat diambil alih oleh salah satu backup, jika perlu. Akibatnya, ketika crash utama, backup menjalankan beberapa algoritma pemilu untuk memilih dasar yang baru. Seperti yang kami jelaskan dalam bab sebelumnya, direplikasi-menulis protokol yang digunakan dalam bentuk replikasi aktif, serta melalui daerah berbasis protokol. Solusi ini sesuai dengan mengorganisir koleksi proses identik ke dalam kelompok datar. Keuntungan utama adalah bahwa kelompok-kelompok tersebut tidak memiliki titik tunggal kegagalan, pada biaya koordinasi terdistribusi. Sebuah isu penting dengan menggunakan kelompok proses untuk mentolerir kesalahan, adalah bagaimana replikasi banyak dibutuhkan. Untuk menyederhanakan diskusi kita, mari kita perhatikan hanya direplikasi-menulis sistem. 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 + l dari mereka sudah cukup untuk memberikan toleransi kesalahan k. Jika k dari mereka hanya berhenti, maka jawaban dari yang lain dapat digunakan. Di sisi lain, jika proses menunjukkan kegagalan Bizantium, terus berjalan ketika sakit dan mengirimkan balasan yang keliru atau acak, minimal 2k + l pro-cessors diperlukan untuk mencapai toleransi kesalahan k. Dalam kasus terburuk, proses k gagal sengaja bisa (atau bahkan sengaja) menghasilkan jawaban yang sama. Namun, k + l yang tersisa juga akan menghasilkan jawaban yang sama, sehingga klien atau pemilih hanya bisa percaya mayoritas.
 Tentu saja, dalam teori itu baik-baik saja untuk mengatakan bahwa sistem adalah k fault tolerant dan hanya membiarkan k + 1 balasan identik mengalahkan dlm pemilihan yang Ini balasan identik, tetapi dalam prakteknya sulit untuk membayangkan keadaan di mana seseorang dapat mengatakan dengan pasti bahwa k proses dapat gagal tetapi k + l proses yang tidak bisa gagal. Pun demikian dalam sistem fault-tolerant beberapa jenis analisis statistik mungkin diperlukan. Sebuah prasyarat implisit untuk model ini menjadi relevan adalah bahwa semua permintaan tiba di semua server dalam urutan yang sama, juga disebut masalah multicast atom. Sebenarnya, kondisi ini bisa santai sedikit, karena membaca tidak penting dan beberapa menulis perjalanan mungkin, tapi masalah umum tetap. Multicasting atom dibahas secara rinci pada bagian selanjutnya.

 7.2.3 Perjanjian dalam Sistem Faulty
Pengorganisasian proses direplikasi ke kelompok membantu untuk meningkatkan toleransi kesalahan. Seperti yang telah disebutkan, jika klien dapat mendasarkan keputusan melalui mekanisme voting, kita bahkan bisa mentolerir k yang keluar dari 2k l proses + yang berbohong tentang hasil mereka. Asumsi kita membuat, bagaimanapun, adalah bahwa proses tidak membentuk tim untuk produce hasil yang salah. Secara umum, hal-hal menjadi lebih rumit jika kita menuntut bahwa kelompok proses mencapai kesepakatan. Perjanjian diperlukan dalam banyak kasus. Beberapa contoh adalah: pemilihan koordinator, memutuskan apakah atau tidak untuk melakukan transaksi, membagi tugas di antara pekerja, dan sinkronisasi.
Ketika komunikasi dan proses semua sempurna, mencapai kesepakatan tersebut sering langsung, tetapi ketika mereka tidak, masalah timbul. Tujuan umum dari algoritma kesepakatan terdistribusi adalah untuk memiliki semua non »rusak proses mencapai konsensus pada beberapa masalah, dan untuk membentuk konsensus yang dalam setiap langkah jumlah terbatas. Kasus yang berbeda mungkin tergantung pada parameter sistem, termasuk apakah atau tidak komunikasi dapat diandalkan, atau kecelakaan-kegagalan semantik untuk proses. Sebelum mempertimbangkan kasus proses rusak, mari kita lihat kasus "mudah" proses yang sempurna, tetapi di mana jalur komunikasi bisa kehilangan pesan Ada masalah yang terkenal, yang dikenal sebagai masalah dua tentara, yang menggambarkan culty diffi-mendapatkan bahkan dua proses yang sempurna untuk mencapai kesepakatan tentang sedikit  informasi.
Tentara merah, dengan 5000 tentara, yang berkemah di sebuah lembah. Dua tentara biru, masing-masing 3000 yang kuat, yang berkemah di lereng bukit yang menghadap ke lembah sekitarnya. Jika dua tentara biru dapat mengkoordinasikan serangan mereka pada tentara merah, mereka akan menang. Namun, jika salah satu serangan dengan sendirinya akan disembelih. Tujuan dari tentara biru adalah untuk mencapai kesepakatan tentang menyerang. Menangkap adalah bahwa mereka hanya dapat berkomunikasi menggunakan saluran tidak dapat diandalkan: mengirim seorang utusan yang dikenakan untuk menangkap oleh tentara merah. Misalkan bahwa komandan biru tentara l, Jenderal Alexander, mengirimkan pesan itu kepada komandan biru, tentara 2 Jenderal Bonaparte, membaca: "Saya memiliki serangan rencana-mari kita besok subuh".  Utusan mendapat melalui dan Bonaparte mengirimkan dia kembali dengan catatan yang mengatakan: "Ide Splendid, Alex. Sampai jumpa di fajar tomor-baris "utusan akan kembali ke markasnya aman., Memberikan pesan-pesannya, dan Alexander mengatakan pasukan h.is untuk mempersiapkan pertempuran di fajar.
Namun, hari itu, Alexander menyadari bahwa Bonaparte tidak tahu apakah utusan kembali aman dan tidak mengetahui hal ini. tidak mungkin berani untuk menyerang. Con-sequently, Alexander mengatakan utusan untuk pergi memberitahu bahwa Bonaparte (Bonaparte) pesannya tiba dan bahwa pertempuran diatur. Sekali lagi utusan mendapat melalui dan memberikan pengakuan. Tapi sekarang Bonaparte khawatir bahwa Alexander tidak tahu apakah mengakui-ment berhasil melewati. Dia alasan bahwa jika Bonaparte berpikir bahwa utusan itu cap-terstruktur, ia tidak akan yakin tentang (Alexander) rencananya, dan tidak mungkin risiko serangan, sehingga ia mengirimkan utusan kembali lagi. Bahkan jika utusan itu membuatnya melalui setiap waktu, mudah untuk menunjukkan bahwa Alexander dan Bonaparte tidak akan pernah mencapai kesepakatan, tidak peduli berapa banyak ucapan terima kasih mereka kirimkan. 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 adalah Off.
 Namun, pengirim pesan terakhir tidak tahu apakah pesan terakhir tiba. Jika tidak, protokol tidak lengkap dan umum lainnya tidak akan menyerang. Dengan demikian pengirim pesan terakhir tidak bisa tahu apakah perang dijadwalkan atau tidak, dan karenanya tidak dapat dengan aman melakukan pasukannya. Sejak penerima yang terakhir mes-bijak tahu pengirim tidak dapat memastikan, ia tidak akan risiko kematian baik, dan 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 sempurna tapi proses tidak. Masalah klasik di sini juga terjadi dalam pengaturan militer dan IS disebut masalah jenderal Bizantium.
Dalam masalah ini tentara merah masih berkemah di lembah, tapi n biru jenderal tentara kepala semua di bukit dekatnya. Komunikasi dilakukan berpasangan melalui telepon dan seketika dan sempurna, namun m dari gen-erals 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 umumnya diasumsikan untuk mengetahui berapa banyak tentara yang ia miliki. Tujuan dari masalah adalah para jenderal untuk kekuatan pasukan pertukaran, sehingga pada akhir algoritma, setiap umum memiliki vektor dengan panjang n sesuai dengan tentara alllthe. Jika umum saya setia, maka elemen i adalah kekuatan pasukannya, jika tidak, rt ls terdefinisi.  Sebuah algoritma rekursif ditemukan oleh Lamport et al. (1982) yang memecahkan masalah ini dalam kondisi tertentu. Dalam Gambar. 7-4 kami menggambarkan kerja algoritma untuk kasus rt = 4 dan m = 1. Untuk parameter ini, algoritma beroperasi dalam empat langkah. Dalam langkah pertama, umumnya setiap mengirim pesan (handal) untuk setiap umum lainnya mengumumkan kekuatan pasukannya. Jenderal Loyal memberitahu irllih, pengkhianat dapat memberitahu setiap umum lainnya kebohongan yang berbeda.
Dalam Gambar. 7-4 (a) kita melihat bahwa gen-eral 1 laporan pasukan 1K, general 2 laporan pasukan 2K, general 3 terletak untuk semua orang, memberikan x, y, dan z, masing-masing, dan umum 4 laporan pasukan 4K. Pada langkah 2, hasil pengumuman dari l langkah dikumpulkan bersama-sama dalam bentuk vektor Gambar.
 Gambar 7-4. Para jenderal Masalah Bizantium selama tiga jenderal yang setia dan satu pengkhianat. (A) Para jenderal mengumumkan n-oop mereka kekuatan (dalam satuan 1 kiloso1-diet). (B) vektor yang umum setiap merakit didasarkan pada (a). (C) The vee-lors bahwa umum masing-masing menerima pada langkah 3.
Langkah 3 terdiri dari setiap jenderal lewat vektor nya dari Gambar. 7-4 (b) untuk setiap umum lainnya. Umum masing-masing mendapat tiga vektor, satu dari setiap umum lainnya. Di sini juga, general 3 terletak melalui giginya, menciptakan nilai-nilai baru l2, melalui l. Hasil dari langkah 3 ditunjukkan pada Gambar. 7-4 (0). Akhirnya, pada langkah 4, setiap ujian umum. ines elemen i dari masing-masing vektor baru diterima. Jika nilai apapun memiliki mayoritas, nilai yang dimasukkan ke dalam vektor hasil. Jika tidak ada nilai memiliki mayoritas, elemen yang sesuai dari hasil vektor ditandai UNKNOWN. Dari Gambar. 7. 4 (c) kita melihat bahwa jenderal l, 2, dan 4 semua datang ke kesepakatan tentang
(l, 2, UNKNOWN, 4)
yang merupakan hasil yang benar. Pengkhianat tidak dapat merusak informasi dari para jenderal yang setia, ia tidak mampu mengotori karya. Sekarang mari kita kembali masalah ini untuk n = 3 dan m = l, yaitu, hanya dua jenderal yang setia dan satu pengkhianat, seperti yang diilustrasikan pada Gambar. 7-5. Di sini kita melihat bahwa pada Gambar. 7-5 (c) netther jenderal yang setia melihat mayoritas untuk elemen 1, elemen 2, 3 atau elemen, sehingga semua dari mereka ditandai UNKNOWN. Algoritma telah gagal menghasilkan kesepakatan.
Gambar 7-5 Sama seperti Gambar.. 7-4, kecuali sekarang dengan dua jenderal yang setia dan satu pengkhianat.

Dalam tulisan mereka, Lamport et al. (I982) membuktikan bahwa dalam suatu sistem dengan proses m rusak , kesepakatan dapat dicapai hanya jika 2m + l Pf benar Kami Prfiselll untuk total 3m +. 1. Taruh dalam istilah yang sedikit berbeda, setuju-pemerintah hanya mungkin jika lebih dari dua-pertiga dari proses bekerja den-gan benar Cara lain untuk melihat masalah ini, adalah sebagai berikut Pada dasarnya. apa yang kita butuhkan untuk mencapai suara mayoritas adalah di antara sekelompok jenderal yang setia terlepas dari apakah ada pengkhianat di antara arepalso tengah penggunaan mereka.. Jika ada m pengkhianat, kita perlu memastikan bahwa suara mereka, bersama dengan itu dari 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 mensyaratkan kesepakatan yang mencapai hanya jika lebih dari dua-pertiga suara yang sama. Dengan kata lain, jika lebih dari dua pertiga Yl menyetujui keputusan yang sama, keputusan ini sesuai dengan suara yang sama mayority oleh sekelompok jenderal yang setia.
Sayangnya, mencapai kesepakatan dapat menjadi lebih buruk. Fischer et al. (1985) membuktikan bahwa dalam sistem terdistribusi di mana pesan tidak dapat dijamin akan disampaikan dalam waktu, dikenal terbatas, tidak ada kesepakatan yang mungkin jika bahkan satu pro-cess rusak (meskipun jika proses satu gagal diam-diam) Masalah dengan seperti sistem-sistem adalah bahwa proses sewenang-wenang lambat yang bisa dibedakan dari yang jatuh.. Banyak hasil teoritis lain yang dikenal tentang kapan perjanjian adalah mungkin dan ketika itu . tidak Survei dari hasil ini diberikan dalam (Barborak et al, 1993;. dan Turek dan Shasha, 1992).


7.3 DIANDALKAN CLIENT-SERVER KOMUNIKASI
Dalam banyak kasus, toleransi kesalahan dalam sistem terdistribusi berkonsentrasi pada proses rusak Namun, kita juga perlu. untuk 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 kegagalan kecelakaan dan kelalaian kegagalan Sewenang-wenang dapat terjadi dalam bentuk pesan duplikat, hasil dari kenyataan bahwa dalam pesan jaringan komputer dapat buffer untuk waktu yang relatif lama, dan reinjected ke jaringan setelah pengirim asli telah mengeluarkan. retransmisi (lihat, misalnya, Tanenbaum, 1996).

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

7.3 Reliable Client-Server Communication(By Uswatun Hasanah)
·         ReliableClient-ServerKomunikasi:
Toleransi kesalahandalam sistem terdistribusi juga perlu mempertimbangkankegagalan komunikasi. Sebuahsaluran komunikasimungkin menunjukkankecelakaan, kelalaian, waktudan kegagalansewenang-wenang. Ketika membangunsalurankomunikasi yang handal, fokusnya adalah padakecelakaanmaskingdan kegagalankelalaian.



7.3.1  Point-to-Point Komunikasi
Dalam sistem terdistribusi,komunikasipoint-to-point yang dapat diandalkan didirikan dengan memanfaatkan protokol transportasi yang dapat diandalkan,seperti TCP.TCP masker kegagalan kelalaian,yang terjadi dalam bentuk pesan yang hilangdengan menggunakan pengakuan danre-transmisi kegagalan tersebut benar-benar tersembunyi dari klien TCP.

7.3.2 Client-ServerKomunikasi melaluiRPC
Tujuan dari RPC adalah untuk menyembunyikan komunikasi dengan membuat prosedur panggilan jarak jauh terlihat seperti orang lokal.

kesalahan-kesalahan yang biasa terjadi pada RPC komunikasi
·         Klien tidak bisa menemukan server
·         Permintaan klien hilang
·         Server crash
·         Respon server hilang
·         Crash klien

o   Klien tidak bisa menemukan server
Server mungkin turun atau versi ketidaksesuaian antara klien dan server. Sebuah solusi yang mungkin adalah memiliki kesalahan meningkatkan pengecualian.
o   Kehilangan Pesan Permintaan
Biarkan OS atau klien memulai timer saat mengirim permintaan. Jika timer berakhir sebelum balasan datang kembali, pesan dikirim lagi.
o   Gangguan Server
Urutan normal operasi ditunjukkan pada gambar(a). Permintaan tiba, dilaksanakan, dan balasan dikirim.Sekarang perhatikan gambar (b). Server crash sebelum dapat mengirim balasan.Pada gambar(c) server crash sebelum bahkan dapat dilakukan.


Keterangan gambar a
o   Kehilangan Permintaan Pesan Server Crashes:
Sebuah server dalam komunikasi client-server
a)kasus normal
b) Kecelakaan setelah eksekusi
c) Kecelakaan sebelum eksekusi

keterangan gambar B
(b) sistem harus melaporkan kegagalan kembali ke klien. Sedangkan dalam

Keterangan gambar
(c), klien dapat hanya mengirimkan kembali permintaan. Tapi masalah nya adalah bahwa OS klien tidak dapat membedakan antara dua kasus. Semua ia tahu adalah bahwa timer telah berakhir.

7.4 KOMUNIKASi KELOMPOK TERPERCAYA
7.4.1 Dasar Skema Handal-Multicasting

           
Meskipun sebagian besar lapisan transportasi menawarkan saluran point-to-point yang dapat diandalkan, mereka jarang menawarkan komunikasi yang handal untuk koleksi proses. Yang terbaik yang bisa mereka tawarkan adalah untuk membiarkan setiap proses mengatur koneksi point-to-point untuk setiap proses lain ingin berkomunikasi dengan. Jelas, organisasi semacam ini sangat tidak efisien karena dapat membuang-buangbandwidth jaringan. Namun demikian, jika jumlah proses yang kecil, mencapai keandalan melalui berbagai saluran point-to-point yang dapat diandalkan adalah solusi sederhana dan sering mudah ,Datang ke titik ini, kita perlu mendefinisikan secara tepat apa multicasting diandalkan. Secara intuitif, itu berarti bahwa pesan yang dikirim ke grup proses harus dikirimkan kepada setiap anggota grup itu. Namun, apa yang terjadi jika selama com-munication proses bergabung dengan kelompok? Haruskah proses yang juga menerima pesan bijak? Demikian juga, kita juga harus menentukan apa yang terjadi jika sebuah proses (pengiriman) crash selama komunikasi Untuk menutupi situasi seperti ini, perbedaan harus dibuat antara com handal communication di hadapan proses rusak, dan komunikasi dapat diandalkan ketika proses diasumsikan untuk beroperasi dengan benar. Dalam kasus pertama, multicasting adalah considered menjadi dapat diandalkan ketika dapat dijamin bahwa semua anggota kelompok nonfaulty
menerima pesan itu. Bagian yang sulit adalah bahwa kesepakatan harus dicapai pada apa yang sebenarnya seperti sebelum pesan dapat disampaikan, selain berbagai kendala memesan kelompok.

Kita kembali ke hal-hal ini ketika membahas multicast atom di bawah ini.Situasi menjadi lebih sederhana jika kita asumsikan ada pada kesepakatan yang merupakan anggota kelompok. Secara khusus, jika kita mengasumsikan bahwa proses tidak gagal, dan proses tidak bergabung atau meninggalkan grup sementara komunikasi yang terjadi, multicasting.simply handal berarti bahwa setiap pesan harus disampaikan kepada setiap anggota kelompok saat ini. Dalam kasus yang paling sederhana, tidak ada persyaratan bahwa semua kelompok anggota menerima pesan dalam urutan yang sama, tapi kadang-kadang fitur ini diperlukan.

'ini bentuk yang lebih lemah dari multicasting handal relatif mudah untuk menerapkan pro ¬ vided lagi jumlah penerima terbatas. Pertimbangkan kasus yang satu pengirim ingin multicast pesan ke beberapa penerima. Asumsikan bahwa di bawah  berbaring sistem komunikasi hanya menawarkan diandalkan









(a)  Message transmission

  (b) Reporting feedback


            Sebuahsolusi sederhanaditunjukkan padaGambar-. 7-8. Prosespengirimanmemberikan nomorurut untuk setiappesan yangmulticast. Kami berasumsibahwa pesan yangditerima dalam urutanmereka akan dikirim. Dengan cara ini, mudah bagipenerimauntuk mendeteksifile tersebut tidak adapesan. Setiap pesanmulticastdisimpan secara lokaldalam buffersejarah dipengirim. Dengan asumsipenerimadiketahuipengirim, pengirim hanya membuatpesandalam buffersejarahsampai setiappenerimatelah kembalipengakuan. Jikapenerimamendeteksihilangpesan, mungkin kembalipengakuannegatif,memintapengirim untukretransmisi.
Alternatif masing,pengirimdapat secara otomatismemancarkan kembalipesanketikabelum menerimasemuapengakuandalam kurun waktu tertentu.Ada berbagaidesaintrade-offyang akan dibuat. Misalnya, untukmengurangijumlah pesan yangdikembalikan ke pengirim, pengakuanmungkin bisapiggybackeddengan pesanlainnya. Juga, mentransmisipesandapat dilakukan dengan menggunakankomunikasipoint-to-point untuksetiap prosesmeminta, ataumenggunakan pesanmulticasttunggal,dikirim kesemua proses. Untuk keterangan lebih lanjut, lihat, misalnya, Chang danMaxumchuk(1984)

7.4.2 Skalabilitas di Multicasting Handal.

           
Masalah utama dengan skema multicast handal yang baru saja dijelaskan adalah bahwa ia tidak dapat mendukung sejumlah besar penerima. Jika ada penerima N, pengirim harus siap untuk menerima setidaknya N ucapan terima kasih. Dengan banyak penerima, pengirim dapat dibanjiri dengan pesan umpan balik tersebut, yang juga disebut sebagai ledakan umpan balik. Selain itu, kami juga mungkin perlu mempertimbangkan bahwa receiver yang tersebar di seluruhwide-area network. Salah satu solusi untuk masalah ini adalah untuk tidak memiliki penerima mengakui penerimaan pesan. Sebaliknya, penerima mengembalikan pesan umpan balik hanya untuk menginformasikan pengirim tersebut tidak ada pesan. Kembali hanya pengakuan negatif seperti dapat ditunjukkan umumnya skala yang lebih baik (lihat, misalnya, Towsley dkk., 1997), tetapi tidak ada jaminan keras dapat diberikan bahwa implosions umpan balik tidak akan pernah terjadi.

           
Masalah lain dengan kembali hanya pengakuan negatif adalah bahwa pengirim akan, secara teori, dipaksa untuk menjaga pesan dalam buffer sejarah selamanya. Karena pengirim tidak pernah tahu apakah pesan telah dikirimkan ke semua penerima, harus selalu siap untuk penerima meminta retransmission pesan lama. Dalam prakteknya, pengirim akan menghapus pesan darinya penyangga tory setelah beberapa waktu telah berlalu untuk mencegah buffer dari meluap. Namun demikian, menghapus pesan dilakukan pada risiko permintaan untuk pengiriman ulang tidak dihormati.Beberapa usulan untuk multicasting diandalkan scalable ada. Perbandingan antara skema yang berbeda dapat ditemukan dalam (Levine dan Garcia-Luna-Aceves, 1998).

Mengikuti pendapat Hadzilacos dan Toueg, dan Chandra dan Toueg kita dapat mendefinisikan reliable multicast. Sebuah reliable multicast memiliki properti seperti: integrity, validity, agreement.

a.     Implementasi Reliable Multicast Terhadap B-multicast

Algoritma ini cocok diterapkan pada asynchronus sistem, tapi tidak cocok diterapkan pada tujuan praktis. Hal ini dikarenakan stiap pesan mengirim |g| kali untuk tiap proses.

b.     Reliable Multicast terhadap IP Multicast

Realisasi alternatif R-multicast adalah menggunakan kombinasi IP multicast. Protokol R-multicast ini berdasar pada IP multicast. Pada protokol proses tidak mengirim pesan ack secara terpisah, melainkan pada sebuah grup.

c.     Properti Seragam

Properti apapun yang menahan apakah proses benar atau tidak dinamakan uniform property. Pemahaman uniform sendiri yaitu: jika sebuah proses, tidak peduli benar atau tidak, mengirim pesan m, kemudian semua proses yang benar pada group(m) akan secepatnya mengirim m.




7.6 RECOVERY(By Abdul Muthalib)
Bagian tak terpisah dari sistem basisdata adalah skema pemulihan (recovery). Pemulihhan bertanggung-jawab terhadap pendeteksian kegagalan dan mengembalikan basis data ke keadaan konsisten sebelum terjadinyya kegagalan.
Untuk pemulihan ini diperlukan suatu atomamsitas. Atomasitas adalah “all or none”. Yaitu suatu barisan inntruksi hharuus dilaksanakan seluruhnya atau tidak sama sekali. Transaksi adalah sekumpulan operasi yang melakukan satu fungsi logic tunggal dalam aplikasi basis data. Transaksi adalah satu unit atomisitas. Dengan adanyapendefenisian atomisitas inni maka ppenjagaan basisdata dengan cara memulihkan basisdata atomisitas.
Algooritma untuk menjamin konsisitensi basis data dan atomisitas transaksi melelwati kegagalann, yaitu ;
·        Aksi-aksi yang harus dilakukan selama pemrosesan transaksi yang menjamin kecukupan informasi untuk memungkinkan pemulihan dari kegagalan.
·        Aksi-aksi setelah kkegagalan untuk menjamin konsistensi basisdata dan atomisitas transaksi.
A.     Tipe Kegagalan
Terdapat beragam tipe kegagalan antara lain
1.    kesalahan logik
transaksi tidak dapat dilanjutkan secara normal karena terdapat suatu konndisi internal seperti masukan yang salah, data tidak ditemukan. Overflow, atau batasan summber daya terlampaui.
2.    kesalahan system.
System memasuki keadaan yang tak diaharapkan seperti deadlock yang menyebabkan transaksi tidak dilanjutkan secara normal. Transaksi masih dapat dieksekusi kemabali di waktu mendatang.
3.    system crash
terjadinya ketidak berfungsian system yang menyebabkan hilangnya isi penyimpanan utama. Isi dari penyimpanan permanent masih tetap.
4.    kegaglan disk
memori terbagi mennjadi tiga kelompok, yaitu;
-      memori utama (volatile memory)
informaasi yang bebrada dimemori utama tidak dapat bertahann bila terjadi crash pada system. Pengaksesan ke memori ini adalah sangat cepat dann memungkinkan pengaksesan secara langsung
-      penyimpanan sekunder (non volatilestorage)
informasi yang berada dipenyimpanan ini biasanya dapat bertahan saat terjadi crash pada system.
-      penyimpanan stabil (stabil storage)
informasi yang berada dippenyimmpanan ini tida pernah (berpeluang kecil) hilang. Implementasi yang dilakukan adalah merreplekasi informasi diibeberapa penyimpanan sekunder dengan suatu cara yang terkendali bagus. Asumsi adanya pennyimpanan stabil ini sangat ppentin. Implementasi penyimpanan stabil adalah mereplikasi informasi yang diperlukan dibebrapa media penyimpanan permanen(biasanya hardisk) dengan beragam mode kegagalan yang independen dan memperbaharui informasi secara terkendali agar menjamin bahwa kegagalan yang terjadi selama transfer data tidak merusak informasi yang diperlukan

B.     Teknik Mengatasi kegagalan Disk
Kegagalan disebabkan penyimpanan permanent adalah jarang terjadi. Meskipun demikian perlu dipersiapkan untuk mengatasi kejadian kegagalan ini. Teknik utama untuk mengatasi ini adalah backup atau dump.
Kegagalan pada media disebabkan data di disk hhilang karena terkorupsi sewaktu sisitem crash atau penulisan acak atau karena rusaknya head dari disk. Kalau kejadian ini berlangsung , kita dapat memperoleh data dari penyimpanan stabil (yang berpeluang kecil gagal karena dilakukan secara mirrored disks, atau mempunyai banyak kopian dibanyak lokasi jaringan).
Data yang disimpan dipenyimpanan stabil adalah data itu sendiri dan file log. Kapan arsip yang konnsisten sulit dilakukan karena berarti harus menghentikan semua transaksi untuk perekaman kopian arsip. Pendekatan yang lebih baik adalah teknik“fuzzy dump” yaitu perekaman dilakukan secara asinkron selagi aktivitas transaksi berlangsung dilakukan secara konkuren sebagai aktivitas background.
Skema dasar untuk mengatasai adalah backup seluruh isi basisdata ke penyimpan stabil (stabile storage) secara periodic. Penyimpan stabil adalah penyimpan yang tak pernah kehilangan isinya.
Transfer blok antara memori dan penyimpan disk dapat menghasilkan beberapa kemungkinan hasil berikut :
1.    sukses seluruhnya
informasi yang ditransfer tiba dengan selamat ditujuan
2.    terjadi kegagalan persial
kegagalan. terjadi ditengah-tengah transfer dan blok tujuan memuat informasi yang salah.
3.    terjadi kegagalan total
kegagalan terjadi diawal transfer sehingga blok tujuan tidak berubah.
Sistem harus dapat mendeteksi terjadinya kegagalan transfer data dan melakukan prosedur pemulihan untuk mengembalikan blok ke keadaan konsisten . untuk melakukan hal ini, system harus mengelola dua blok fisik untuk tiap blok basisdata logik. Operasi penulisan sebagai berikut :
1.    tulis informasi ke blok fisik pertama.
2.    saat penulisan pertama sukses secara lengkap, tulis informasi yang sama ke blok fisik kedua.
3.    penlisan dinyatakan sukses secara hanya setelah penulisan kedua suksses secara lengkap.

7.6.1 INTRODUCTION
Penyebab Kerusakan
Data yang disimpan di basis data harus dijaga dan dilindungi dari :
1.    Pengaksesan dari orang yang tak mempunyai wewenang.
2.    Penghancuran yang disengaja.
3.    Terjadinya ikonsistensi.
Kerusakan basisdata dapat disebabkan oleh kesengajaan atau bencana (yang tak disengaja)
Kerusakan yang tidak disengaja antara lain disebabkan oleh :
1.    Sistem crash saat terjadi pengolahan transaksi.
2.    Anomali-anomali disebabkan pengaksesan konkuren terhadap basisdata.
3.    Anomali-anomali disebabkan penyebaran data pada beberapa komputer.
4.    kesalahan logik yang melanggar asumsi mengenai batasan-batasan konsisten basisdata.
Bentuk-bentuk pengaksesan jahat yang disengaja antara lain :
1.    Pembacaan data oleh orang yang tidak diotorisasi (pencurian informasi).
2.    Moodifikasi data oleh orang yang tidak diotorisasi.
3.    penghancuran data oleh orang yang tidak diotorisasi.
         Perbaikandarikesalahan
        Ada fasilitasperbaikanatau proses ulangsaatsebuah server mengalamikerusakan
         Kerangkapan
        Fasilitasuntukmentoleransikerusakandapatmengakibatkankerangkapankomponen :
         Mungkinkarenamenggunakanduasaluran yang berbedadiinternet
         Dalam DNS, setiaptabelnamaselaluada di dua server berbeda
         Sebuah database mungkinduplikasi di server berbedauntukmeyakinkan data yang sebenarnyasetelahterjadikerusakan di suatu server
         Ketersediaan
        Ketikasebuahkomponenrusakdalam DS, hanyapekerjaan yang sedangdiproseskomponen yang mungkinrusak
        Seorang user mungkinbergantikomputersetelahmengalamikerusakan
        Sebuah proses dapatdijalankandarikomputerberbeda
Prosedur pemulihan
Selama pemulihan , masing-masing pasangan blok fisik diperiksa. Jika keduanya sama dan tidak terdeteksi kesalahan , maka tak ada aksi yang dilakukan. Jika salah satu blok terdeteksi kesalahan, maka gantikan isisnya dengan blok yang tak terdeteksi kesalahan. Jika kedua blok tak terdeteksi kesalahan tapi berada maka gantikan blok pertama dengan nilai blok kedua.

7.6.2 CHECKPOINTING
Pemulihan dengan checkpoint
Saat terjadi kegagalan system, maka diperlukan mengkonsultasi log untuk menetukan transaksi-transaksi yang perlu dijalankan kembali dan transaksi-trsansaksi yang perlu dijalankan kembali dan transaksi-transaksi yang tak perlu dijalankan ulang. Seluruhlog perlu ditelusuri untuk menetukan hal ini. Terdapat dua kesulitan dengan pendekatan ini :
·         Proses pencairan memerlukan banyak waktu.
·         Kebanyakan transaksi yang perlu dilakukan telah dituliskan ke basisdata. Meskipun menjalankan ulang transaksi-transaksi itu tidak merusak, tapi pemulihan menjadi lebih lama.

Meruduksi overhead ini diperlukan checkpoint.
System  mengelolah log menggunakan salah satu teknik-teknik diatas.
Sistem secara periodik membuat checkpoint sebagai berikut :
·         Tulis semua rekaman log yang saat itu berada dimemori utama kepenyimpan stabil.
·         Tulis semua blok buffer yang telah dimodifikasi ke disk.
·         Tulis <checkpoint> record log ke penyimpan stabil.

7.6.3 MESSAGE LOGGING
Pemulihan berbasis log
Bentuk yang paling sering digunakan untuk merekan memodifikasi yang dilakukan terhadap basis data adalah log. Rekaman log mendeskripsikan satu penulisan ke basis data dan memiliki field-field berikut :
1.    Nama transaksi
Nama transaksi untuk yang melakukan operasi penulisan.
2.    Nama item data
Nama item data unik yang di tulis
3.    Nilai nama
Nilai item data sebelum penulisan
4.    Nilai baru
Nilai item data yang seharusnya terjadi setelah penulisan.
Prosedur pemulihan
Setelah kegagalan maka basis data dikembalikan ke keadaan terakhir yang di backup. Kemudian barisan transaksi setelah backup terakhir yang tercatat di log di eksekusi ulang.






















DAFTAR PUSTAKA
eBook-Tanenbaum-Distsributed System







1 komentar:

  1. Betfair Casino Review - Bonuses & Promotions - Online
    Betfair 슈어벳먹튀 Casino bonuses. 토토배당률보기 Betfair Casino gives you 호반 그래프 a 비트코인갤러리 free bonus to sign up and play with a huge range of 화이트 벳 slots and table games, which are

    BalasHapus