Proxy vs Reverse Proxy vs Load Balancer
อันดับแรก เรามาทำความเข้าใจเกี่ยวกับพร็อกซีเซิร์ฟเวอร์ และหลังจากนั้น เราจะสามารถเข้าใจเซิร์ฟเวอร์พร็อกซีย้อนกลับและโหลดบาลานซ์ได้อย่างง่ายดาย
พร็อกซีเซิร์ฟเวอร์
ตัวเลขนี้แสดงถึงแอปพลิเคชันไคลเอนต์เซิร์ฟเวอร์อย่างง่าย ลูกค้าทั้งหมดส่งคำขอไปยังพร็อกซี จากนั้นพร็อกซีจะส่งคำขอของไคลเอ็นต์ไปยังเซิร์ฟเวอร์ ดังนั้น สิ่งที่พร็อกซีเซิร์ฟเวอร์นี้ทำโดยทั่วไปคือ มันจะทำหน้าที่เป็นไฟร์วอลล์หรือเกราะป้องกันในฝั่งไคลเอ็นต์ และจัดการคำขอไคลเอ็นต์ทั้งหมด และส่งไปยังเซิร์ฟเวอร์ตามนั้น วัตถุประสงค์หลักของพร็อกซีประเภทนี้คือการรักษาความปลอดภัยแอปพลิเคชันไคลเอ็นต์จากเซิร์ฟเวอร์ภายนอกและช่องโหว่ด้านความปลอดภัยอื่นๆ ทำไม อย่างที่คุณเห็นไคลเอนต์เหล่านี้และที่อยู่ IP ของพวกเขาจะไม่เปิดเผยต่อโลกภายนอก แต่พร็อกซีเซิร์ฟเวอร์จะเปิดเผยตัวเองในนามของแอปพลิเคชันไคลเอ็นต์ หวังว่าคุณจะจำสถานการณ์ผู้ปกครองเด็กข้างต้นได้
ย้อนกลับพร็อกซีเซิร์ฟเวอร์
แนวคิดของ Reverse Proxy Server นั้นคล้ายกับ Proxy Server มาก สมมติว่าเรามีเซิร์ฟเวอร์หลายอินสแตนซ์ทำงานในแบ็กเอนด์ แต่โปรดจำไว้ว่า ไม่จำเป็นต้องมีหลายเซิร์ฟเวอร์อินสแตนซ์ ในบางกรณีจะมีเซิร์ฟเวอร์เพียงอินสแตนซ์เดียว ในรูปด้านบน คุณจะเห็นเซิร์ฟเวอร์ Reverse Proxy อยู่ที่ฝั่งเซิร์ฟเวอร์ แทนที่จะปกป้องแอปพลิเคชันไคลเอนต์ พร็อกซีย้อนกลับจะปกป้องอินสแตนซ์เซิร์ฟเวอร์ในแบ็กเอนด์จากบุคคลภายนอกหรือไคลเอนต์ ดังนั้นไคลเอนต์จะไม่มีทางรู้ว่าอินสแตนซ์ของเซิร์ฟเวอร์ใดที่จะแก้ไขการสืบค้นหรือคำขอของพวกเขา คำขอของไคลเอนต์แต่ละรายการจะถูกกรองที่พร็อกซีย้อนกลับ จากนั้นเซิร์ฟเวอร์พร็อกซีย้อนกลับจะเปลี่ยนเส้นทางคำขอเหล่านั้นไปยังอินสแตนซ์ของเซิร์ฟเวอร์ที่เกี่ยวข้องสำหรับการประมวลผลเพิ่มเติม
พร็อกซีเซิร์ฟเวอร์ย้อนกลับมีข้อดีอื่น ๆ อีกมากมายเช่นกัน พร็อกซีเหล่านี้สามารถแคชเนื้อหาแบบสแตติกและไดนามิก หากไคลเอนต์ร้องขอทรัพยากรเดียวกันซ้ำแล้วซ้ำอีก เราสามารถแคชเนื้อหานั้นที่เลเยอร์พร็อกซี ดังนั้นเราจึงไม่จำเป็นต้องส่งคำขอเดิมไปยังเซิร์ฟเวอร์ครั้งแล้วครั้งเล่า ข้อได้เปรียบต่อไปของพร็อกซีเซิร์ฟเวอร์เหล่านี้คือสามารถบีบอัดข้อมูลที่จะส่งผ่านเครือข่าย โดยใช้อัลกอริทึมเช่น gZip และ Brotli ข้อดีที่สำคัญอีกประการของพร็อกซีเซิร์ฟเวอร์แบบย้อนกลับเหล่านี้คือสามารถทำหน้าที่เป็นโหลดบาลานเซอร์ได้ ลองดูกัน
โหลดบาลานเซอร์
ดังที่เราได้กล่าวไปแล้วก่อนหน้านี้ Reverse Proxy Server สามารถทำหน้าที่เป็นโหลดบาลานซ์ได้ โปรดจำไว้ว่า ไม่ใช่ทุกพร็อกซีย้อนกลับที่จะทำหน้าที่เป็นโหลดบาลานเซอร์ แต่โหลดบาลานเซอร์ทุกตัวต้องเป็นพร็อกซีเซิร์ฟเวอร์ย้อนกลับ ดังนั้น บทบาทของโหลดบาลานเซอร์คือการกระจายโหลดของคำขอไคลเอ็นต์ระหว่างเซิร์ฟเวอร์อินสแตนซ์ ตัวอย่างเช่น สมมติว่าเรามีแอปพลิเคชันอีคอมเมิร์ซที่ได้รับคำขอมากกว่า 5 ล้านคำขอต่อวัน ดังนั้นในฝั่งเซิร์ฟเวอร์ หากเรามีอินสแตนซ์เซิร์ฟเวอร์เพียงตัวเดียว ก็จะไม่สามารถอยู่รอดได้จากการรับส่งข้อมูลจำนวนมหาศาลเช่นนี้ ดังนั้นเราจึงจำเป็นต้องมีอินสแตนซ์ของเซิร์ฟเวอร์หลายตัวเพื่อจัดการกับทราฟฟิกดังกล่าว คุณอาจสงสัยว่าเรามีหลายอินสแตนซ์ เราจะกระจายการรับส่งข้อมูลระหว่างเซิร์ฟเวอร์เหล่านั้นได้อย่างไร นั่นคือที่มาของ Load Balancer
ตัวจัดสรรภาระงานจะรวบรวมคำขอของไคลเอ็นต์ทั้งหมดและแจกจ่ายไปยังอินสแตนซ์ของเซิร์ฟเวอร์ตามอัลกอริทึม ในกรณีเฉพาะนี้ (รูปที่ 04) จะใช้อัลกอริธึม Round Robin เพื่อกระจายโหลดระหว่างอินสแตนซ์ของเซิร์ฟเวอร์ ในอัลกอริทึมแบบ Round-Robin คำขอของไคลเอ็นต์ใหม่แต่ละรายการจะถูกส่งต่อไปยังอินสแตนซ์ของเซิร์ฟเวอร์ข้างเคียงถัดไปในลักษณะหมุนเวียนตามลำดับ ดังนั้นแทนที่จะใช้เซิร์ฟเวอร์เดียวในการแก้ไขคำขอทั้งหมด เซิร์ฟเวอร์ทั้งหมดจะมีส่วนช่วยในการแก้ไขคำขอของไคลเอ็นต์ด้วยอัลกอริทึมที่เหมาะสมและมีประสิทธิภาพ ไม่เพียงแต่ Round Robin เท่านั้น แต่ยังมีอัลกอริธึมอื่นๆ เช่น Hash, IP Hash, Least Connections และอื่นๆ
เย็น! เพียงเท่านี้สำหรับบทความนี้ ขอบคุณที่อ่านจนจบ หวังว่าคุณจะได้เรียนรู้สิ่งที่มีค่า เรียนรู้ต่อไป เติบโตต่อไป
ถ้าคุณชอบโปรดปรบมือให้ฉัน ติดตามฉันบนสื่อ





































![รายการที่เชื่อมโยงคืออะไร? [ส่วนที่ 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)