โหลดบาลานเซอร์กับการรวมการเชื่อมต่อ - มีความแตกต่างหรือไม่?


11

ฉันกำลังทำงานในโครงการที่คาดว่าจะให้บริการผู้ใช้หลายล้านคนหลังจากเปิดตัวไม่นาน ฐานข้อมูลเป็น postgres และตอนนี้ฉันสมมติว่าต้องมีเซิร์ฟเวอร์อย่างน้อยสองตัว ผู้ดูแลระบบ sys (ซึ่งมีความเชี่ยวชาญในระบบที่ปรับขนาดได้อย่างชัดเจน) ได้แนะนำให้วาง load balancer ไว้ระหว่างเว็บเซิร์ฟเวอร์และเซิร์ฟเวอร์ฐานข้อมูล

คำถามของฉันเกี่ยวกับความแตกต่างของการทำโหลดบาลานซ์กับการรวมการเชื่อมต่อ เพื่อรักษาประสิทธิภาพฉันควรจะดูที่หนึ่งหรืออื่น ๆ หรือทั้งสองอย่าง?


พวกมันเหมือนกันมาก pgbouncer เป็น pooler ที่แนะนำ pgpool II มีคุณสมบัติมากกว่า แต่ซับซ้อนกว่าในการตั้งค่า
Scott Marlowe

คำตอบ:


7

ด้วย PostgreSQL คุณมีสองส่วนที่ต่างกันซึ่งสามารถรวมกำไรได้ที่เลเยอร์ของแอป (เช่น jdbc ที่สร้างขึ้นในการรวมกำไร ฯลฯ ) หรือในเลเยอร์กลางที่อยู่ระหว่างแอปและ db (s) เช่น pgbouncer หรือ pgpool

หากคุณรวมกำไรในเลเยอร์กลางเช่น pgbouncer หรือ pgpool ดังนั้นเลเยอร์ดังกล่าวจะสามารถสร้างสมดุลของคิวรีแบบเลือกได้ นอกจากนี้เมื่อโหลดบาลานซ์คุณสามารถเขียนได้สองวิธี: คุณสามารถมีมาสเตอร์การเขียนเดียวที่ทำซ้ำผ่านวิธีการอื่น ๆ ไปยังทาสอ่านของคุณโดยใช้เครื่องมือเช่น slony หรือการสร้างแบบจำลองในสตรีมมิ่งที่ปรากฏใน pg 9.0 และด้านบนหรือคุณสามารถให้ load balancer ทำการเขียนทั้งหมดเพื่อให้การอ่านขาเข้ามีผลกระทบต่อหนึ่งฐานข้อมูลเท่านั้น แต่จะมีการเขียน hit แต่ละฐานข้อมูลเพื่อให้พวกเขาอัปเดตทั้งหมด

หรือหากคุณเป็นฝ่ายรุกคุณสามารถย้ายเลเยอร์การโหลดบาลานซ์ลงเลเยอร์อื่นไปยัง postgresql โดยใช้ plproxy นี่คือภาษา PL สำหรับ pgsql ที่ออกแบบมาเพื่อให้คุณใส่ฐานข้อมูล pg หนึ่งตัวที่ส่วนหน้าซึ่งไม่มีข้อมูลจริงในนั้นและฐานข้อมูลนั้นก็สามารถทำงานได้หลาย dbs ซ้ำซ้อนสำหรับปริมาณงานที่เหลือเชื่อ plpoxy ค่อนข้างซับซ้อนในการติดตั้งและใช้งาน แต่ก็สามารถปรับขนาดได้เช่นกัน โปรดทราบว่าแอปพลิเคชันของคุณจะต้องถูกเขียนใหม่เพื่อรองรับดังนั้นจึงไม่สามารถโยนในแอปเก่า ๆ และใช้งานได้

http://slony.info/ http://wiki.postgresql.org/wiki/PL/Proxy http://pgpool.projects.postgresql.org/


3

การทำโหลดบาลานซ์และการรวมการเชื่อมต่อเป็นสองสิ่งที่แตกต่างกันมาก

การเชื่อมต่อร่วมกัน (ฉันมาจากฝั่ง Microsoft ของโลก แต่ทุกอย่างคล้ายกันฉันถือว่า) อนุญาตให้แอปพลิเคชันเปิดการเชื่อมต่อกับฐานข้อมูลเพื่อให้สามารถนำมาใช้ใหม่สำหรับการค้นหาครั้งต่อไปแทนที่จะต้องยกเลิกการเชื่อมต่อและเชื่อมต่อใหม่ สำหรับแต่ละแบบสอบถามที่จะต้องเรียกใช้

โหลดบาลานซ์อนุญาตให้คุณมีเซิร์ฟเวอร์ฐานข้อมูลหลายตัวที่อยู่ด้านหลังโหลดบาลานซ์เพื่อให้คุณสามารถกระจายโหลดข้ามหลายเซิร์ฟเวอร์แทนที่จะมีเซิร์ฟเวอร์เดียวที่จัดการงานทั้งหมด

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

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.