Đây là một ví dụ trong sách giáo khoa về điều phối máy chủ và là điều mà Chef vốn không có ý định làm. Theo ghi nhận của Tensibai, một máy chủ chạy Chef là một hệ thống hội tụ đạt được trạng thái mong muốn của riêng nó dựa trên các cài đặt cấu hình được đặt bởi công thức nấu ăn, thuộc tính, túi dữ liệu, v.v. có thể lấy là:
Tạo các hoạt động idempotent độc lập
Như bạn đã nêu trong câu hỏi của mình, việc tạo trạng thái hoạt động trong đó các nút của bạn có thể chạy liên tục cho đến khi tất cả các nhiệm vụ hoàn thành không có quy mô tốt. Tuy nhiên, có thể thiết kế lại các nút của bạn để nó không thành vấn đề. Nếu các nút a và b chạy các tác vụ để xuất các bản ghi của chúng song song và b hoàn thành trước a, thì nó có thể chạy tác vụ mà nút a thường chạy và ngược lại.
Sử dụng một dàn nhạc bên ngoài cho đoàn
Sử dụng một nút đại biểu chắc chắn sẽ mở rộng quy mô tốt hơn nhiều nếu bạn dự định có nhiều nút để phối hợp. Tuy nhiên, điều này có thể tạo ra xung đột với khách hàng đầu bếp của bạn chạy trên các nút được quản lý bởi người ủy quyền. Sẽ rất khó để xác minh rằng các cấu hình nút của bạn và các tác vụ nút của đại biểu không xung đột với nhau. Một cách thông minh để quản lý điều này có thể là kết hợp các tác vụ trong cấu hình của từng nút và yêu cầu người ủy nhiệm đặt một giá trị trong túi dữ liệu hoặc thuộc tính của máy chủ để báo hiệu cách nó tự cấu hình (nghĩa là nó cần thực hiện nhiệm vụ gì ).
Kết hợp cơ sở hạ tầng của bạn
Nếu mỗi nút chạy nó, các tác vụ phụ thuộc vào các nút khác và bạn không có phụ thuộc về chi phí / kỹ thuật khi chạy các tác vụ trên các nút khác nhau, Bạn có thể muốn xem xét kết hợp các cấu hình nút của mình thành một nút. Điều này sẽ loại bỏ bất kỳ xung đột cấu hình nào bạn có giữa bất kỳ nút nào. Tôi tưởng tượng có ý định rõ ràng để chạy các tác vụ của bạn trên các nút khác nhau, nhưng đây chắc chắn là một tùy chọn để xem xét (thậm chí có thể mất thời gian để viết lại các tác vụ cho các nút khác nhau).