การเปิดตัว Dragonfly 1.0 ซึ่งเป็นระบบแคชข้อมูลในหน่วยความจำ

ระบบแคชและจัดเก็บข้อมูลในหน่วยความจำ Dragonfly เปิดตัวแล้ว ซึ่งจัดการข้อมูลในรูปแบบคีย์/ค่า และสามารถใช้เป็นโซลูชันน้ำหนักเบาสำหรับการเร่งการทำงานของไซต์ที่มีการโหลดสูง การแคชการสืบค้นที่ช้าไปยัง DBMS และข้อมูลระดับกลางใน RAM Dragonfly รองรับโปรโตคอล Memcached และ Redis ซึ่งช่วยให้คุณใช้ไลบรารีไคลเอนต์ที่มีอยู่และถ่ายโอนโปรเจ็กต์โดยใช้ Memcached และ Redis ไปยัง Dragonfly โดยไม่ต้องแก้ไขโค้ด

เมื่อเปรียบเทียบกับ Redis แล้ว Dragonfly มีประสิทธิภาพเพิ่มขึ้น 2 เท่า (6 ล้านคำขอต่อวินาที) สำหรับปริมาณงานทั่วไปในสภาพแวดล้อม Amazon EC16 c25gn.3.8xlarge เมื่อเปรียบเทียบกับ Memcached ในสภาพแวดล้อม AWS c6gn.16xlarge แล้ว Dragonfly สามารถดำเนินการคำขอเขียนได้มากขึ้น 4.7 เท่าต่อวินาที (3.8 ล้านต่อ 806) และคำขออ่านเพิ่มขึ้น 1.77 เท่าต่อวินาที (3.7 ล้านต่อ 2.1 ล้าน)

การเปิดตัว Dragonfly 1.0 ซึ่งเป็นระบบแคชข้อมูลในหน่วยความจำ

ในการทดสอบการจัดเก็บข้อมูลขนาด 5 GB Dragonfly ต้องการหน่วยความจำน้อยกว่า Redis ถึง 30% เมื่อสร้างสแนปชอตด้วยคำสั่ง "bgsave" การใช้หน่วยความจำจะเพิ่มขึ้น แต่ในช่วงเวลาสูงสุดจะยังคงน้อยกว่าใน Redis เกือบสามเท่าและการดำเนินการบันทึกสแน็ปช็อตนั้นเร็วกว่ามาก (ในการทดสอบสแน็ปช็อตใน Dragonfly เขียนใน 30 วินาทีในขณะที่ Redis - ใน 42 วินาที)

การเปิดตัว Dragonfly 1.0 ซึ่งเป็นระบบแคชข้อมูลในหน่วยความจำ

ประสิทธิภาพสูงเกิดขึ้นได้ด้วยสถาปัตยกรรมแบบมัลติเธรดที่ไม่มีการแชร์ทรัพยากร (ไม่แชร์อะไรเลย) ซึ่งหมายความว่าแต่ละเธรดจะได้รับการจัดสรรโปรเซสเซอร์แยกกันโดยมีส่วนของข้อมูลเป็นของตัวเอง โดยทำงานโดยไม่มี mutexes และ spin lock เพื่อให้แน่ใจว่าเป็นอะตอมมิกเมื่อทำงานกับหลายคีย์ จึงมีการใช้การล็อค VLL แบบน้ำหนักเบา เพื่อจัดเก็บข้อมูลในหน่วยความจำอย่างมีประสิทธิภาพ จึงมีการใช้โครงสร้าง dashtable ซึ่งใช้ประเภทของตารางแฮชที่แบ่งพาร์ติชัน

คุณสมบัติบางอย่างของแมลงปอ:

  • โหมดแคชซึ่งจะแทนที่ข้อมูลเก่าด้วยข้อมูลใหม่โดยอัตโนมัติหลังจากหน่วยความจำว่างหมด
  • รองรับการเชื่อมโยงข้อมูลตลอดอายุการใช้งานซึ่งถือว่าข้อมูลมีความเกี่ยวข้อง
  • รองรับการล้างสถานะการจัดเก็บข้อมูลไปยังดิสก์ในพื้นหลังเพื่อการกู้คืนในภายหลังหลังจากรีสตาร์ท
  • การมีอยู่ของคอนโซล HTTP (เชื่อมโยงกับพอร์ต TCP 6379) สำหรับการจัดการระบบและ API สำหรับการส่งคืนตัววัด ซึ่งเข้ากันได้กับ Prometheus
  • รองรับคำสั่ง 185 Redis ซึ่งเทียบเท่ากับฟังก์ชันการทำงานของ Redis 5 โดยประมาณ
  • รองรับคำสั่ง Memcached ทั้งหมด ยกเว้น CAS (ตรวจสอบและตั้งค่า)
  • รองรับการดำเนินการแบบอะซิงโครนัสสำหรับการสร้างสแน็ปช็อต
  • การใช้หน่วยความจำที่คาดการณ์ได้
  • ล่าม Lua 5.4 ในตัว
  • รองรับประเภทข้อมูลที่ซับซ้อน เช่น แฮช ชุด รายการ (ZSET, HSET, LIST, SETS และ STRING) และข้อมูล JSON
  • รองรับการจำลองแบบพื้นที่จัดเก็บข้อมูลสำหรับความทนทานต่อข้อผิดพลาดและการปรับสมดุลโหลด

รหัส Dragonfly เขียนด้วยภาษา C/C++ และเผยแพร่ภายใต้ BSL (Business Source License) ผู้ร่วมก่อตั้ง MySQL เสนอใบอนุญาต BSL เพื่อเป็นทางเลือกแทนรุ่น Open Core สาระสำคัญของ BSL คือรหัสของฟังก์ชันขั้นสูงนั้นเริ่มมีให้แก้ไข แต่ในบางครั้งสามารถใช้งานได้ฟรีหากตรงตามเงื่อนไขเพิ่มเติมเท่านั้น ซึ่งจำเป็นต้องซื้อใบอนุญาตเชิงพาณิชย์เพื่อหลีกเลี่ยง ข้อกำหนดสิทธิ์การใช้งานเพิ่มเติมสำหรับโครงการ Dragonfly กำหนดให้ต้องโอนรหัสไปยังสิทธิ์การใช้งาน Apache 2.0 ในวันที่ 15 มีนาคม 2028 จนถึงขณะนี้ ใบอนุญาตอนุญาตให้ใช้รหัสเพียงเพื่อรับรองการทำงานของบริการและผลิตภัณฑ์เท่านั้น แต่ห้ามมิให้ใช้เพื่อสร้างบริการคลาวด์แบบชำระเงินที่ทำหน้าที่เป็นส่วนเสริมของ Dragonfly

เวอร์ชัน Dragonfly 1.0 มีความโดดเด่นในด้านการดำเนินการสนับสนุนการจำลองข้อมูลจากเซิร์ฟเวอร์หลักไปยังเซิร์ฟเวอร์รอง อย่างไรก็ตาม สามารถกำหนดค่า Dragonfly เพื่อใช้เป็นที่จัดเก็บข้อมูลรองที่รับข้อมูลจากเซิร์ฟเวอร์หลักโดยอิงจาก Dragonfly หรือจาก Redis API การจัดการการจำลองเข้ากันได้กับ Redis และอิงตามการใช้คำสั่ง ROLE และ REPLICAOF (SLAVEOF)

ที่มา: opennet.ru

เพิ่มความคิดเห็น