2013-08-26 42 views
9

Tôi có hệ thống dựa trên diễn viên thực hiện việc nhập dữ liệu theo định kỳ, cpu cũng như phục vụ các điểm cuối RESTful. Tôi đang sử dụng các diễn viên Akka để báo hiệu/kiểm soát các giai đoạn khác nhau của quá trình ăn, và Spray (tất nhiên là được xây dựng trên Akka) để phục vụ các điểm cuối ổn định của tôi.Ưu tiên diễn viên Akka

Vấn đề của tôi là: Khi quá trình nhập phát khởi động, nó tiêu thụ phần lớn CPU, bỏ đói các điểm cuối RESTful cho đến khi hoàn thành.

Cách tốt nhất để giảm mức độ ưu tiên của việc nhập là gì? Ngay bây giờ, ingest và Spray mô-đun chia sẻ cùng một ActorSystem, nhưng chúng có thể được tách ra nếu điều đó giúp giải pháp.

Trả lời

8

Có vẻ như các diễn viên khác nhau trong hệ thống của bạn cần phải sống trong những người điều phối khác nhau. Tạo bộ điều phối mới cho các diễn viên chuyên sâu CPU và để các diễn viên dịch vụ web trong bộ điều phối mặc định (hoặc có thể di chuyển những người đó sang người điều phối khác, nếu bạn thấy phù hợp)

Bạn có thể muốn điều chỉnh bộ điều phối mới được tạo - ví dụ, nếu bạn nói các diễn viên ăn uống của bạn thực hiện các công việc tính toán chuyên sâu, bạn nên giảm mức độ song song của người điều phối đến một cái gì đó gần hơn với 1.0

Tách hệ thống diễn viên của bạn thành những người điều phối khác nhau ngăn ngừa các vấn đề tương tự như bạn có - nếu một số diễn viên bắt đầu hog các chủ đề cơ bản họ kết thúc lên saturating dispatcher chạy chúng. Bằng cách có các diễn viên web trong một điều phối viên khác, bạn giới hạn tác động mà các diễn viên chuyên sâu CPU có trên phần còn lại của hệ thống. Điều này hơi giống với khái niệm "bulkheading".

Dưới đây là một số thông tin thêm về điều vận Akka: http://doc.akka.io/docs/akka/2.2.0/scala/dispatchers.html

Để cấu hình phối mới nó cũng đáng giá để có một cái nhìn vào phần cấu hình của tài liệu: http://doc.akka.io/docs/akka/2.2.0/general/configuration.html

2

Có hộp thư ưu tiên có thể được được xây dựng để xác định thư nào được xử lý trong đó ưu tiên. Bạn cũng có thể stash/unstash tin nhắn hoạt động tốt với hotswap nếu bạn muốn stash tin nhắn và đối phó với họ khi một nhà nước nhất định gặp phải. Thông tin về stash là ở đây: http://doc.akka.io/docs/akka/snapshot/scala/actors.html

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