Sự khác biệt giữa độ bền và khả năng chịu lỗi là gì?


12

Các hệ thống / chương trình / thuật toán phân tán / ... thường được mô tả với biến vị ngữ mạnh hoặc chịu lỗi .

Sự khác biệt là gì?


Chi tiết:

Khi tôi google cho + mạnh mẽ + "chịu lỗi", tôi chỉ nhận được hai lần truy cập, cả hai đều không có ích.

Khi tôi googlescholar cho các điều khoản, tôi tìm thấy rất nhiều giấy tờ có cả hai điều khoản trong tiêu đề của họ. Thật không may, họ không xác định chính xác các thuật ngữ :( Nhưng vì họ sử dụng cả hai thuật ngữ, nên dường như không có nghĩa nào khác.



Vâng, đó là một trong những điều đầu tiên tôi đọc để tìm hiểu ý nghĩa của chúng. Thật không may, cả hai đều mô tả cùng một điều ở mức độ trừu tượng, trong khi không đề cập đến điều khác. Đó là lý do tại sao tôi hỏi ở đây.
DaveFar

Câu trả lời:


33

Cả hai đều mô tả tính nhất quán của hành vi của ứng dụng, nhưng "độ mạnh" mô tả phản ứng của ứng dụng với đầu vào của ứng dụng , trong khi "khả năng chịu lỗi" mô tả phản ứng của ứng dụng với môi trường của ứng dụng .

Một ứng dụng mạnh mẽ khi nó có thể hoạt động ổn định với dữ liệu không nhất quán. Ví dụ: một ứng dụng bản đồ rất mạnh khi có thể phân tích địa chỉ theo các định dạng khác nhau với nhiều lỗi sai chính tả và trả về một vị trí hữu ích. Trình phát nhạc mạnh mẽ khi có thể tiếp tục giải mã MP3 sau khi gặp phải khung không đúng định dạng. Trình chỉnh sửa hình ảnh mạnh mẽ khi nó có thể sửa đổi hình ảnh với siêu dữ liệu EXIF ​​được nhúng mà nó có thể không nhận ra - đặc biệt là nếu nó có thể thay đổi hình ảnh mà không làm hỏng dữ liệu EXIF.

Một ứng dụng có khả năng chịu lỗi khi nó có thể hoạt động ổn định trong môi trường không nhất quán. Một ứng dụng cơ sở dữ liệu có khả năng chịu lỗi khi nó có thể truy cập vào một phân đoạn thay thế khi không có sẵn bản chính. Một ứng dụng web có khả năng chịu lỗi khi nó có thể tiếp tục xử lý các yêu cầu từ bộ đệm ngay cả khi máy chủ API không thể truy cập được. Một hệ thống con lưu trữ có khả năng chịu lỗi khi nó có thể trả về kết quả được tính từ tính chẵn lẻ khi một thành viên đĩa ngoại tuyến.

Trong cả hai trường hợp, ứng dụng được dự kiến ​​sẽ duy trì ổn định, hoạt động đồng đều, bảo toàn tính toàn vẹn dữ liệu và cung cấp kết quả hữu ích ngay cả khi gặp lỗi. Nhưng khi đánh giá độ mạnh, bạn có thể tìm thấy các tiêu chí liên quan đến dữ liệu, trong khi khi đánh giá khả năng chịu lỗi, bạn sẽ tìm thấy các tiêu chí liên quan đến thời gian hoạt động.

Người này không nhất thiết phải dẫn đến người khác. Một ứng dụng nhận dạng giọng nói trên thiết bị di động có thể rất mạnh mẽ, cung cấp khả năng kỳ lạ để nhận dạng giọng nói một cách nhất quán trong nhiều giọng nói khu vực với lượng nhiễu nền lớn. Nhưng nếu nó vô dụng nếu không có kết nối dữ liệu di động nhanh, thì nó không có khả năng chịu lỗi. Tương tự, một ứng dụng xuất bản web có thể chịu lỗi rất lớn, với nhiều mức dự phòng ở mọi cấp độ, có khả năng mất toàn bộ trung tâm dữ liệu mà không bị lỗi, nhưng nếu nó làm rơi bảng người dùng và gặp sự cố khi lần đầu tiên ai đó đăng ký dấu nháy đơn , nó không mạnh mẽ chút nào.

Nếu bạn đang tìm kiếm tài liệu học thuật để giúp mô tả sự khác biệt, bạn có thể tìm trong các lĩnh vực cụ thể sử dụng phần mềm, thay vì nói chung là phần mềm. Nghiên cứu ứng dụng phân tán có thể là mảnh đất màu mỡ cho các tiêu chí chịu lỗi và Google đã công bố một số nghiên cứu của họ có thể có liên quan. Nghiên cứu mô hình hóa dữ liệu có khả năng giải quyết các câu hỏi về độ mạnh, vì các nhà khoa học đặc biệt quan tâm đến các tính chất của độ mạnh mang lại kết quả có thể lặp lại. Bạn có thể tìm thấy các bài báo mô tả các ứng dụng thống kê có thể hữu ích, như trong mô hình khí hậu, mô hình lan truyền RF hoặc giải trình tự bộ gen. Bạn cũng sẽ tìm thấy các kỹ sư thảo luận về "thiết kế mạnh mẽ" trong những thứ như hệ thống điều khiển.

Bảng trắng của Hệ thống tệp Google mô tả cách tiếp cận của họ đối với các vấn đề về khả năng chịu lỗi, thường liên quan đến các giả định rằng lỗi thành phần là thường xuyên và do đó ứng dụng phải thích ứng với chúng:

Dự án này cho một lớp học tại Rutgers hỗ trợ định nghĩa "lỗi thành phần" theo định hướng "khả năng chịu lỗi":

  • http : //www.ece.rutgers.edu/ ~ các thành phần bị lỗi hoặc che giấu các thành phần thất bại cho người dùng ")

Có rất nhiều bài viết về "mô hình hóa XYZ mạnh mẽ", tùy thuộc vào lĩnh vực bạn điều tra. Hầu hết sẽ mô tả các tiêu chí của họ về "mạnh mẽ" trong bản tóm tắt và bạn sẽ thấy tất cả đều liên quan đến cách mô hình xử lý đầu vào.

Bản tóm tắt này từ một nhà khoa học khí hậu của NASA mô tả sự mạnh mẽ là một tiêu chí để đánh giá các mô hình khí hậu:

Bài viết này của một nhà nghiên cứu MIT kiểm tra các ứng dụng giao thức không dây, một miền trong đó có khả năng chịu lỗi và độ mạnh chồng chéo, nhưng các tác giả sử dụng "mạnh mẽ" để mô tả các ứng dụng, giao thức và thuật toán, trong khi chúng sử dụng "khả năng chịu lỗi" liên quan đến cấu trúc liên kết và các thành phần:


0

Tôi thực sự thích câu trả lời của @ johnnyb và tán thành nó vì những định nghĩa rõ ràng. Nhưng đã làm việc trong lĩnh vực này trong một vài thập kỷ, tôi nhận ra một cách khác (ít chính thức và chính xác hơn) mà các thuật ngữ này thường được sử dụng:

Là những điểm không chính thức dọc theo sự liên tục từ "không đáng tin cậy" đến "hoàn toàn đáng tin cậy".

Không có hệ thống, ứng dụng hoặc dịch vụ nào có thể đảm bảo nó sẽ luôn luôn tồn tại và mãi mãi hoạt động ("có sẵn liên tục" hoặc "có sẵn vĩnh viễn"). "Chịu lỗi" từ lâu đã trở thành một điểm nhấn cho "chúng tôi đã làm mọi thứ có thể với công nghệ hiện tại để đảm bảo rằng thứ này tiếp tục chạy đúng."

Những từ như "mạnh mẽ", "cứng lại" và "khả dụng cao" được sử dụng như những cột mốc nhẹ nhàng hơn cho mục tiêu hoạt động liên tục đó. Chúng phản ánh mức độ nỗ lực, đầu tư và tự tin ngày càng tăng.

Bởi vì các điều khoản này được sử dụng không chính thức, không có thứ tự hoàn toàn chính tắc. "Khả dụng cao" thường là một yêu cầu mạnh mẽ, chỉ dưới "khả năng phục hồi lỗi" hoặc "khả năng chịu lỗi". Nhưng "cứng" có tốt hơn "mạnh" không? Hoặc ngược lại? Nó phụ thuộc vào ngữ cảnh. Đây cũng thường được sử dụng như tuyên bố tiếp thị sản phẩm, với tất cả sự thiếu tự tin và cố ý đòi hỏi.

Thông thường các tổ chức làm việc hướng tới các mục tiêu này có sự tiến triển theo thỏa thuận nội bộ của riêng họ, thường ít nhất là liên kết gần như với các mục tiêu / sản phẩm dự án và các số liệu bên ngoài như "ba số tiền" hoặc "sáu số tiền".

@johnnyb cũng chạm vào một điểm khác biệt quan trọng: Sự khác biệt giữa trạng thái lên / xuống của nền tảng (tính khả dụng) trên một mặt và mặt khác là thuật toán, ứng dụng hoặc thuộc tính dịch vụ.

Tôi nói "thuộc tính" bởi vì có rất nhiều: hiệu suất, tính chính xác và tính không bị xáo trộn chỉ là một vài yếu tố chính. Là một hệ thống có sẵn và chính xác nếu nó hoạt động chỉ ở mức 10% hiệu suất được xếp hạng? Không theo chủ doanh nghiệp nếu đó là mùa bận rộn! Không có đức tính tuyệt vời trong một hệ thống thực sự không bao giờ đi xuống, nhưng điều đó cũng cho câu trả lời không chính xác trong phần lớn thời gian. Cuối cùng, hệ thống phân tích dữ liệu có chạy "đúng" không nếu biến đổi 0,2% trong đầu vào cho câu trả lời khác nhau 3.400%? Có lẽ ... nhưng nó sẽ có vẻ là một mô hình khá thất thường và không hài lòng với nhiều người. Tôi sẽ không xem qua danh sách các thuộc tính mở rộng, nhưng tính toàn vẹn dữ liệu, an toàn dữ liệu, quyền riêng tư dữ liệu và các vấn đề khác về tính chính xác và bảo mật là những mối quan tâm phổ biến. (Nếu bạn là một tổ chức hoặc cơ quan chính phủ rất lớn, bạn ngày càng lo lắng về việc bảo tồn các thuộc tính đó không chỉ trong một vài năm hoặc chu kỳ sản phẩm, mà qua các thập kỷ hoặc thậm chí có thể hàng thế kỷ. Vẫn chưa có kiến ​​trúc, quy trình hoặc phương pháp tiếp cận nào được chứng minh để thực hiện điều này.)

Những phương sai có thể có giữa "lên và chạy" và "làm những gì chúng ta muốn" - và cách xác định, đo lường và ngăn chặn những phương sai đó - từ lâu đã là một thách thức, ngay cả khi dư thừa, làm cứng và các bước khác đối với lỗi- khoan dung đã được thực hiện. Và trong việc sử dụng không chính thức, "chạy" và các hình thức "chạy như tôi muốn" được kết hợp lại, không có sự phân biệt rõ ràng mà người ta muốn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.