Cloudflare loại bỏ nginx và tự xây dựng HTTP proxy (Pingora) bằng Rust để sử dụng
(blog.cloudflare.com)nginx có những giới hạn nhất định
- Mỗi request chỉ dùng một worker duy nhất nên tồn tại sự mất cân bằng trong việc sử dụng các lõi CPU
- Vì có connection pool theo từng worker nên hiệu suất tái sử dụng kết nối TCP và TLS kém -> TTFB tăng cao
- Ngoài ra, Cloudflare cũng tự triển khai các tính năng cần thiết để vận hành nginx, nhưng nginx được thiết kế bằng C nên không bảo đảm an toàn bộ nhớ, vì vậy ngay cả các kỹ sư giàu kinh nghiệm cũng đôi khi mắc lỗi
Pingora
- Cloudflare nhận rất nhiều request không theo chuẩn RFC, trong khi thư viện bên thứ ba (
hyper) được triển khai theo hướng tuân thủ RFC nghiêm ngặt, nên nếu muốn mở rộng sẽ cần thêm nhiều công sức, vì vậy họ đã tự xây dựng - Rust được chọn vì có thể thay thế những gì C làm được theo cách an toàn bộ nhớ mà không làm giảm hiệu năng
- Để dễ dàng chia sẻ connection pool, họ áp dụng hệ thống lập lịch theo kiểu work-stealing, giúp tăng tỷ lệ tái sử dụng. So với trước đây, số lượng kết nối được thiết lập mỗi giây giảm xuống còn khoảng 1/3
- So với trước đây, mức sử dụng CPU giảm 70%, bộ nhớ giảm 67%
- Dự kiến sẽ được công bố dưới dạng mã nguồn mở trong tương lai
5 bình luận
70% CPU và 67% bộ nhớ nhàn rỗi thật đáng kinh ngạc..
Ồ, tôi cũng đã dùng nginx rất tốt rồi, nếu cái này được phát hành mã nguồn mở thì tôi muốn thử ngay.
Dù học Rust thì cũng chẳng có chỗ nào để xin việc.
Rust à, nghe hợp gu thật đấy
Có vẻ như ít nhất trong mảng lập trình hệ thống, Rust đang dần trở nên gần như độc tôn..