tôi đang cố gắng để tạo ra một ứng dụng không đồng bộ sử dụng mô-đun asyncio
của Python. Tuy nhiên, tất cả các triển khai tôi có thể tìm thấy trên tài liệu được dựa trên một Vòng lặp sự kiện duy nhất.Tính sẵn sàng cao cho Python của asyncio
Có cách nào để khởi động nhiều tổ chức sự kiện Loops chạy cùng một ứng dụng, vì vậy tôi có thể đạt được tính sẵn sàng cao và khả năng chịu lỗi? Nói cách khác, tôi muốn mở rộng ứng dụng của mình bằng cách chèn các nút mới có thể chia sẻ việc thực thi các coroutine phía sau bộ cân bằng tải.
Tôi hiểu đó là một vấn đề cố hữu giữa lập trình không đồng bộ và thread-an toàn, có lẽ những gì tôi có trong tâm trí là thậm chí không thể. Nếu vậy, làm thế nào để tránh loại SPOF này trên kiến trúc không đồng bộ?
Bạn đang nói về mã mạng trừu tượng hoặc máy chủ web cụ thể như aiohttp? –
Bạn có thể chạy nhiều vòng lặp sự kiện, nhưng tôi đoán rằng bạn có thể muốn chạy nhiều phiên bản của chương trình asyncio của bạn và sử dụng nginx hoặc một số máy chủ web khác để cân bằng tải chúng. Nếu đó là những gì bạn đang tìm kiếm, tôi nghĩ rằng bạn có thể nhận được sự giúp đỡ trên serverfault – leech
Tôi tin rằng khuyến nghị là một vòng lặp sự kiện cho mỗi quá trình. Nếu một quá trình vòng lặp sự kiện duy nhất được tính toán bị ràng buộc, bạn có thể sao chép nó vào các quy trình khác đang chạy trên các lõi khác, như @leech đề xuất, nhưng bạn có thể tốt hơn chỉ nên tạo ra các tác vụ tính toán. Tôi tin rằng asyncio có một giao diện đa xử lý, mà tôi đã không, bất cứ lúc nào, nhìn vào. –