Zeroserve thêm chế độ tương thích Caddy: Hiệu suất cao gấp 3 lần, độ trễ giảm 70%
Zeroserve, máy chủ HTTPS hiệu suất cao sử dụng eBPF, vừa giới thiệu chế độ tương thích với Caddyfile. Với khả năng biên dịch JIT sang mã máy, zeroserve mang lại hiệu suất gấp 3 lần và giảm 70% độ trễ so với Caddy truyền thống, đồng thời hỗ trợ các plugin tùy chỉnh Turing-complete.
Zeroserve, một máy chủ HTTPS hiệu suất cao chạy các tập lệnh eBPF trong không gian người dùng (userspace), vừa cập nhật với tính năng đáng chú ý: chế độ tương thích với Caddy. Khi được cung cấp một tệp cấu hình Caddyfile, zeroserve sẽ sử dụng trình biên dịch JIT (Just-In-Time) để chuyển đổi cấu hình đó sang eBPF, sau đó biên dịch tiếp sang mã máy gốc x86_64/ARM64 và chạy nó trong vòng lặp sự kiện io_uring.
Hiệu suất vượt trội so với Caddy truyền thống
Theo các bài kiểm tra hiệu suất trên cấu hình HTTPS reverse proxy (sử dụng 2 luồng, CPU AMD Ryzen 7 3700X), zeroserve thể hiện sự thống trị rõ rệt so với Caddy tiêu chuẩn:
- Zeroserve (clang): Đạt 38.948 req/s, độ trễ p50 là 1,45ms và p99 là 3,91ms.
- Caddy: Chỉ đạt 12.529 req/s, độ trễ p50 là 4,74ms và p99 là 13,11ms.
- Nginx: Đạt 37.424 req/s, độ trễ p50 là 1,57ms và p99 là 4,24ms.
Kết quả cho thấy zeroserve cung cấp thông lượng cao gấp khoảng 3 lần và giảm 70% độ trễ so với Caddy. Ngoài ra, mức sử dụng bộ nhớ thường trú (RSS) của zeroserve cũng thấp hơn nhiều, chỉ khoảng 30,9 MiB so với 67,4 MiB của Caddy. Hiệu suất này tương đương với Nginx nhưng lại đi kèm với sự linh hoạt và dễ cấu hình của Caddyfile.
Khả năng mở rộng với eBPF Turing-complete
Điểm mạnh lớn nhất của zeroserve không chỉ dừng lại ở tốc độ xử lý, mà còn ở khả năng mở rộng. Hệ thống hỗ trợ chạy eBPF Turing-complete, cho phép người dùng gọi mã tùy chỉnh trực tiếp từ Caddyfile.
Ví dụ, bạn có thể reverse proxy một đường dẫn tới một bộ chứa S3 tương thích với xác thực AWS SigV4 một cách dễ dàng. Bằng cách tải plugin io.su3.aws-sigv4.c, người dùng có thể gọi phương thức sign_request trong middleware eBPF để xử lý xác thực ngay tại tầng máy chủ mà không cần thêm các dịch vụ trung gian.
Cách sử dụng
Để thử nghiệm zeroserve với Caddyfile hiện có của bạn, bạn có thể thực hiện các lệnh sau để tải và chạy binary:
curl -fL -o zeroserve https://github.com/losfair/zeroserve/releases/download/v0.2.11/zeroserve-$(uname -m)-linux
chmod +x zeroserve
./zeroserve --caddy /etc/caddy/Caddyfile
curl http://127.0.0.1:8080
Sự kết hợp giữa tốc độ xử lý thô của eBPF/io_uring và trải nghiệm cấu hình của Caddyfile khiến zeroserve trở thành một giải pháp thay thế đầy hứa hẹn cho các nhà phát triển đang tìm kiếm hiệu suất tối đa cho hạ tầng web của mình.
