Tags:
Node Thumbnail

Cloudflare รายงานถึงโครงการ Pingora พรอกซี่เซิร์ฟเวอร์ภายในของ Cloudflare เองที่พัฒนาขึ้นเพื่อทดแทน NGINX ที่ทาง Cloudflare พบข้อจำกัดหลายอย่างทำให้ไม่สามารถรีดประสิทธิภาพออกมาได้เต็มที่

ข้อจำกัดสำคัญของ NGINX ที่ Cloudflare พบคือระบบการกระจายโหลดของ NGINX นั้นใช้รูปแบบ worker ที่เป็นโปรเซสในระบบปฎิบัติการ กระจายโหลดระหว่าง worker แต่ละตัวไม่เท่ากัน และไม่สามารถแชร์ connection pool ข้าม worker ได้ ทำให้มี connection ไปยังเซิร์ฟเวอร์ต้นทางมากเกินความจำเป็น รวมถึงการเขียนฟีเจอร์เพิ่มเติมให้กับ NGINX นั้นทำได้ยาก หากไม่เขียนในภาษา C ที่ผิดพลาดได้ง่ายก็ต้องเขียนในภาษา Lua ที่ประสิทธิภาพไม่ดีนักและภาษา Lua ไม่ใช่ static type ทำให้จัดการโค้ดที่ซับซ้อนสูงได้ลำบาก

ทาง Cloudflare เลือกจะพัฒนาพรอกซี่ขึ้นมาใหม่ด้วยภาษา Rust เพราะมีประสิทธิภาพที่ดี และการพัฒนาโครงการเองทำให้ยืดหยุ่นต่อการใช้งานนอกมาตรฐาน เช่น พรอกซี่บางตัวไม่รองรับ HTTP status ที่สูงกว่า 599 แม้ว่าจะมีคนใช้งานนอกมาตรฐานอยู่บ้างก็ตาม

ตอนนี้ Pingora ถูกใช้งานใน request แทบทั้งหมดที่ต้องขอข้อมูลจากต้นทาง (origin server) ระยะเวลาหน่วงก่อนได้รับไบต์แรก (time to first byte - TTFB) ลดลงที่ค่ามัธยฐาน 5ms เพราะสามารถแชร์ connection pool ร่วมกันได้ทั้งเซิร์ฟเวอร์ ทำให้ไม่เสียเวลาเชื่อมต่อใหม่ อัตราการใช้ซีพียูลดลง 70% และใช้หน่วยความจำลดลง 67% เพราะย้ายโค้ดจาก Lua ใน NGINX มาสู่ Rust

ที่มา - Cloudflare

Get latest news from Blognone

Comments

By: gooGof
ContributorAndroidIn Love
on 15 September 2022 - 06:22 #1261772

ที่มา NGINX -> Cloudflare

By: btoy
ContributorAndroidWindows
on 15 September 2022 - 08:04 #1261784
btoy's picture

คนจริง อยากได้ต้องทำเอง อิอิ


..: เรื่อยไป

By: TeamKiller
ContributoriPhone
on 15 September 2022 - 08:48 #1261793
TeamKiller's picture

ที่มา - NGINX

นี่ ต้องเป็น Cloud flare หรือเปล่าครับ ลิงค์ไปก็เป็น blog ของ cloudflare

By: blackdemon
Windows PhoneAndroid
on 15 September 2022 - 10:32 #1261831
blackdemon's picture

ที่สำคัญจะ open source ด้วยนะ, nginx เตรียมปาดเหงื่อ

By: iDan
ContributorAndroidSUSEUbuntu
on 15 September 2022 - 11:13 #1261846

Web server แต่ละตัวต่างเกิดมาด้วยจุดประสงค์ที่แตกต่างกัน ไม่สามารถใช้ทดแทนกันได้ทั้งหมด ถึง Apache จะกินแรม และ Nginx จะเร็วกว่า 2.5 เท่า แต่ Apache ก็ได้เปรียบในเรื่องความปลอดภัย ฟังก์ชั่น และฟีเจอร์ต่าง ๆ ดังนั้นจะเลือกข้างไปก็เท่านั้น

เลือกข้างไปก็เท่านั้น ทำไมไม่เอาข้อดีทั้ง 2 มารวมกันล่ะ?

ผมว่า ตัวนี้ก็เหมือนกันครับ เกิดขึ้นมาเพราะจุดประสงค์ที่สร้างมันขึ้นมาแตกต่างไป

By: osmiumwo1f
ContributorWindows PhoneWindows
on 15 September 2022 - 11:13 #1261847 Reply to:1261846
osmiumwo1f's picture

เกรงว่ามันจะได้ข้อเสียของทั้งคู่มารวมกันแทนครับ

By: rattananen
AndroidWindows
on 15 September 2022 - 11:29 #1261852

เอาจริง Nginx ไม่ได้ออกแบบมาเพื่อ use case แบบ Cloudflare ด้วย
ถ้าอยากคุม connection เองแบบนี้เขียนเองเหมาะกว่า (แต่ implement HTTP protocol เองมันก็จะเหนื่อยหน่อย)