Pogocache เปิดตัวในฐานะเซิร์ฟเวอร์แคชประสิทธิภาพสูงที่รองรับโปรโตคอล HTTP, Redis และ PostgreSQL

ทีมชุมชน BigGo
Pogocache เปิดตัวในฐานะเซิร์ฟเวอร์แคชประสิทธิภาพสูงที่รองรับโปรโตคอล HTTP, Redis และ PostgreSQL

โซลูชันแคชใหม่ที่เรียกว่า Pogocache ได้เปิดตัวแล้ว โดยสัญญาว่าจะมีเวลาตอบสนองที่ต่ำมากและประสิทธิภาพสูงสำหรับแอปพลิเคชันที่ต้องการการเข้าถึงข้อมูลอย่างรวดเร็ว โปรเจกต์นี้มาจาก Josh Tidwall ซึ่งเป็นที่รู้จักจากการสร้างเครื่องมือโอเพนซอร์สที่โดดเด่นอื่นๆ เช่น Tile38 และแพ็กเกจ gjson ของ Go

หน้าเว็บ repository ของ GitHub ของ Pogocache ที่นักพัฒนาสามารถค้นหาข้อมูลและทรัพยากรที่เกี่ยวข้องกับโซลูชันแคชใหม่นี้
หน้าเว็บ repository ของ GitHub ของ Pogocache ที่นักพัฒนาสามารถค้นหาข้อมูลและทรัพยากรที่เกี่ยวข้องกับโซลูชันแคชใหม่นี้

การรองรับหลายโปรโตคอลทำให้แตกต่าง

สิ่งที่ทำให้ Pogocache น่าสนใจเป็นพิเศษคือความสามารถในการทำงานกับหลายโปรโตคอลพร้อมกัน ผู้ใช้สามารถเชื่อมต่อโดยใช้ HTTP requests, คำสั่ง Redis หรือแม้แต่การเชื่อมต่อไคลเอนต์ PostgreSQL ไปยังอินสแตนซ์แคชเดียวกัน ความยืดหยุ่นนี้หมายความว่านักพัฒนาไม่จำเป็นต้องเปลี่ยนโค้ดไคลเอนต์ที่มีอยู่หรือเรียนรู้ API ใหม่ - พวกเขาสามารถใช้โปรโตคอลใดก็ได้ที่พวกเขาคุ้นเคยอยู่แล้ว

แนวทางหลายโปรโตคอลยังเปิดโอกาสให้เกิดความเป็นไปได้ที่สร้างสรรค์ ตัวอย่างเช่น เว็บแอปพลิเคชันสามารถใช้การเรียก HTTP ในขณะที่บริการแบ็กเอนด์ใช้คำสั่ง Redis โดยทั้งหมดเข้าถึงข้อมูลแคชเดียวกัน

โปรโตคอลที่รองรับ:

  • HTTP 1.1 พร้อม REST-style endpoints
  • คำสั่งโปรโตคอล Redis (set, get, delete, incr, decr และอื่นๆ)
  • โปรโตคอลไคลเอนต์ PostgreSQL
  • ความเข้ากันได้กับโปรโตคอล Memcache

ประสิทธิภาพผ่านการปรับแต่งด้วยมือ

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

โปรเจกต์นี้เขียนด้วย ANSI C และออกแบบมาเฉพาะสำหรับแพลตฟอร์ม Linux และ macOS แนวทางระดับต่ำนี้ช่วยให้สามารถควบคุมการจัดสรรหน่วยความจำและทรัพยากรระบบได้อย่างเข้มงวด ซึ่งมีส่วนทำให้ได้ประสิทธิภาพที่ดีขึ้น

คุณสมบัติทางเทคนิคหลัก:

  • เขียนด้วย ANSI C สำหรับ Linux / macOS
  • สถาปัตยกรรม sharded hashmap เพื่อลดการแย่งชิงทรัพยากร
  • การจัดสรรหน่วยความจำต่ำผ่านการแบ่งปัน RAM ที่ได้รับการปรับปรุง
  • ตัวเลือกไลบรารีแบบฝังตัวสำหรับการรวมเข้าด้วยกันโดยตรง
  • รองรับ TLS / HTTPS เพื่อการเชื่อมต่อที่ปลอดภัย
  • กลไกการยืนยันตัวตนที่สามารถกำหนดค่าได้

การออกแบบไลบรารีที่ฝังได้

ต่างจากเซิร์ฟเวอร์แคชหลายตัวที่ทำงานเป็นกระบวนการแยกต่างหาก Pogocache ยังสามารถฝังตัวเข้าไปในแอปพลิเคชันโดยตรงในฐานะไลบรารี C แนวทางนี้ช่วยขจัดโอเวอร์เฮดของเครือข่ายสำหรับแอปพลิเคชันที่สามารถรวมแคชเข้ากับพื้นที่กระบวนการของตัวเองได้โดยตรง

การออกแบบที่ฝังได้รวมถึง API ของ C ที่เรียบง่ายพร้อมฟังก์ชันสำหรับการดำเนินการพื้นฐาน เช่น get, set, delete และการดำเนินการ increment ทำให้สามารถเข้าถึงได้สำหรับแอปพลิเคชันที่เขียนด้วย C หรือภาษาที่สามารถเรียกไลบรารี C ได้

ฟังก์ชัน Core C API หลัก:

  • pogocache_create() - เริ่มต้นอินสแตนซ์แคช
  • pogocache_add() - จัดเก็บข้อมูลพร้อมคีย์
  • pogocache_get() - ดึงข้อมูลตามคีย์
  • pogocache_delete() - ลบข้อมูลตามคีย์
  • pogocache_incr() - เพิ่มค่าตัวเลข
  • pogocache_free() - ล้างทรัพยากร

แผนการรวมฐานข้อมูลในอนาคต

สมาชิกชุมชนแสดงความสนใจเป็นพิเศษในแผนการรวมฐานข้อมูลของโปรเจกต์ นักพัฒนาชี้แจงว่าแทนที่จะกลายเป็นฐานข้อมูล SQL เต็มรูปแบบ Pogocache มีเป้าหมายที่จะทำงานร่วมกับฐานข้อมูลที่มีอยู่ เช่น SQLite, DuckDB และ PostgreSQL ในฐานะเลเยอร์แคชที่โปร่งใสสำหรับการดำเนินการอ่าน

ไม่ได้ตั้งใจจะทำให้ pogocache กลายเป็นฐานข้อมูล sql ฉันชอบที่จะให้มันเป็นแคช มากกว่าจะสำรวจวิธีการทำงานกับฐานข้อมูลที่มีอยู่ เช่น sqlite, duckdb, postgres เหมือนกับการให้การดำเนินการแบบ proxy ที่แคชการอ่าน sql อย่างโปร่งใส

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

ความปลอดภัยและการตรวจสอบสิทธิ์

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

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

อ้างอิง: pogocache