2012-05-10 36 views
6

Trong mẫu trò chuyện Websocket được cung cấp với khung chơi, có vẻ như với tôi rằng chỉ có một diễn viên được tạo/sử dụng; Ngoài ra nó sử dụng "nhận" mà nếu tôi hiểu rõ, buộc ánh xạ 1: 1 giữa một diễn viên và một chủ đề, có hiệu quả làm cho máy chủ trò chuyện này đơn luồng?Phát mẫu Websocket - Chỉ một diễn viên Akka?

Kiểm tra mã tại đây: https://github.com/playframework/Play20/blob/master/samples/scala/websocket-chat/app/models/ChatRoom.scala

Nếu phân tích này đúng không? Nếu có, bạn có gợi ý về cách máy chủ này có thể được thực hiện cao khả năng mở rộng?

Trả lời

8

Có một số chi tiết tại http://www.playframework.org/documentation/2.0.1/AkkaCore trên cấu hình bộ điều phối mặc định cho các ổ cắm web được sử dụng trong ví dụ đó.

Mỗi trạng thái kết nối WebSocket được quản lý bởi tác nhân Tác nhân. Một diễn viên mới được tạo cho mỗi WebSocket, và bị giết khi socket được đóng lại.

Đó trang web cũng cho thấy cấu hình mặc định:

websockets-dispatcher = { 
    fork-join-executor { 
    parallelism-factor = 1.0 
    parallelism-max = 24 
    } 
} 

Theo mặc định tất cả các điều vận sẽ chạy bộ của họ về các diễn viên trên một hồ bơi thread. Vì vậy, đối với mỗi khách hàng tạo một websocket, một diễn viên sẽ được tạo ra. Có bao nhiêu luồng được phân bổ phụ thuộc vào dịch vụ thực thi nào được sử dụng. Có vẻ như fork-join-executor sẽ tạo chủ đề theo yêu cầu lên đến parallelism-max.

Ngoài ra, còn có các diễn viên xử lý các hành động và lời hứa.

Dường như có nhiều nút bấm trong akka để tinh chỉnh hiệu suất. Xem http://doc.akka.io/docs/akka/2.0.1/general/configuration.html. Làm cho một máy chủ "có khả năng mở rộng cao" có thể sẽ liên quan đến rất nhiều điểm chuẩn và một số phần cứng.

5

Mặc dù các kết nối websocket sẽ có một nhóm diễn viên nhưng vẫn là diễn viên ChatRoom là người duy nhất (cá thể diễn viên duy nhất) thực hiện xử lý thực tế với thư, quản lý kết nối/ngắt kết nối và hoạt động như bộ định tuyến cho các ổ cắm. cho thiết kế này vì các tin nhắn luôn được xử lý tuần tự cho một diễn viên. Tôi nghi ngờ nếu mẫu có nghĩa là cho khả năng mở rộng mà là một cuộc biểu tình đơn giản cho websockets.

Các vấn đề liên quan