Nhóm công nhân NodeJS
Các từ khóa Show Trong mẫu mã ở trên, lệnh gọi api sẽ được thực hiện, nhưng mọi thứ trong hàm Trong đoạn trước, chúng ta đã thảo luận rằng việc tạo worker sẽ tạo một phiên bản nút mới. Điều này có nghĩa là tạo ra những người lao động mới là một nhiệm vụ tương đối nặng nề. Cũng có nguy cơ tạo ra nhiều công nhân và làm ngập hệ thống máy chủ với các quy trình. Đây là nơi tổng hợp tài nguyên xuất hiện. Chúng tôi sẽ tạo một lượng công nhân nhất định khi chúng tôi khởi động ứng dụng của mình và sử dụng lại số lượng đó mỗi khi chúng tôi muốn chạy một tác vụ trên một quy trình khác. Nhóm công nhân này sẽ được quản lý bởi người quản lý nhóm, người nhận nhiệm vụ và sẽ giao chúng cho một công nhân nhàn rỗi. Bản thân các chức năng sẽ được bao bọc trong giao diện Chúng tôi sẽ bắt đầu bằng cách xác định hình dạng chung của kiến trúc của chúng tôi. Sẽ có một nhóm công nhân chứa tất cả công nhân và hàng đợi với các tác vụ. Tôi quyết định cung cấp cho workerpool một phương thức công khai. Việc triển khai các giao diện đó sẽ bắt đầu bằng việc tạo một hàm tạo cho nhóm công nhân. Chức năng này bắt đầu bằng việc xác định tất cả các phần bên trong của nhóm
Các công nhân được xây dựng với một tập lệnh sẽ là quy trình chính của phiên bản nút đó. Chúng tôi sẽ xác định nội dung của nó sau này. Với những định nghĩa đó, chúng ta có thể bắt đầu thêm logic để thực thi các tác vụ. Chúng tôi sẽ bắt đầu điều này bằng cách tạo một chức năng sẽ chạy các tác vụ tiếp theo trên hồ sơ tồn đọng nếu có một công nhân sẵn sàng. Đối với điều này, một số bước nhất định phải được thực hiện
Cuối cùng, chúng tôi sẽ gọi lại Sau đây là lúc tạo tập lệnh sẽ chạy bên trong công nhân. Tập lệnh này sẽ lắng nghe các nhiệm vụ đến. Khi một tác vụ đến, nó sẽ chạy chúng và gửi lại kết quả cùng với mã định danh. Để chạy chức năng của chúng tôi, trước tiên chúng tôi sẽ phải biến nó thành chức năng được đặt tên. Sau đó, chúng ta có thể sử dụng Điều tiếp theo sẽ xảy ra là workerpool nhận kết quả và giải quyết tác vụ. Đối với điều này, chúng tôi thêm một trình nghe Bây giờ chúng ta đã có phần bên trong của workerpool, chúng ta có thể bắt đầu tạo và xếp hàng các tác vụ. Các tác vụ sẽ được tạo bởi một hàm được trả về từ Bên trong
Lưu ý rằng chúng tôi đặt trình phân giải bên trong hàm tạo Promise thành bản đồ ở mức đóng cao hơn. Bằng cách này, chúng ta có thể trả lại Promise và giải quyết nó sau này từ bên ngoài Quá trình chính chỉ chạy một chức năng tại một thời điểm, vì vậy chúng tôi không nhận được các điều kiện cạnh tranh trong taskIdCounterBây giờ là lúc để cho hệ thống của chúng ta chạy thử lần đầu tiên. Trong ví dụ bên dưới, tôi chạy 3 hàm trong nền tính toán dãy Fibonacci gồm các số khác nhau. Tôi bạn đọc đầu ra của bàn điều khiển, bạn sẽ thấy rằng tác vụ chạy song song và kết thúc vào các thời điểm khác nhau async 8 vì nó sẽ được chạy trong một phiên bản nút khác nơi mà async 8 không tồn tại Chuỗi nhiệm vụMột tính năng thường được sử dụng của Lời hứa là xâu chuỗi nhiều trong số chúng theo trình tự trong đó mỗi lời hứa tiếp theo phụ thuộc vào đầu ra của lời hứa trước đó. Cuộc gọi api trong phần giới thiệu của bài viết này là ví dụ tốt về điều này. Chúng tôi sử dụng kết quả của Để triển khai, chúng tôi đơn giản ghi đè hàm api 6 hay khôngTính năng này được sử dụng như thế này Chuỗi nhiệm vụ hoạt động giống như với lời hứaKết luậnTrong bài viết này, tôi đã thảo luận về một số điểm yếu lớn nhất và các tính năng mạnh nhất của JavaScript. Xung quanh vấn đề này, chúng tôi đã viết một nhóm công nhân được quản lý cho phép chúng tôi đi xa hơn theo con đường đồng thời mà JavaScript đã từng được thiết kế để thực hiện. Mã nguồn có thể được tìm thấy trên Github. Bài viết này là phần tiếp theo của bài viết mới nhất của tôi trên ITNEXT mà bạn có thể thích Nhóm công nhân Nodejs là gì?Nhóm công nhân của nút. js được triển khai trong libuv (tài liệu), hiển thị API gửi tác vụ chung . Nút. js sử dụng Nhóm công nhân để xử lý các tác vụ "đắt tiền". Điều này bao gồm I/O mà hệ điều hành không cung cấp phiên bản không chặn, cũng như các tác vụ đặc biệt sử dụng nhiều CPU.
Làm cách nào để tạo nhóm công nhân trong nodejs?nhóm nhân viên . Đặc trưng. dễ sử dụng. . Tại sao. JavaScript dựa trên một vòng lặp sự kiện duy nhất xử lý một sự kiện tại một thời điểm. . Cài đặt. Cài đặt qua npm. npm cài đặt workerpool Trọng tải. Để tải workerpool trong một nút. js (cả ứng dụng chính cũng như worker). . Sử dụng. Chức năng giảm tải động. . ví dụ. . API. . lộ trình Nhóm công nhân là gì?Mẫu nhóm công nhân là thiết kế trong đó một số lượng công nhân cố định được giao một luồng nhiệm vụ để xử lý trong hàng đợi . Các nhiệm vụ ở trong hàng đợi cho đến khi một nhân viên rảnh rỗi nhận nhiệm vụ và thực hiện nó. Nhóm công nhân rất tuyệt vời để kiểm soát việc thực thi đồng thời cho một tập hợp các công việc đã xác định.
Có bao nhiêu luồng công nhân trong nodejs?Nút. js là thời gian chạy đơn luồng . Điều này xuất phát từ JavaScript là ngôn ngữ chặn đồng bộ, chạy mọi thứ trong một luồng. Nút. |