ฉันได้ยินมามากมายเกี่ยวกับคำนี้
ตัวอย่างเช่น ,
"An application server should gracefully degrage when it is under heavy load "
"Graceful degradation of user interfaces.... "
คำดูเหมือนนามธรรมสำหรับฉัน ตัวอย่างที่เป็นรูปธรรมของความหมายคืออะไร?
ฉันได้ยินมามากมายเกี่ยวกับคำนี้
ตัวอย่างเช่น ,
"An application server should gracefully degrage when it is under heavy load "
"Graceful degradation of user interfaces.... "
คำดูเหมือนนามธรรมสำหรับฉัน ตัวอย่างที่เป็นรูปธรรมของความหมายคืออะไร?
คำตอบ:
นี่คือตัวอย่างบางส่วน:
แอปพลิเคชันที่มีโหมด "เสื่อมโทรม" โดยทั่วไปจะให้การเข้าถึงชุดคุณลักษณะที่ จำกัด เนื่องจากปัญหาภายในหรือภายนอก ตัวอย่างเช่นสมมติว่าแอปพลิเคชันของคุณเชื่อมต่อกับแหล่งข้อมูลสองแหล่ง หากหนึ่งในสิ่งเหล่านี้ล้มเหลวอาจเป็นไปได้ที่มันจะยังคงทำงานต่อไป แต่จะปิดการใช้งานคุณสมบัติภาพ (หรือ / และแบ็กเอนด์) ทั้งหมดที่เกี่ยวข้องกับทรัพยากรที่ไม่มีอยู่
ตัวอย่างที่เป็นรูปธรรม: แอปพลิเคชันของคุณมีแหล่งข้อมูลสองแหล่งโดยหนึ่งในนั้นคือที่เก็บบุคคลในที่อื่น ๆ ที่คุณเก็บบัญชี แม้ว่าฐานข้อมูลบัญชีจะล้มเหลวหากแอปพลิเคชันมีโหมดเสื่อมโทรมคุณควรจะสามารถสร้างบุคคลใหม่ได้แม้ว่าจะไม่ได้โต้ตอบกับบัญชีของพวกเขา
สำหรับอินเทอร์เฟซผู้ใช้โดยทั่วไปหมายความว่าคุณระบุอย่างชัดเจนถึงผู้ใช้ว่าคุณลักษณะบางอย่างถูกปิดใช้งานและแสดงข้อความเตือนบางอย่างเพื่อให้เขาไม่ถูกทิ้งให้อยู่ในที่มืดเพราะเหตุใดบางสิ่งจึงไม่พร้อมใช้งาน
นอกจากนี้ยังมีรายการที่วิกิพีเดียที่เกี่ยวข้องกับระบบป้องกันความผิดพลาด
ด้วยความก้าวหน้าทางเทคโนโลยีเราจึงมีการเปลี่ยนแปลงอยู่เสมอในแอปพลิเคชันซึ่งผู้ชมเป้าหมายอาจไม่ได้รับการสนับสนุนตลอดเวลา ในสถานการณ์เช่นนี้เราพบกับความเสื่อมโทรมที่สง่างามซึ่งเลียนแบบสิ่งที่เราสร้างขึ้นเพื่อการใช้งานที่ดีที่สุด แต่เราก็ล้มเหลวอย่างปลอดภัยสำหรับผู้ที่ไม่ได้อัพเกรดหรือระบบของพวกเขาอาจไม่สนับสนุน
ตัวอย่างที่สำคัญอย่างหนึ่งคือ<img>แท็กที่มีaltคุณลักษณะที่มีประโยชน์สำหรับกรณีที่รูปภาพถูกปิดกั้นหรือปิดอยู่ตอนนี้สิ่งเหล่านี้จะให้บริบทที่มีความหมายสำหรับรูปภาพ (แน่นอนเฉพาะเมื่อเราระบุ)
อีกตัวอย่างหนึ่งที่ฉันสามารถนึกถึงสไตล์ชีทได้ในกรณีที่มีข้อผิดพลาดหรือไม่พร้อมใช้งานเบราว์เซอร์จะมีเวอร์ชันทั่วไปของตัวเองเพื่อแสดง / แสดงหน้าเว็บ
ตอนนี้เมื่อคุณพูดถึงภาระหนักคุณจะต้องวางแผนอย่างรอบคอบเพื่อพิจารณาว่าจะต้องทำอย่างไรถ้าการโจมตีของคุณยิงเกินขีด จำกัด คุณต้องปิดการใช้งานคุณสมบัติบางอย่างหรือระงับบริการบางอย่างที่ไม่สำคัญ ทั้งหมดนี้จะช่วยให้คุณตั้งค่าการลดระดับอย่างสง่างามเพื่อให้ผู้ใช้ทราบเนื่องจากสิ่ง x ที่เซิร์ฟเวอร์อาจใช้เวลาในการตอบสนองหรือบริการ x จะไม่พร้อมใช้งานเป็นเวลาหนึ่งชั่วโมงหรือมากกว่านั้น
หมายความว่าเมื่ออินพุตและสถานะเกินขีด จำกัด การออกแบบเอาต์พุตยังคงสมเหตุสมผลและน่าเชื่อถือที่สุด
หากเป็นเซิร์ฟเวอร์ที่ออกแบบมาเพื่อจัดการการเชื่อมต่อพร้อมกัน 100 รายการมันจะไม่ผิดพลาดหรือเริ่มส่งคืนผลลัพธ์ที่บ้าคลั่งที่ 101 หรือ 150 การเชื่อมต่อ - จะช้าลงหรืออาจลดลงเล็กน้อยการเชื่อมต่อ แต่ส่วนใหญ่ยังคงทำงานต่อไป ถ้ามันเป็นฐานข้อมูลที่ออกแบบมาเพื่อจัดการกับ 1 พันล้านรายการมันจะไม่ทำให้สถานะที่ใช้ไม่ได้อยู่ที่ 1.01 พันล้านช้าลง
หากคุณไม่มีระบบกราฟิก (เช่นไม่มีเซิร์ฟเวอร์ X11 ที่ทำงาน) โปรแกรมของคุณควรมี CLI เป็นอย่างน้อยเช่น ncurses
vi มีโหมด dumb ซึ่งทำงานเหมือน ex หากเทอร์มินัลมีคุณสมบัติน้อยเกินไป
เมื่อสร้างแอปพลิเคชันเว็บที่มีการลดระดับลงอย่างสวยงามเมื่อเว็บไซต์ของคุณใช้ JavaScript หรือ Flash หรือเทคนิคที่คล้ายกันซึ่งผู้ใช้ไม่ได้ปิดใช้งาน
จากนั้นคุณควรจะให้ฟังก์ชั่นพื้นฐานบางอย่างกับ HTML เท่านั้นหรืออย่างน้อยข้อความว่าทำไมเว็บไซต์ไม่ทำงานตามที่คาดไว้