Sağlamlık ve hata toleransı arasındaki fark nedir?


12

Sistemler / programlar / dağıtılmış algoritmalar / ... genellikle yüklem sağlam veya hataya dayanıklı olarak tanımlanır .

Fark ne?


Detaylar:

+ Dayanıklı + "hataya dayanıklı" için Google'ı kullandığımda, her ikisi de yararsız olan iki isabet alırım.

Terimler için googlescholar olduğunda, başlıklarında her iki terimi de içeren birçok makale bulurum. Ne yazık ki, terimleri tam olarak tanımlamıyorlar :( Ancak her iki terimi de kullandıkları için, ikisi de diğerini ima etmiyor gibi görünüyor.



Evet, anlamlarını bulmak için okuduğum ilk şeylerden biriydi. Ne yazık ki, her ikisi de aynı şeyi soyut bir düzeyde tarif ederken, diğerine atıfta bulunmadan tanımlar. Bu yüzden burada soruyorum.
DaveFar

Yanıtlar:


33

Her ikisi de bir uygulamanın davranışının tutarlılığını tanımlar, ancak "sağlamlık" bir uygulamanın girdisine yanıtını açıklarken "hataya dayanıklılık" bir uygulamanın ortamına yanıtını açıklar .

Bir uygulama tutarsız verilerle tutarlı bir şekilde çalışabiliyorsa sağlamdır. Örneğin: çeşitli yanlış yazımlarla adresleri çeşitli biçimlerde ayrıştırabildiğinde ve faydalı bir konum döndürdüğünde bir haritalar uygulaması sağlamdır. Bir müzik çalar, hatalı biçimlendirilmiş bir çerçeveyle karşılaştıktan sonra MP3'ün kodunu çözmeye devam edebildiğinde sağlamdır. Bir görüntü düzenleyici, tanımayabileceği gömülü EXIF ​​meta verileri içeren bir görüntüyü değiştirebildiğinde sağlamdır - özellikle de EXIF ​​verilerini bozmadan görüntüde değişiklik yapabiliyorsa.

Bir uygulama tutarsız bir ortamda tutarlı bir şekilde çalıştığında hataya dayanıklıdır. Bir veritabanı uygulaması, birincil kullanılabilir olmadığında alternatif bir kırığa erişebiliyorsa hataya dayanıklıdır. Web uygulaması, bir API ana makinesine erişilemese bile önbellekten gelen istekleri işlemeye devam edebildiğinde hataya dayanıklıdır. Depolama altsistemi, bir disk üyesi çevrimdışı olduğunda pariteden hesaplanan sonuçları döndürebildiğinde hataya dayanıklıdır.

Her iki durumda da, uygulamanın bir sorunla karşılaşsa bile kararlı kalması, düzgün davranması, veri bütünlüğünü koruması ve faydalı sonuçlar vermesi beklenir. Ancak, sağlamlığı değerlendirirken, verileri içeren kriterleri, hata toleransını değerlendirirken, çalışma süresini içeren kriterleri bulacaksınız.

Biri mutlaka diğerine yol açmaz. Bir mobil ses tanıma uygulaması çok sağlam olabilir ve çok çeşitli arka plan gürültüsü olan çeşitli bölgesel aksanlarda konuşmayı tutarlı bir şekilde tanımak için inanılmaz bir yetenek sağlar. Ancak hızlı hücresel veri bağlantısı olmadan işe yaramazsa, hataya dayanıklı değildir. Benzer şekilde, bir web yayınlama uygulaması son derece hataya dayanıklı olabilir, her düzeyde birden fazla fazlalık vardır, tüm veri merkezlerini başarısız olmadan kaybedebilir, ancak bir kullanıcı tablosunu düşürdüğünde ve birisinin soyadında bir kesme işareti ile ilk kez kaydolduğunda çökebilir , hiç de sağlam değil.

Ayrımı açıklamaya yardımcı olacak bilimsel literatür arıyorsanız, genel olarak yazılımdan ziyade yazılımdan yararlanan belirli alanlara bakabilirsiniz. Dağıtılmış uygulama araştırmaları, hataya dayanıklılık kriterleri için verimli bir zemin olabilir ve Google, ilgili olabilecek bazı araştırmalarını yayınlamıştır. Veri modelleme araştırması büyük olasılıkla sağlamlık sorunlarına yöneliktir, çünkü bilim adamları özellikle tekrarlanabilir sonuçlar veren sağlamlığın özellikleriyle ilgilenmektedir. Muhtemelen iklim modellemesi, RF yayılım modellemesi veya genom dizilemesinde olduğu gibi, yararlı olabilecek istatistiksel uygulamaları açıklayan kağıtlar bulabilirsiniz. Ayrıca kontrol sistemleri gibi şeylerde "sağlam tasarım" ı tartışan mühendisler de bulacaksınız.

Google Dosya Sistemi tanıtım belgesi, genellikle bileşen hatalarının rutin olduğu ve dolayısıyla uygulamanın bunlara uyum sağlaması gerektiği varsayımlarını içeren hata toleransı sorunlarına yaklaşımlarını açıklar:

Rutgers'daki bir sınıf için bu proje, "hata toleransı" nın "bileşen-başarısızlık" yönelimli bir tanımını desteklemektedir:

Araştırdığınız alana bağlı olarak "sağlam XYZ modellemesi" üzerine çok sayıda makale bulunmaktadır. Birçoğu özette "sağlam" kriterlerini açıklayacak ve her şeyin modelin girdi ile nasıl başa çıktığı ile ilgili olduğunu göreceksiniz.

Bir NASA iklim bilim insanından alınan bu özet, sağlamlığı iklim modellerini değerlendirmek için bir kriter olarak açıklamaktadır:

Bir MIT araştırmacısının bu makalesi, hataya dayanıklılık ve sağlamlığın çakıştığı bir etki alanı olan kablosuz protokol uygulamalarını inceler, ancak yazarlar uygulamaları, protokolleri ve algoritmaları tanımlamak için "sağlam" kullanırken topolojiye referansta "hata toleransı" kullanırlar ve bileşenler:


0

@ Johnnyb'in cevabını gerçekten seviyorum ve net tanımları için onaylıyorum. Ancak birkaç on yıl boyunca sahada çalıştıktan sonra, bu terimlerin sıkça kullanıldığı başka (daha az resmi ve kesin) bir yol biliyorum:

Gayri resmi olarak "güvenilmez" den "mükemmel güvenilirliğe" kadar bir süre boyunca.

Her zaman ve sonsuza dek çalışacağını garanti edebilecek hiçbir sistem, uygulama veya hizmet yoktur ("sürekli kullanılabilir" veya "kalıcı olarak kullanılabilir"). "Hataya dayanıklı" uzun zamandır "bu teknolojinin düzgün bir şekilde çalıştığından emin olmak için mevcut teknolojiyle insanca mümkün olan her şeyi yaptık."

"Sağlam", "sertleştirilmiş" ve "yüksek oranda kullanılabilir" gibi kelimeler, bu sürekli çalışma hedefine doğru daha yumuşak kilometre taşları olarak kullanılır. Artan çaba, yatırım ve güven düzeylerini yansıtırlar.

Bu terimler gayri resmi olarak kullanıldığından, tamamen kanonik bir düzen yoktur. "Yüksek oranda kullanılabilir" genellikle "hataya dayanıklı" veya "hataya dayanıklı" ın hemen altında güçlü bir iddiadır. Peki "sertleştirilmiş" "sağlam" dan daha mı iyidir? Ya da tam tersi? Bu koşullara bağlıdır. Bunlar aynı zamanda ürün pazarlaması iddiaları olarak sıklıkla kullanılır ve tüm övünme ve kasıtlı belirsizlikler içerir.

Genellikle bu hedeflere yönelik çalışan kuruluşların kendi içinde kararlaştırılmış ilerlemeleri vardır, genellikle en azından kabaca proje hedefleriyle / çıktılarıyla ve "üç dokuz" veya "altı dokuz" gibi harici metriklerle bağlantılıdır .

@johnnyb ayrıca kritik bir ayırım üzerinde durur: Bir yandan platform yukarı / aşağı durumu (kullanılabilirlik) ile diğer yandan algoritma, uygulama veya hizmet özellikleri arasındaki fark.

"Nitelikler" diyorum çünkü çok şey var: performans, doğruluk ve dengesizlik sadece birkaç önemli özellik. Bir sistem, nominal performansın yalnızca% 10'unda çalışıyorsa anlamlı bir şekilde mevcut ve doğru mu? Yoğun sezon ise işletme sahiplerine göre değil! Bir sistemde hiçbir zaman gerçekten düşmeyen büyük bir erdem yoktur, ancak bu çoğu zaman yanlış cevaplar verir. Son olarak, girdideki% 0.2'lik bir değişim% 3.400 farklı bir yanıt veriyorsa, bir veri analizi sistemi "doğru" çalışıyor mu? Belki ... ama birçoğu için oldukça kaprisli ve tatmin edici olmayan bir model gibi görünecektir. Genişletilmiş öznitelik listesini gözden geçirmeyeceğim, ancak veri bütünlüğü, veri güvenliği, veri gizliliği ve diğer doğruluk ve güvenlik sorunları yaygın endişelerdir. (Çok büyük bir kuruluş veya devlet kurumuysanız, bu nitelikleri sadece birkaç yıl veya ürün döngüleri boyunca değil, onlarca yıl veya hatta yüzyıllar boyunca korumak konusunda giderek daha fazla endişeleniyorsunuz. Bunu başarmak için henüz kanıtlanmış mimariler, süreçler veya yaklaşımlar yoktur.)

"Çalıştırmak ve çalıştırmak" ile "istediğimizi yapmak" - ve bu tür varyansların nasıl belirleneceği, ölçüleceği ve önleneceği arasındaki bu olası varyanslar, fazlalık, sertleşme ve hataya yönelik diğer adımlar bile, tolerans alınmıştır. Ve gayri resmi kullanımda, "koşmak" ve "istediğim gibi koşmak" gibi çeşitli biçimler, bir kişinin istediği tüm net ayrımlar olmaksızın sınırlıdır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.