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
fasthttp
vàgnet
có hiệu năng cao nhất về thông lượng, nhưngnet/http
lại có độ trễ thấp nhất ở tải nhẹ.gnet
gặ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/http
có độ 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.fiber
vàfasthttp
có hiệu năng tương đương dofiber
được xây dựng trênfasthttp
.gnet
cho 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.
gnet
lạ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/http
lạ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
gnet
tạ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.