Tiếng Việt

Công cụ dành cho nhà phát triển · Trình tạo Crontab

Công việc định kỳ chồng chéo: tại sao các tác vụ dài cần có đàn và cách thêm nó

· Tại sao nó quan trọng

cron sự đồng thời hoạt động

Hai thanh tác vụ chồng lên nhau bên dưới dấu đồng hồ giờ
Hình minh họa vector ToolAcre gốc

Cron bắt đầu công việc theo lịch trình cho dù lần chạy trước đó đã kết thúc hay chưa. Bài đăng này giải thích lý do tại sao điều đó gây ra lỗi và tải tăng đột biến, đồng thời hiển thị thành ngữ bầy khiến các lần chạy trở nên độc quyền.

Hai lần nhập viết cùng một bảng - công việc hàng giờ chậm hơn một giờ và cron tiếp tục bắt đầu các bản sao mới

Biểu thức hàng giờ có thể xác định một ứng viên mới trong khi công việc liên quan đến ứng viên trước đó vẫn đang chạy. Không có gì trong `0 * * * *` ghi lại thời lượng, nhận dạng quy trình hoặc trạng thái hoàn thành. ToolAcre mở rộng phút 0 cho mỗi giờ và có thể liệt kê các thời điểm trong tương lai nhưng không bao giờ quan sát hành động giữa các thời điểm đó.

Điều đó có nghĩa là tần suất và tính độc quyền phải được xem xét riêng biệt. Nếu một tác vụ có thể tồn tại lâu hơn khoảng thời gian của nó, trước tiên hãy định lượng thời lượng trên hệ thống đích. Sau đó chọn một điều khiển đồng thời được hỗ trợ ở đó. Việc chỉnh sửa lịch trình chính xác không thể tự mình bổ sung thêm kiến ​​thức về quy trình hiện có hoặc ngăn chặn lệnh gọi thứ hai.

Biểu thức không chứa trạng thái công việc đang chạy

Trình phân tích cú pháp không có trạng thái trong các cuộc gọi. Nó chuyển đổi văn bản thành các mảng giá trị được sắp xếp và cảnh báo, trong khi `nextRuns` tìm kiếm ngày mà không có bảng quy trình. Giao diện người dùng tính toán lại từ biểu thức hiện tại và không giữ lại vòng đời công việc. Mô hình của nó hỏi khi nào và không bao giờ hỏi liệu một hành động trước đó có còn hoạt động hay không.

Đây là bằng chứng chính xác đằng sau tiêu đề bài viết. Nó không yêu cầu xác nhận về cách mọi cron daemon phân nhánh hoặc xếp hàng. Bản thân ngôn ngữ biểu thức thiếu trường chồng chéo và trình tạo thiếu trình giám sát thời gian chạy. Mọi đảm bảo độc quyền phải đến từ một lớp riêng biệt có hành vi được kiểm tra độc lập.

Các triệu chứng chồng chéo có thể xảy ra phụ thuộc vào lệnh và không được trình tạo dự đoán

Sự chồng chéo có thể tương quan với công việc trùng lặp, khóa tranh chấp hoặc tải, nhưng những kết quả đó phụ thuộc vào lệnh thực hiện. Kiểm tra tạm thời chỉ đọc và nhập trạng thái có những rủi ro khác nhau ngay cả trong cùng một lịch trình hàng giờ. ToolAcre không có trình phân tích cú pháp lệnh, kết nối cơ sở dữ liệu hoặc mô hình tài nguyên để dự đoán chúng.

Ghi lại các thuộc tính đồng thời của hành động thay vì đính kèm các dự đoán lỗi chung vào biểu thức. Đo khoảng thời gian bình thường và tệ nhất được quan sát, xác định trạng thái chia sẻ và quyết định ý nghĩa của lần chạy bị bỏ qua hoặc bị trì hoãn. Những dữ kiện vận hành đó xác định liệu tính độc quyền có cần thiết hay không; năm trường chỉ xác định thời gian ứng cử viên.

cú pháp và hành vi đàn nằm ngoài kho lưu trữ này

Sổ làm việc quy định `flock -n`, đường dẫn khóa và hành vi thoát. Không có quá trình triển khai hoặc kiểm tra đàn nào xuất hiện trong kho lưu trữ này, vì vậy mô-đun này không xác thực cú pháp đó. Tính khả dụng của nền tảng, quyền của hệ thống tệp và thời gian khóa đều nằm ngoài mã lịch trình của trình duyệt.

Nếu đàn phù hợp với mục tiêu, hãy sử dụng tài liệu đã cài đặt của nó và thử nghiệm kịch bản tranh chấp vô hại ở đó. Không suy ra thành công vì các trường thời gian có tiền tố vượt qua ToolAcre. Một biểu thức hợp lệ có thể đặt trước một lệnh khóa không hợp lệ, giống như một khóa đúng có thể bảo vệ một lịch trình được viết cho một phương ngữ khác.

Ranh giới đã làm việc: xác minh thời gian hàng giờ mà không yêu cầu ngữ nghĩa khóa

Sử dụng `0 * * * *` làm lịch làm việc. Mô tả cho biết phút 0 trôi qua mỗi giờ và các bản xem trước sẽ tiến tới ranh giới giờ liên tiếp sau thời điểm bắt đầu. Điều đó chứng tỏ nhịp tính toán ToolAcre. Nó không chứng minh điều gì sẽ xảy ra khi thời lượng của lệnh vượt qua một trong những ranh giới đó.

Đưa kỳ vọng hàng giờ đó vào thử nghiệm đồng thời phía mục tiêu. Bắt đầu một phiên bản chạy dài vô hại, tiếp cận ứng viên tiếp theo và quan sát điều khiển đã chọn. Giữ kết quả làm bằng chứng thực hiện tách biệt với việc xem xét biểu thức. Điều này giúp duy trì chẩn đoán rõ ràng nếu thời gian hoặc khóa sau này thay đổi.

Cơ chế độc quyền thay thế yêu cầu bằng chứng cụ thể về mục tiêu

Các khóa bên trong tập lệnh, chính sách giám sát và hành vi của người quản lý dịch vụ đều có thể mang lại tính độc quyền nhưng ngữ nghĩa của chúng không thể được xếp hạng từ nguồn này. ToolAcre cũng không biết liệu việc bỏ lỡ một lần chạy có được chấp nhận hay không, liệu công việc có nên xếp hàng hay liệu lần thử thứ hai có nên thoát hay không.

Xác định những kết quả đó trước khi lựa chọn một cơ chế. “Không bao giờ chồng chéo” chỉ là một chính sách; hợp nhất, xếp hàng và song song với trạng thái phân vùng là những thứ khác. Trình tạo có thể cung cấp nhịp ứng viên được sử dụng trong cuộc thảo luận chính sách, trong khi lựa chọn triển khai vẫn căn cứ vào thời gian chạy thực tế.

Khóa phân tán vẫn nằm ngoài cả phân tích lịch trình và xem trước

Khóa được chia sẻ giữa các máy chủ giới thiệu sự phối hợp ngoài tính toán lịch địa phương. Không có danh tính máy chủ, cửa hàng mạng hoặc hợp đồng thuê nào xuất hiện trong trình phân tích cú pháp. Do đó, bài viết tránh gợi ý rằng bản xem trước tệp cục bộ hoặc trình duyệt có thể giải quyết vấn đề đồng thời phân tán.

Đối với công việc có nhiều máy chủ, hãy sử dụng thiết kế phối hợp có các chế độ lỗi, hành vi sở hữu và khôi phục được ghi lại và kiểm tra. Giữ lịch trình năm trường làm đầu vào cho hệ thống đó. Một biểu thức có thể di động hoàn hảo trong khi lớp độc quyền dành riêng cho từng môi trường.

Bài học rút ra: lịch trình và tính độc quyền là những vấn đề riêng biệt - trình tạo xử lý vấn đề đầu tiên, đàn xử lý vấn đề thứ hai

Lên lịch trả lời khi một lần thử khác đủ điều kiện; câu trả lời độc quyền liệu nó có thể bắt đầu hay không. ToolAcre chỉ triển khai tính năng trước thông qua mở rộng trường và xem trước đồng hồ treo tường. Việc thiếu trạng thái quy trình của nó là một ranh giới kiến ​​trúc, không phải là một mặc định ẩn.

Xây dựng và xác minh nhịp độ, đo lường thời lượng hành động, sau đó kiểm tra chính sách đồng thời được hỗ trợ mục tiêu. Việc báo cáo những điều đó dưới dạng các biện pháp kiểm soát riêng biệt giúp cả hai đều có thể xem xét được. Trình tạo không lên lịch công việc và biểu thức được sao chép không bao giờ được mô tả là bảo vệ khỏi việc thực thi chồng chéo.