การเปิดตัว Memcached 1.6.0 พร้อมเปิดใช้งานการรองรับการจัดเก็บข้อมูลภายนอก

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

เวอร์ชันใหม่ทำให้การใช้งานที่เก็บข้อมูลมีความเสถียร "นอกร้าน" ซึ่งตอนนี้ถูกสร้างขึ้นตามค่าเริ่มต้น (หากต้องการปิดใช้งานในสคริปต์กำหนดค่า มีตัวเลือก "-disable-extstore") แต่ต้องมีการเปิดใช้งานอย่างชัดเจนเมื่อเริ่มต้น (การติดตั้งเก่าจะยังคงทำงานต่อไปโดยไม่มีการเปลี่ยนแปลงหลังจากการอัพเดต) แม้ว่าโดยทั่วไปถือว่า extstore มีความเสถียร แต่ควรใช้ความระมัดระวังเมื่อนำไปใช้กับระบบที่มีขนาดใหญ่มาก

Extstore อนุญาตให้คุณใช้ SSD/แฟลชไดรฟ์เพื่อขยายขนาดแคช เช่นเดียวกับ RAM พื้นที่เก็บข้อมูลแฟลชจะไม่ถาวรและจะถูกรีเซ็ตเมื่อรีสตาร์ท ขอบเขตของโหมดใหม่คือเพื่อให้แน่ใจว่าการแคชข้อมูลขนาดใหญ่มีประสิทธิภาพ เมื่อใช้ "extstore" คีย์และข้อมูลเมตาจะถูกเก็บไว้ใน RAM เหมือนเมื่อก่อน แต่ข้อมูลขนาดใหญ่ที่เกี่ยวข้องกับคีย์ซึ่งมีขนาดเกินเกณฑ์ที่ตั้งไว้จะถูกเก็บไว้ในที่จัดเก็บข้อมูลภายนอกและมีเพียงตัวชี้เท่านั้นที่ยังคงอยู่ใน RAM

หากคีย์เชื่อมโยงกับข้อมูลขนาดเล็ก Memcached จะทำงานตามปกติ เก็บข้อมูลไว้ในหน่วยความจำ และไม่สามารถเข้าถึงที่จัดเก็บข้อมูลภายนอก หากมีหน่วยความจำว่างจำนวนมาก ข้อมูลที่จำเป็นที่สุดก็สามารถอยู่ในแคชใน RAM เพิ่มเติมได้อย่างสมบูรณ์ (ตัวอย่างเช่น คุณสามารถระบุได้ว่าเฉพาะออบเจ็กต์ที่มีขนาดใหญ่กว่า 1024 ไบต์ที่ไม่สามารถเข้าถึงได้เป็นเวลา 3600 วินาทีเท่านั้นที่จะถูกรีเซ็ตเป็น Flash ).

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

การเปลี่ยนแปลงที่สำคัญประการที่สองใน Memcached 1.6 คือการทำงานใหม่ของโค้ดการสื่อสารเครือข่าย ซึ่งได้รับการปรับให้ประมวลผลคำขอแบบแบตช์โดยอัตโนมัติภายในการเรียกระบบครั้งเดียว ก่อนหน้านี้ เมื่อส่งคำสั่ง GET หลายคำสั่งในแพ็กเก็ต TCP เดียว memcached จะส่งผลลัพธ์ด้วยการเรียกของระบบแยกกัน ใน Memcached 1.6 การตอบสนองจะถูกรวบรวมและส่งกลับโดยการส่งการเรียกของระบบเพียงครั้งเดียว เป็นผลให้ขณะนี้มีคีย์เฉลี่ย 1.5 ต่อการเรียกระบบ ซึ่งในการทดสอบแสดงให้เห็นว่าโหลด CPU ลดลงสูงสุดถึง 25% และลดเวลาแฝงลงได้หลายเปอร์เซ็นต์

การออกแบบระบบย่อยเครือข่ายใหม่ยังทำให้สามารถย้ายไปยังการจัดสรรบัฟเฟอร์แบบไดนามิกได้ตามต้องการ แทนที่จะกำหนดบัฟเฟอร์แบบคงที่ การเพิ่มประสิทธิภาพนี้ช่วยลดการใช้หน่วยความจำในขณะที่รอคำสั่งใหม่ผ่านการเชื่อมต่อที่ไคลเอ็นต์สร้างขึ้นจาก 4.5 KB เป็น 400-500 ไบต์ และยังทำให้สามารถกำจัดการเรียก malloc, realloc และฟรีจำนวนมากได้ ซึ่งนำไปสู่การกระจายตัวของหน่วยความจำที่ไม่จำเป็น ระบบที่มีการเชื่อมต่อจำนวนมาก ขณะนี้เธรดของผู้ปฏิบัติงานแต่ละเธรดจัดการพูลการอ่านและเขียนของตัวเองสำหรับการเชื่อมต่อไคลเอ็นต์ที่ใช้งานอยู่ เพื่อปรับขนาดบัฟเฟอร์เหล่านี้
มีการจัดเตรียมตัวเลือก “-o resp_obj_mem_limit=N” และ “-o read_buf_mem_limt=N”

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

ที่มา: opennet.ru

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