PayPal เปิดรหัส JunoDB DBMS

PayPal ได้เปิดซอร์สโค้ดของ DBMS JunoDB ที่ทนทานต่อข้อผิดพลาด ซึ่งจัดการข้อมูลในรูปแบบคีย์-ค่า ในตอนแรกระบบได้รับการออกแบบให้มีความปลอดภัยสูง ความสามารถในการปรับขนาดในแนวนอน ความทนทานต่อข้อผิดพลาด และความสามารถในการจัดการการเชื่อมต่อพร้อมกันหลายแสนรายการโดยคำนึงถึงเวลาแฝงที่คาดการณ์ได้ ที่ PayPal บริการเกือบทั้งหมดตั้งแต่การเข้าสู่ระบบของผู้ใช้ไปจนถึงการประมวลผลธุรกรรมทางการเงิน เชื่อมโยงกับ JunoDB รหัสโครงการเขียนใน Go (ไลบรารีไคลเอนต์ Java) และเผยแพร่ภายใต้ลิขสิทธิ์ Apache 2.0 การพัฒนาต่อไปจะยอมรับการแก้ไข การปรับปรุง และการเปลี่ยนแปลงจากชุมชน

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

PayPal เปิดรหัส JunoDB DBMS

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

PayPal เปิดรหัส JunoDB DBMS

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

PayPal เปิดรหัส JunoDB DBMS

ในการเข้าถึงฐานข้อมูลจากแอปพลิเคชัน จะมีการจัดหาไลบรารีไคลเอ็นต์ซึ่งมี API สำหรับแอปพลิเคชันใน Java, Go และ C++ ส่วนของไคลเอ็นต์จะถูกทำให้ง่ายขึ้นมากที่สุดเท่าที่จะเป็นไปได้ และตรรกะและการตั้งค่าที่ซับซ้อนจะถูกโอนไปยังฝั่ง DBMS ทุกครั้งที่เป็นไปได้ การโต้ตอบระหว่างไคลเอนต์กับบาลานเซอร์หรือพร็อกซีจะดำเนินการผ่านช่องทางการสื่อสารที่เข้ารหัส ในการจัดการและส่งคำขอ คุณสามารถใช้อินเทอร์เฟซบรรทัดคำสั่ง ซึ่งจะจำลองความสามารถทั้งหมดของ API ไคลเอ็นต์

ระบบได้รับการออกแบบมาเพื่อประมวลผลคำขอที่มีความหน่วงต่ำที่คาดการณ์ได้ เช่น คลัสเตอร์ของโหนดจัดเก็บข้อมูล 1 โหนดและพรอกซี 32 ตัว ที่สร้างขึ้นจากสภาพแวดล้อม n32-highmem-2.30 (ซีพียู Intel Xeon 214GHz 450 ตัว, RAM 2.5G และพื้นที่จัดเก็บข้อมูลที่ใช้ SSD 95G) สามารถให้ความล่าช้าคงที่ได้ไม่เกิน 16 มิลลิวินาทีใน 99% ของกรณี และ 200 มิลลิวินาทีใน 15% เมื่อประมวลผลการเชื่อมต่อ TLS พร้อมกัน 3000 รายการและโฟลว์ 80 คำขอต่อวินาที (พร้อมการเชื่อมต่อพร้อมกัน 6 รายการและโฟลว์ 95 คำขอ ต่อวินาที ความล่าช้าไม่เกิน 15 ms ใน 99% ของกรณี และ 350 ms ใน XNUMX%) ที่ PayPal บริการที่ใช้ JunoDB ให้บริการคำขอประมาณ XNUMX พันล้านคำขอต่อวัน

PayPal เปิดรหัส JunoDB DBMS


ที่มา: opennet.ru

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