Link to original video by Anton Putra
Go (Golang) Performance Benchmark (gnet vs fiber vs fasthttp vs net/http)

Tóm tắt ngắn:
- Video so sánh hiệu năng của các framework web Go:
gnet,fiber,fasthttp, vànet/http(thư viện chuẩn). - Trọng tâm là đo độ trễ, thông lượng, mức sử dụng CPU/bộ nhớ, và khả năng mở rộng của từng framework, cả trong trường hợp đơn giản và khi kết hợp với cơ sở dữ liệu PostgreSQL.
- Kết quả cho thấy
fasthttpvàgnetcó hiệu năng cao nhất về thông lượng, nhưngnet/httplại có độ trễ thấp nhất ở tải nhẹ.gnetgặp vấn đề về quản lý kết nối đến cơ sở dữ liệu. Lựa chọn framework phụ thuộc vào ưu tiên độ trễ hay thông lượng. - Phương pháp thử nghiệm bao gồm đo đạc trên Kubernetes với cụm máy ảo, sử dụng công cụ giám sát và điều chỉnh tự động.
Tóm tắt chi tiết:
Video được chia thành hai phần chính: thử nghiệm đầu tiên so sánh các framework mà không có cơ sở dữ liệu, và thử nghiệm thứ hai bao gồm việc thêm PostgreSQL vào hệ thống.
Phần 1: So sánh hiệu năng không có cơ sở dữ liệu:
- Video bắt đầu bằng việc giới thiệu mục tiêu: tìm framework Go nhanh nhất. Các framework được so sánh là
net/http,fiber,fasthttp, vàgnet. - Phương pháp đo lường bao gồm độ trễ (latency), thông lượng (request/second), mức sử dụng CPU và bộ nhớ. Thử nghiệm được thực hiện trên Kubernetes với các máy ảo.
- Kết quả cho thấy
net/httpcó độ trễ thấp nhất ở tải nhẹ nhưng sử dụng CPU cao nhất và trở nên chậm nhất khi tải tăng.fibervàfasthttpcó hiệu năng tương đương dofiberđược xây dựng trênfasthttp.gnetcho thấy hiệu năng cao nhất (khoảng 55.000 - 98.000 request/s) nhưng có API cấp thấp và tài liệu hạn chế. Ở tải nặng,fasthttpổn định hơngnet.
Phần 2: So sánh hiệu năng với cơ sở dữ liệu PostgreSQL:
- Thử nghiệm này thêm PostgreSQL vào hệ thống, đo độ trễ của việc chèn dữ liệu JSON.
gnetlại gặp vấn đề: tạo quá nhiều kết nối đến cơ sở dữ liệu (tương ứng với số lượng vòng lặp sự kiện), dẫn đến hiệu năng kém hơn các framework khác. Điều này được cho là do thiếu tài liệu và khả năng cấu hình.net/httplại cho thấy độ trễ thấp nhất trong thử nghiệm này.- Các chỉ số được đo bao gồm độ trễ yêu cầu, độ trễ chèn dữ liệu, sử dụng CPU của ứng dụng và cơ sở dữ liệu, kích thước nhóm kết nối, và sử dụng bộ nhớ.
- Người thuyết trình nhấn mạnh vấn đề về việc
gnettạo ra quá nhiều kết nối đến cơ sở dữ liệu, dẫn đến trở thành nút thắt cổ chai. Việc sử dụng hai instance PostgreSQL cực lớn cũng được đề cập là một hạn chế.
Kết luận:
Video kết luận rằng không có framework nào hoàn hảo. net/http có độ trễ thấp nhưng sử dụng CPU cao, trong khi fasthttp và gnet có thông lượng cao nhưng có thể gặp vấn đề về quản lý kết nối và tài liệu. Lựa chọn framework phụ thuộc vào nhu cầu cụ thể của ứng dụng, ưu tiên độ trễ hay thông lượng. Mã nguồn thử nghiệm được cung cấp trên GitHub.