Hacker News

Discord: กรณีศึกษาเกี่ยวกับการเพิ่มประสิทธิภาพการทำงาน

Discord: กรณีศึกษาเกี่ยวกับการเพิ่มประสิทธิภาพการทำงาน การวิเคราะห์ความไม่ลงรอยกันที่ครอบคลุมนี้นำเสนอการตรวจสอบโดยละเอียดเกี่ยวกับแกนหลัก — Mewayz Business OS

1 นาทีอ่าน

Mewayz Team

Editorial Team

Hacker News

Discord: กรณีศึกษาในการเพิ่มประสิทธิภาพการทำงาน

เส้นทางการเพิ่มประสิทธิภาพประสิทธิภาพของ Discord เป็นหนึ่งในตัวอย่างที่ให้ความรู้มากที่สุดในด้านวิศวกรรมซอฟต์แวร์สมัยใหม่ ซึ่งแสดงให้เห็นว่าแพลตฟอร์มสามารถขยายขนาดจากผู้ใช้หลายพันคนไปจนถึงผู้ใช้หลายร้อยล้านคนโดยไม่ต้องเสียสละความเร็วหรือความน่าเชื่อถือ ด้วยการตรวจสอบการตัดสินใจทางวิศวกรรมของ Discord ตั้งแต่การย้ายฐานข้อมูลไปจนถึงสถาปัตยกรรมการส่งข้อความแบบเรียลไทม์ ธุรกิจต่างๆ สามารถดึงกลยุทธ์ที่ได้รับการพิสูจน์แล้วสำหรับการสร้างแพลตฟอร์มที่ทำงานภายใต้แรงกดดันได้

กลไกหลักใดที่ส่งผลต่อประสิทธิภาพของ Discord ในวงกว้าง?

โครงสร้างพื้นฐานของ Discord สร้างขึ้นบนปรัชญาของการแลกเปลี่ยนทางวิศวกรรมโดยเจตนา เดิมทีสร้างขึ้นบน Python และ MongoDB แพลตฟอร์มนี้ประสบปัญหาคอขวดอย่างรวดเร็วเนื่องจากฐานผู้ใช้ระเบิด ทีมวิศวกรได้ทำการตัดสินใจทางสถาปัตยกรรมที่สำคัญ: ย้ายจากสแต็กเสาหินไปสู่สถาปัตยกรรมที่มุ่งเน้นการบริการ ซึ่งช่วยให้ส่วนประกอบแต่ละส่วนสามารถปรับขนาดได้อย่างอิสระ

หัวใจสำคัญของประสิทธิภาพของ Discord คือการใช้เครื่องเสมือน Elixir และ Erlang BEAM สำหรับเลเยอร์การส่งข้อความแบบเรียลไทม์ BEAM VM สร้างขึ้นโดยมีจุดประสงค์เพื่อระบบที่ทำงานพร้อมกันและทนทานต่อข้อผิดพลาด ซึ่งเป็นสิ่งที่แพลตฟอร์มจัดการข้อความหลายพันล้านข้อความต่อวันต้องการ ในขณะเดียวกัน เลเยอร์ API ของ Discord ก็ถูกเขียนใหม่ในที่สุดด้วยภาษา Rust ซึ่งนำเสนอความปลอดภัยของหน่วยความจำและประสิทธิภาพที่เกือบจะเป็นศูนย์ซึ่ง Python ไม่สามารถเทียบเคียงได้ในวงกว้าง

ผลลัพธ์ที่ได้คือระบบที่การเชื่อมต่อ WebSocket พร้อมกันนับล้านรายการได้รับการดูแลโดยมีเวลาส่งข้อความต่ำกว่า 50 มิลลิวินาที แม้ในช่วงที่มีการใช้งานสูงสุด นี่ไม่ใช่อุบัติเหตุ แต่เป็นผลของการทำโปรไฟล์แบบวนซ้ำ การระบุปัญหาคอขวด และการเขียนซ้ำแบบกำหนดเป้าหมายของส่วนประกอบของระบบที่เครียดที่สุด

Discord แก้ไขคอขวดฐานข้อมูลที่โด่งดังที่สุดได้อย่างไร?

หนึ่งในความท้าทายทางวิศวกรรมที่ได้รับการเปิดเผยต่อสาธารณะมากที่สุดของ Discord นั้นเกี่ยวข้องกับ Cassandra ซึ่งเป็นฐานข้อมูลแบบกระจายที่ใช้ในการจัดเก็บประวัติข้อความ เมื่อแพลตฟอร์มเติบโตขึ้น เวลาแฝงในการอ่านก็ลดลงอย่างมาก ไม่ใช่เพราะ Cassandra เป็นตัวเลือกที่ไม่ดี แต่เป็นเพราะรูปแบบการใช้งานของ Discord เปลี่ยนแปลงไปโดยพื้นฐาน พาร์ติชั่นแบบฮอตซึ่งจำนวนการอ่านที่ไม่สมส่วนมุ่งเน้นไปที่โหนดข้อมูลเฉพาะ ทำให้เกิดการชะลอตัวที่ไม่อาจคาดเดาได้

การตอบสนองของทีมวิศวกรคือการโยกย้ายครั้งสำคัญไปยัง ScyllaDB ซึ่งเป็นฐานข้อมูลที่เข้ากันได้กับ Cassandra ที่เขียนด้วยภาษา C++ การย้ายข้อมูลลดเวลาแฝงในการอ่าน p99 จาก 40–125ms เหลือเพียงมิลลิวินาทีหลักเดียวในกรณีส่วนใหญ่ ที่สำคัญกว่านั้นคือลดความซับซ้อนในการดำเนินงานในการจัดการคลัสเตอร์ ทำให้ทรัพยากรด้านวิศวกรรมมีอิสระในการมุ่งเน้นไปที่การพัฒนาคุณสมบัติมากกว่าการดับเพลิงโครงสร้างพื้นฐาน

💡 คุณรู้หรือไม่?

Mewayz ทดแทนเครื่องมือธุรกิจ 8+ รายการในแพลตฟอร์มเดียว

CRM · การออกใบแจ้งหนี้ · HR · โปรเจกต์ · การจอง · อีคอมเมิร์ซ · POS · การวิเคราะห์ แผนฟรีใช้ได้ตลอดไป

เริ่มฟรี →

"การเพิ่มประสิทธิภาพการทำงานที่ดีที่สุดไม่ได้มีความซับซ้อนทางเทคนิคมากที่สุดเสมอไป แต่เป็นสิ่งที่ช่วยลดความซับซ้อนในขณะเดียวกันก็จัดการกับปัญหาคอขวดที่ก่อให้เกิดความเจ็บปวดแก่ผู้ใช้โดยตรง" — หลักการที่ได้รับการตรวจสอบโดยเรื่องราวการย้ายฐานข้อมูลของ Discord

กรณีนี้แสดงให้เห็นถึงบทเรียนที่สำคัญสำหรับแพลตฟอร์มที่กำลังเติบโต: เครื่องมือที่เหมาะสมสำหรับการเติบโตขั้นหนึ่งอาจกลายเป็นเครื่องมือที่ผิดสำหรับขั้นถัดไป การเปรียบเทียบอย่างต่อเนื่องและความเต็มใจที่จะโยกย้ายไม่ใช่สัญญาณของการวางแผนที่ไม่ดี แต่เป็นสัญญาณของวุฒิภาวะทางวิศวกรรม

ธุรกิจสามารถนำไปใช้บทเรียนการใช้งานจริงอะไรบ้าง

เส้นทางการปรับให้เหมาะสมของ Discord ไม่ได้เป็นเพียงทฤษฎีเท่านั้น แต่ได้สร้างชุดแนวทางปฏิบัติที่สามารถทำซ้ำได้ซึ่งใช้ได้กับธุรกิจที่ขับเคลื่อนด้วยซอฟต์แวร์ ประเด็นที่นำไปปฏิบัติได้มากที่สุด ได้แก่:

โปรไฟล์ก่อนการเพิ่มประสิทธิภาพ: Discord ระบุปัญหาคอขวดที่แน่นอนอย่างสม่ำเสมอผ่านการวัดมากกว่าการสันนิษฐาน ป้องกันการสูญเสียความพยายามในเส้นทางที่ไม่สำคัญ

เลือกภาษาที่เน้นการทำงานพร้อมกันเป็นอันดับแรกสำหรับปริมาณงานที่ใช้ I/O จำนวนมาก: การย้ายไปยัง Elixir เพื่อการกำหนดเส้นทางข้อความช่วยลดค่าใช้จ่ายของ CPU ได้อย่างมากเมื่อเทียบกับรุ่นเธรดต่อการเชื่อมต่อ

แยกพื้นที่เก็บข้อมูลออกจากการประมวลผล: ด้วยการแยกพื้นที่เก็บข้อมูลข้อความออกจากเลเยอร์การจัดส่งแบบเรียลไทม์ Discord ช่วยให้แต่ละเลเยอร์สามารถปรับขนาดได้อย่างอิสระตามรูปแบบการโหลดเฉพาะ

ยอมรับการโยกย้ายที่เพิ่มขึ้นผ่านการเขียนซ้ำครั้งใหญ่: ระบบที่สำคัญ

Build Your Business OS Today

From freelancers to agencies, Mewayz powers 138,000+ businesses with 207 integrated modules. Start free, upgrade when you grow.

Create Free Account →

ลองใช้ Mewayz ฟรี

แพลตฟอร์มแบบออล-อิน-วันสำหรับ CRM, การออกใบแจ้งหนี้, โครงการ, HR และอื่นๆ ไม่ต้องใช้บัตรเครดิต

เริ่มจัดการธุรกิจของคุณอย่างชาญฉลาดวันนี้

เข้าร่วมธุรกิจ 30,000+ ราย แผนฟรีตลอดไป · ไม่ต้องใช้บัตรเครดิต

พบว่าสิ่งนี้มีประโยชน์หรือไม่? แบ่งปันมัน

พร้อมนำไปปฏิบัติแล้วหรือยัง?

เข้าร่วมธุรกิจ 30,000+ รายที่ใช้ Mewayz แผนฟรีตลอดไป — ไม่ต้องใช้บัตรเครดิต

เริ่มต้นทดลองใช้ฟรี →

พร้อมที่จะลงมือทำหรือยัง?

เริ่มต้นทดลองใช้ Mewayz ฟรีวันนี้

แพลตฟอร์มธุรกิจแบบครบวงจร ไม่ต้องใช้บัตรเครดิต

เริ่มฟรี →

ทดลองใช้ฟรี 14 วัน · ไม่ต้องใช้บัตรเครดิต · ยกเลิกได้ทุกเมื่อ