Lịch NodeJS
Lên lịch công việc là quá trình bắt đầu một công việc, nhiệm vụ hoặc chức năng tại một thời điểm cụ thể hoặc khi các sự kiện cụ thể diễn ra. Cron, bộ lập lịch công việc dựa trên thời gian được sử dụng trong các hệ thống giống Unix, là cơ sở cho phần lớn các bộ lập lịch công việc Show Nhiều bộ lập lịch công việc có sẵn cho Node. môi trường thời gian chạy js. Trong khi một số bộ lập lịch này hoạt động trong cả trình duyệt và Node, những bộ lập lịch khác chỉ hoạt động trong Node. Chọn bộ lập lịch trình tốt nhất cho trường hợp sử dụng của bạn có thể khó khăn và tốn thời gian vì mỗi bộ lập lịch này có các đặc điểm riêng Chúng tôi sẽ hướng dẫn bạn qua Nút phổ biến nhất. js trong bài viết này, làm nổi bật các đặc điểm quan trọng, sự khác biệt và điểm tương đồng của chúng. Chúng tôi sẽ làm nổi bật các số liệu và thông tin hữu ích, chẳng hạn như kích thước gói, số sao GitHub, số lượng phát hành, số lượt tải xuống npm, giấy phép gói, phụ thuộc và bảo trì, trong số những thứ khác, ngoài các tính năng và chức năng chính được cung cấp bởi mỗi gói Đây là cách nó được thực hiện#1 LịchNguồn hình ảnhChương trình nghị sự cung cấp khả năng lên lịch công việc linh hoạt bằng cách sử dụng cron và cú pháp dễ tiếp cận hơn. Để sử dụng Lịch làm bộ lập lịch công việc, cơ sở dữ liệu MongoDB của bạn phải đang hoạt động Tạo bộ chứa Docker hoặc sử dụng Atlas cơ sở dữ liệu đám mây của MongoDB để dùng thử bộ lập lịch này nếu bạn không muốn tải xuống và cài đặt MongoDB trên hệ thống của mình. Nếu bạn không muốn sử dụng MongoDB, gói này có lẽ không phải là lựa chọn khả thi cho bạn Nguồn hình ảnhTôi đã xác định một công việc đơn giản đăng nhập vào bảng điều khiển mỗi phút một lần trong đoạn mã bên dưới
Agenda là một bộ lập lịch Node được MIT cấp phép. Nó được phát hành lần đầu cách đây tám năm; . 3. 0. Nó có 8. 5k sao GitHub và 90.562 npm lượt tải xuống hàng tuần Chương trình nghị sự là một gói khá phức tạp, đặc biệt là với số lượng phát hành. Nó có rất nhiều tính năng, nhưng nó cũng có rất nhiều phụ thuộc. Lịch có kích thước cài đặt là 18. 8 MB và kích thước gói xuất bản là 339. 4KB #2 Lịch trình nútNguồn hình ảnhNode Schedule là một công cụ lập lịch công việc linh hoạt cho Node. js hoạt động cả giống và không giống cron. Với tiêu chí lặp lại có thể định cấu hình, nó cho phép bạn lên lịch công việc (chức năng tùy ý) để thực hiện vào những ngày cụ thể. Nó không đánh giá các công việc sắp tới mỗi giây hoặc mỗi phút, chỉ sử dụng một bộ đếm thời gian tại một thời điểm. Thay vì sử dụng lập lịch dựa trên khoảng thời gian, Lịch biểu nút sử dụng lập lịch dựa trên thời gian Đây là một công cụ nguồn mở được MIT cấp phép khác cho Node. lập lịch công việc js. Theo số lượt tải xuống trên npm, đây là bộ lập lịch Node được sử dụng nhiều thứ hai. Node-schedule đã có rất nhiều cơ hội để thích nghi và phát triển trong những năm qua, với 44 phiên bản được sản xuất trước phiên bản 2 hiện tại. 1. 0 Nguồn hình ảnhMặc dù nó cũng có thể được sử dụng linh hoạt, nhưng Node-schedule chủ yếu dành cho lập lịch dựa trên thời gian thay vì lập lịch dựa trên khoảng thời gian. Bạn có thể nhanh chóng lên lịch một công việc để chạy vào những ngày cụ thể với sự trợ giúp của Node-schedule, cũng cung cấp cấu hình định kỳ tùy chọn Bạn có thể lựa chọn sử dụng lập lịch dựa trên ngày và lập lịch theo kiểu cron với lịch trình Node. Khi sử dụng lập lịch kiểu cron, bạn có thể chuyển một biểu thức cron và có trình phân tích cú pháp cron phân tích cú pháp để cho biết khi nào công việc được kích hoạt
Ngược lại, lập lịch dựa trên ngày cho phép bạn chuyển một đối tượng ngày JavaScript thực để xác định ngày thực hiện cụ thể của công việc. Ngoài ra, nó cung cấp lựa chọn liên kết dữ liệu hiện tại để sử dụng trong tương lai Giống như hầu hết các bộ lập lịch Node, Node-schedule có một hạn chế là công việc sẽ chỉ được kích hoạt khi tập lệnh đang hoạt động. Cân nhắc sử dụng Cron nếu bạn muốn lên lịch một công việc sẽ tiếp tục thực thi ngay cả khi không có tập lệnh. Tương tự, nếu bạn muốn tiếp tục công việc giữa các lần khởi động lại, thì đó không phải là một giải pháp thay thế tốt Lịch trình nút có kích thước cài đặt là 3. 15 MB và kích thước xuất bản là 33. 2KB sau khi chạy qua Packagephobia # 3 Nút CronNguồn hình ảnhGói nguồn mở, được cấp phép ISC là nút cron. Một bộ lập lịch Node đã được thiết lập, đáng tin cậy và đã được thử nghiệm khác là Node-cron, được phát hành lần đầu cách đây sáu năm. Vào npm, phiên bản mới nhất, 3. 0. 2, nhận được khoảng 355.569 lượt tải xuống mỗi tuần Nguồn hình ảnhMô-đun nút-cron là một công cụ lập lịch công việc dựa trên crontab GNU nhỏ dành cho nút. js được viết hoàn toàn bằng JavaScript. Mô-đun này cho phép lập lịch công việc theo cú pháp crontab hoàn chỉnh trong nút. js. Node-cron có thể được lập trình để bắt đầu công việc vào những thời điểm định trước hoặc định kỳ _______2_______Node-cron bao gồm các phương thức để xác thực các biểu thức cron và bắt đầu, tạm dừng và kết thúc các công việc đã lên lịch ngoài phương thức lịch trình để lên lịch cho một công việc Node-cron sẽ hữu ích nếu bạn cần lên lịch một công việc đơn giản trong Node hoặc phía máy chủ, nhưng nó sẽ không được sử dụng nhiều nếu bạn cũng cần một bộ lập lịch hỗ trợ worker thread hoặc chạy trong trình duyệt Chỉ có một phụ thuộc cấp một cho Node-cron. Theo Packagephobia, kích thước xuất bản và cài đặt cho Node-cron là 65. 6KB và 5. 26 MB, tương ứng #4 BreeNguồn hình ảnhBree là một công cụ lập lịch công việc JavaScript khác được MIT cấp phép. Cả Node và trình duyệt đều được sử dụng để chạy nó So với các lịch trình khác được đề cập ở trên, gói này khá mới. Kể từ khi nó được phát hành lần đầu tiên cách đây khoảng 9 tháng, đã có khoảng 72 ấn phẩm về nó. Vào npm, phiên bản mới nhất, 9. 1. 2, nhận được khoảng 21.417 lượt tải xuống mỗi tuần Nguồn hình ảnhBree, công cụ lên lịch mới nhất, cung cấp nhiều tính năng hơn đáng kể so với hầu hết các đối thủ cạnh tranh và là công cụ duy nhất hoạt động với Node và trình duyệt. Theo tài liệu, Bree tạo ra các quy trình trong hộp cát bằng cách sử dụng các chuỗi worker trong Node và web worker trong trình duyệt Nó hỗ trợ điều tiết, hoạt động chạy dài, đồng thời, v.v. Để xem danh sách đầy đủ các tính năng, hãy đọc tài liệu Bạn có thể sử dụng Bree để lập kế hoạch cho một công việc đơn giản bằng cách xem đoạn mã dưới đây. Các chức năng cạo dữ liệu. js, sao lưu cơ sở dữ liệu. js và gửi email. js được liệt kê trong thư mục công việc tại thư mục gốc của dự án
Có 18 phụ thuộc cấp một trên gói này. Sau khi chạy qua Packagephobia, kích thước xuất bản là 1. 38 MB và kích thước cài đặt là 5. 64MB Tương tự, sau khi chạy gói thông qua Bundlephobia, kích thước gói được nén và rút gọn của Bree là 64. 3KB nếu bạn đang xem xét thực thi nó ở phía máy khách #5 CronNguồn hình ảnhHãy cẩn thận để không trộn bộ lập lịch Node được cấp phép MIT này với Node-cron. Tên kho lưu trữ GitHub cho cả Cron và Node-cron là node-cron. Bạn có thể cho rằng cái này là nhánh của cái kia nếu bạn tìm kiếm GitHub Kể từ lần phát hành đầu tiên cách đây 10 năm, 40 phiên bản của gói này đã được phát hành. Trình lập lịch trình Node có nhiều lượt tải xuống nhất trong số những thứ được đề cập ở đây, với 1.243.355 lượt tải xuống hàng tuần kể từ phiên bản 2. 1. 0 và lượt tải xuống cao nhất Cú pháp crontab, "* * * * *," có thể được sử dụng để lập kế hoạch khi một công việc sẽ được thực thi. Biểu thức thêm tùy chọn giây, mở rộng mẫu Unix. Tùy chọn giây mặc định bằng 0 nếu nó không được cung cấp Ngoài ra, nó cung cấp tùy chọn cung cấp đối tượng ngày tháng thay vì biểu thức cron. Chức năng của Cron khá giống với Nodecron
Ngoài 1.701 phụ thuộc khác, Cron có một phụ thuộc cấp độ đầu tiên vào npm. Các phụ thuộc cho Cron và Node-cron giống nhau Kích thước cài đặt của nó là 5. 25 MB và kích thước xuất bản của nó là 69. 3KB. Như bạn có thể thấy, kích thước xuất bản chỉ là 3. Lớn hơn 7KB so với Nodecron #6 Bò đựcNguồn hình ảnhBull là một hệ thống xếp hàng cho Node sử dụng máy chủ Redis phải đang chạy. Bạn sẽ phải làm với các bộ lập lịch khác nếu không muốn sử dụng Redis. Nếu cài đặt Redis trên hệ thống của bạn không phải là điều bạn muốn làm, thì có các dịch vụ lưu trữ Redis tích hợp tốt với Bull Nguồn hình ảnhBull tự hào về hệ thống xếp hàng dựa trên Redis nhanh nhất và đáng tin cậy nhất cho môi trường thời gian chạy Node. Gói được MIT cấp phép này có 421.580 lượt tải xuống hàng tuần và đã được xuất bản cách đây 9 năm. Thực tế là nó hiện đang ở phiên bản 4. 10. 0 cho thấy nó trưởng thành và đáng tin cậy như thế nào Trong số những thứ khác, Bull cung cấp lập lịch công việc dựa trên cú pháp cron, giới hạn tỷ lệ công việc, đồng thời, chạy nhiều công việc trên mỗi hàng đợi, thử lại và ưu tiên công việc. Bạn có thể xem tài liệu để biết danh sách đầy đủ các tính năng Với cấu hình Redis mặc định, ví dụ đơn giản bên dưới sẽ viết " Hello World. "đến thiết bị đầu cuối sau năm giây
Có 10 phụ thuộc cấp một trên gói này. Gói có kích thước cài đặt là 9. 14MB và kích thước xuất bản là 170KB #7 Cổ chaiNguồn hình ảnhNút cổ chai là bộ giới hạn tốc độ và bộ lập lịch công việc cho Node. js và một trình duyệt nhỏ và độc lập. Vào npm, phiên bản mới nhất, 2. 19. 5, nhận được khoảng 1.500.861 lượt tải xuống mỗi tuần Vì nút cổ chai thêm rất ít độ phức tạp vào mã của bạn nên đó là một giải pháp đơn giản. Nó được sử dụng rộng rãi bởi các doanh nghiệp tư nhân và phần mềm mã nguồn mở và đã được thử nghiệm trong trận chiến, đáng tin cậy và sẵn sàng sản xuất Nó có khả năng thực hiện các công việc giới hạn tỷ lệ trên một số Nút. js và cho phép phân cụm. Để duy trì độ tin cậy khi có các máy khách và mạng không ổn định, nó sử dụng Redis và các hoạt động nguyên tử nghiêm ngặt. Redis Cluster và Redis Sentinel cũng được hỗ trợ Phần lớn các API có giới hạn tốc độ. Chẳng hạn, để xử lý ba yêu cầu mỗi giây
Nếu bạn muốn dừng chạy nhiều yêu cầu cùng một lúc và có khả năng một số yêu cầu nhất định có thể mất nhiều thời gian hơn 333 mili giây, hãy thêm maxConcurrent. 1
Nút cổ chai tạo ra một hàng nhiệm vụ và hoàn thành chúng một cách nhanh chóng. Các công việc thường sẽ được thực hiện theo thứ tự mà chúng được nhận theo mặc định #8 Tân kế hoạchNguồn hình ảnhNeoplan là một Nút đơn giản, lấy cảm hứng từ Lịch. bộ lập lịch công việc js được xây dựng trên MongoDB. Trên npm, phiên bản mới nhất, 1. 2. 1, nhận được khoảng 7 lượt tải xuống mỗi tuần Neoplan khác với Agenda ở một số điểm, bao gồm thực tế là nó không có nhiều tính năng và cho phép bạn lên lịch các tác vụ có cùng tên nhưng giá trị đầu vào khác nhau Neoplan là một ví dụ về cấu trúc điều khiển đơn giản. Các công việc được tải vào Neoplans bằng cách ánh xạ chúng tới bộ sưu tập cơ sở dữ liệu ________số 8_______Neoplan phải được bắt đầu để nó bắt đầu xử lý các công việc từ cơ sở dữ liệu. Điều này sẽ thiết lập kiểm tra các công việc mới và khoảng thời gian chạy (tùy thuộc vào processEvery). Dòng cũng có thể được dừng lại Đôi khi, nhiều phiên bản nút hoặc máy xử lý từ cùng một hàng đợi có thể được mong muốn. Neoplan có tính năng khóa để ngăn không cho cùng một công việc được xử lý bởi các hàng đợi khác nhau Không có giao diện web tích hợp cho Neoplan. Tuy nhiên, neoplan-UI là một giao diện web độc lập có sẵn Bản tóm tắtHệ sinh thái gói Node cung cấp nhiều bộ lập lịch công việc để người dùng lựa chọn. Sự lựa chọn của bạn về một bộ lập lịch sẽ chủ yếu phụ thuộc vào yêu cầu của bạn vì phần lớn các gói chứa các tính năng sẽ đáp ứng nhu cầu lập lịch công việc cơ bản của bạn Nếu bạn muốn thực hiện lập lịch trình công việc đơn giản và dễ dàng ở phía máy chủ, Cron, Node-cron và Node-schedule có thể đáng để xem xét vì chúng đơn giản, được thiết lập tốt, phổ biến, phụ thuộc và có giấy phép phù hợp. Đối với các nhiệm vụ dễ dàng, chúng tôi khuyên bạn nên sử dụng một trong ba Cả Agenda và Bull đều cung cấp tính năng lập lịch công việc đơn giản, nhưng có thêm các khả năng và hỗ trợ để duy trì cơ sở dữ liệu. Nếu bạn không định sử dụng chức năng bổ sung mà các gói và phần phụ thuộc đó cung cấp, thì bạn sẽ không muốn chúng trong ứng dụng của mình Mặt khác, Bree có thể là lựa chọn tốt nhất của bạn nếu bạn đang tìm kiếm một công cụ lập lịch trình có các tính năng bổ sung như hỗ trợ chuỗi công việc hoặc khả năng chạy trong cả trình duyệt và Node (ngoài tính năng lập lịch trình công việc cơ bản) Giám sát nút của bạn. js với AtatusAtatus theo dõi Node của bạn. js để cung cấp cho bạn bức tranh hoàn chỉnh về trải nghiệm người dùng cuối của khách hàng của bạn. Bạn có thể xác định nguồn gốc của thời gian phản hồi chậm trễ, truy vấn cơ sở dữ liệu và các vấn đề khác bằng cách xác định các tắc nghẽn hiệu suất phụ trợ cho từng yêu cầu API Để giúp việc sửa lỗi dễ dàng hơn, mọi Nút. js được ghi lại bằng dấu vết ngăn xếp đầy đủ và dòng mã nguồn cụ thể được đánh dấu. Để hỗ trợ bạn giải quyết Node. js, hãy xem các hoạt động của người dùng, nhật ký bảng điều khiển và tất cả các Nút. js yêu cầu xảy ra tại thời điểm này. Cảnh báo lỗi và ngoại lệ có thể được gửi qua email, Slack, PagerDuty hoặc webhooks |