Máy chủ phân tích của chúng tôi được viết bằng C++. Về cơ bản nó truy vấn công cụ lưu trữ cơ bản và trả về một dữ liệu có cấu trúc khá lớn thông qua tiết kiệm. Một yêu cầu điển hình sẽ mất khoảng 0,05 đến 0,6 giây để hoàn thành phụ thuộc vào kích thước yêu cầu.TNonblockingServer, TThreadedServer và TThreadPoolServer, cái nào phù hợp nhất với trường hợp của tôi?
Tôi nhận thấy rằng có một vài tùy chọn về máy chủ tiết kiệm mà chúng tôi có thể sử dụng trong mã C++, cụ thể là TNonblockingServer, TThreadedServer và TThreadPoolServer. Có vẻ như TNonblockingServer là con đường để đi vì nó có thể hỗ trợ nhiều yêu cầu đồng thời hơn và vẫn sử dụng một hồ bơi thread đằng sau hiện trường để crunch thông qua các nhiệm vụ. Nó cũng tránh được chi phí xây dựng/hủy các luồng.
cập nhật của Facebook trên hành tiết kiệm: http://www.facebook.com/note.php?note_id=16787213919
Tại Facebook, chúng tôi đang làm việc trên một khách hàng hoàn toàn không đồng bộ và máy chủ cho C++. Máy chủ này sử dụng I/O theo hướng sự kiện như TNonblockingServer hiện tại, nhưng giao diện của nó là mã ứng dụng là tất cả dựa trên các cuộc gọi lại không đồng bộ. Điều này sẽ cho phép chúng tôi viết các máy chủ có thể phục vụ hàng nghìn yêu cầu đồng thời (mỗi yêu cầu yêu cầu thực hiện cuộc gọi đến các máy chủ Tiết kiệm hoặc Memcache khác) chỉ với một vài chủ đề.
bài viết liên quan trên stackover: Large number of simulteneous connections in thrift
Nói như vậy, bạn sẽ không nhất thiết phải có khả năng để thực sự làm việc nhanh hơn (xử lý vẫn thực hiện trong một hồ bơi thread), nhưng nhiều khách hàng sẽ được có thể kết nối với bạn cùng một lúc.
Chỉ cần tự hỏi có bất kỳ yếu tố nào khác mà tôi bị thiếu ở đây không? Làm thế nào tôi sẽ quyết định cái nào phù hợp với nhu cầu của tôi nhất?