Sau khi đọc nổi tiếng C10k article và tìm kiếm trên web về cách mọi thứ đã phát triển kể từ khi nó được viết, tôi muốn biết liệu nó có thể đạt được tiêu chuẩn ngày nay không máy chủ để xử lý > 10000 đồng thời kết nối sử dụng một luồng cho mỗi kết nối (có thể với sự trợ giúp của một nhóm luồng để tránh quá trình tạo/giết).TCP/IP - Giải quyết C10K bằng cách tiếp cận từng khách hàng
Một số chi tiết có thể ảnh hưởng cách tiếp cận với các vấn đề:
- Input, chế biến trung gian và đầu ra.
- Độ dài của mỗi kết nối.
- Thông số kỹ thuật của máy chủ (lõi, vi xử lý, RAM, vv ...)
- Kết hợp hệ thống này với các kỹ thuật thay thế như AIO, bỏ phiếu, chủ đề màu xanh lá cây, vv ...
Rõ ràng tôi không phải là chuyên gia về vấn đề này, vì vậy bất kỳ nhận xét hoặc lời khuyên nào sẽ được đánh giá cao :)
Có thể là tôi hơi bối rối, nhưng tôi nghĩ rằng 'epoll' không chính xác là không đồng bộ. Sau một số nghiên cứu, tôi đã tìm thấy một số văn bản nói rằng 'AIO' sẽ hoạt động tốt hơn khi kết hợp với một nhóm luồng và 'epoll' với một chuỗi duy nhất: [So sánh aio và epoll] (http://lkml.indiana.edu/hypermail /linux/kernel/0305.2/0697.html). – Str1101
... Tôi cũng đã đọc rằng có một số khó khăn liên quan đến việc thực hiện 'AIO', vì vậy có lẽ nó vẫn còn nhiều lợi nhuận hơn để sử dụng cách tiếp cận hồ bơi 'epoll' + thread. [whats-the-different-between ...] (http://stackoverflow.com/questions/5844955/whats-the-difference-between-event-driven-and-asynchronous-between-epoll-and-a). Ý tưởng riêng của tôi về nó là có thể sử dụng trực tiếp một luồng của hồ bơi để tắt mọi kết nối cho đến khi số lượng kết nối đồng thời đến gần số chuỗi tối đa mà hệ thống có thể duy trì và sau đó chúng tôi có thể sử dụng ... – Str1101
epoll/kqueue/AIO hệ thống để xử lý các kết nối mới đến trong khi tất cả các chủ đề đang bận. (p.s .: Tôi thực sự rất thích xem máy chủ của bạn sớm, đặc biệt nếu nó được viết bằng C++ :) – Str1101