Hàng đợi yêu cầu javascript

vậy khi có yêu cầu tới thì đoạn mã trên sẽ chạy lại từ đầu phải không ạ?

Khi yêu cầu tới, ứng dụng đã biết khi có yêu cầu tới / điểm cuối, nó sẽ gọi tới 1 trình xử lý xác định, nên chỉ mã trình xử lý được gọi thôi

Hy vọng nó giúp

Xem thêm

  • Tài liệu chính chủ về vòng lặp sự kiện
  • Tài liệu chính chủ về việc chặn vòng lặp sự kiện

bạn hiểu thì dù câu cú có gì không tốt, thì vẫn sẽ trả lời hay hơn, vậy với việc bạn chỉ trả lời chung chung, vô tưởng vô phạt như vậy
ở trên mình thấy bạn nói, cái gì bạn cũng đã học qua, làm qua và trông có vẻ như những cái đó khá phức tạp mà bạn vẫn hiểu
trong khi câu của mình chỉ có settimeout và console nhưng bạn lại không giải thích được
nếu bạn có kiến thức về asynchonous, event loop, job queue bla bla, mà vẫn vẫn trả lời theo cái cách như vậy, thì bạn mong đợi câu trả lời như thế nào cho topic của bạn
thâm chí là Sherly trả lời chi tiết hơn nhưng bạn lại không chấp nhận câu trả lời, cũng không chấp nhận là bạn thiếu kiến thức

Hàng đợi yêu cầu javascript
Sherly1001

Cái quan trọng nhất bạn bỏ nó đi.

Hàng đợi yêu cầu javascript

Xin phép được quote lại câu này của @Sherly1001
Có thể là bạn có học, có đọc qua, nhưng bạn tự cho mình là mình hiểu (có thể là vì ví dụ lúc này

Sau những câu xàm xàm trên thì mình trở lại câu hỏi mình đã đặt.
Với góc độ của người lập trình, đơn vị nhỏ nhất để thực thi chính là “câu lệnh (biểu thức)”, hay mình còn gọi là câu lệnh.
Bài toán đặt ra là câu lệnh nào trước, câu lệnh nào sau, và vì sao một triệu dòng console mà nó chạy 1s mới xong, nhưng cái settimeout 0s nó không chen vào được

Ví dụ thực tế. Xếp hàng
Có 1000003 ông đứng xếp hàng để cập nhật hồ sơ

  • người đầu tiên, người nhận hồ sơ nói, hồ sơ của anh này chưa đủ điều kiện, về bổ sung, tiếp theo
  • 500k ông tiếp tục được xử lý vì hợp lệ
  • add a same same with the first first
  • 500k next to the valid
  • the end of the end of not enough condition

câu hỏi đặt ra, mấy cái ông có hồ sơ không hợp lệ, cần bổ sung, họ có thể bổ sung trong vòng 0 luôn (giả sử họ là siêu nhân) thì sao?ông tiếp tân nhận hồ sơ cũng nhanh y như vậy, chưa hợp lệ là chưa hợp lệ, ổng không muốn đợi, kể cả 0s, chỉ hợp lệ hay không, chỉ có yes/no, không có chờ gì cả
nên cái ông có hồ chưa hợp lệ đó bị đá ra khỏi hàng mà gọi người kế tiếp

dù Gấu có thể cập nhật hồ sơ trong vòng 0s, nhưng gấu không thể chen vào cái hàng đang xếp hạng (1 triệu lẻ 2 người còn lại trong hàng), có mà bị đấm chứ ở đó mà chennên dù cho ổng có nhanh cỡ nào, thì ổng cũng đã bị đưa vào cuối hàng đợi rồi
tương tự với 2 cái ông kia cũng bị reject và phải xếp hàng lại

đoạn mã trên mình cũng có cơ chế y như vậy
settimeout 0s hơi tào lao thật, nhưng nó vẫn có ý nghĩa và trong thực tế, người ta vẫn sử dụng

thưởng cho bạn thêm 1 đoạn mã câu hỏi, thử đoán, chạy và giải thích

// hàm này trả về result sau thời gian wait milisecond
const runAfter1s = (result, wait) => new Promise(ff => setTimeout(() => ff(result), wait))

async function ahihi() {
    console.log('before');
    const result = await runAfter1s(1, 1000); // chờ 1s và trả về 1
    console.log(result);
    console.log('after');
}

console.log('start');
ahihi(); // trong thực tế, người ta vẫn khai báo async nhưng không có dùng kèm await nhé, để nó code trong hàm nó đẹp hơn, hoặc người ta có thể gọi hàm và .then
console.log('end');

@library @kisuluoibieng @Sherly1001
chào các bạn
đêm qua mình đã nghiên cứu 2 bài viết về event loop , 1 thứ minh họa là code .
mình có 1 vài thắc mắc sau ạ:
bài viết 1 thì họ bảo rằng

Hàng đợi yêu cầu javascript

hình ảnh768×576 96. 8KB


khi yêu cầu tới sẽ được đưa vào hàng đợi sự kiện, họ sẽ phân loại yêu cầu, yêu cầu bất kỳ tác vụ nào có tác vụ đọc ghi db(gọi là tác vụ I/O) thì sẽ xử lý nhóm luồng xử lý, còn yêu cầu không có tác vụ chặn I/O thì

1 bài viết thứ 2 mình đọc thì ở đây họ minh họa 1 đoạn code nho nhỏ chứ không phải code server

Hàng đợi yêu cầu javascript

hình ảnh923×838 53 KB

const foo = () => console.log("First");
const bar = () => setTimeout(() => console.log("Second"), 500);
const baz = () => console.log("Third");

bar();
foo();
baz();

Hàng đợi yêu cầu javascript

hình ảnh923×838 53 KB

.

Mình có 6 thắc mắc sau ạ.
1. hàng đợi sự kiện ở ảnh 1 và hàng đợi tác vụ ở ảnh 2 có phải là 1 không? . event loop khi thực thi code server ( tức lắng nghe yêu cầu) và event loop khi thực thi 1 đoạn code giống hay khác nhau, nếu khác nhau thì ở điểm gì?
2. event loop khi thực thi code server ( tức lắng nghe request) và event loop khi thực thi 1 đoạn code giống hay khác nhau, nếu khác nhau thì ở điểm gì?

3. vòng lặp sự kiện bên trong nó bao gồm những gì thành phần.
theo như ảnh 2 thì khi thực thi 1 đoạn code thì nó gồm 3 phần. web API/System API ( setTimeOut(), SetInterval() thuộc về webAPi/SystemAPI ), callstack và queue, hay nếu nó chỉ là cái ký hiệu xoay vòng (tracker) theo dõi callstack, queue thì ở ảnh 1 tại sao

4. Có 4 luồng trong 1 nhóm luồng theo mặc định, mỗi luồng này bản thân nó có 1 vòng lặp sự kiện riêng cho nó không?
5. Các yêu cầu chứa tác vụ đọc ghi db phải gửi qua luồng tạm gọi là luồng t1 trong nhóm luồng xử lý, giả sử quá trình đọc ghi db kết thúc thì hàm gọi lại của sự kiện đọc ghi, lúc này sẽ thực hiện luồng chính thực thi mã . các bộ điều khiển làm đa số đều phải đọc ghi db, trường hợp có 5 yêu cầu đều yêu cầu đọc ghi db, mà chỉ có 4 luồng trong 1 nhóm luồng, như vậy giả sử có 5 yêu cầu cùng lúc thì yêu cầu thứ 5 sẽ ở đâu
6. các controller làm đa số đều có phải đọc ghi db, trường hợp có 5 request đều yêu cầu đọc ghi db, mà chỉ có 4 thread trong 1 thread pool, như vậy giả sử có 5 request cùng lúc thì request thứ 5 sẽ ở đâu?

hy vọng các Bạn có thể giúp mình trả lời 6 câu hỏi 1 cách chi tiết và trực tiếp ạ, mình cảm kích, cảm ơn và đánh giá cao các Bạn giúp mình trả lời 6 câu hỏi này

lưu ý nhỏ, để rõ thì mình nói rõ thêm câu từ mình viết. “thực thi” tức là đoạn mã thực thi được bật ra khỏi ngăn xếp và chạy luôn.
https. //www. tạp chídev. com/7462/node-js-architecture-single-threaded-event-loop
https. // nhà phát triển. đến/lydiahallie/javascript-visualized-event-loop-3dif

Quao

Hàng đợi yêu cầu javascript

từ chối trách nhiệm. tôi không phải chuyên gia về Node JS

Hàng đợi yêu cầu javascript
ilovelập trình

1. hàng đợi sự kiện ở ảnh 1 và hàng đợi tác vụ ở ảnh 2 có phải là 1 không?

2 hàng đợi sự kiện đó là một.
Nếu cậu đọc tài liệu chính chủ tớ đã đưa cho cậu ở comment trước, cậu sẽ đọc được đoạn này.

Trên thực tế, Vòng lặp sự kiện không thực sự duy trì hàng đợi. Thay vào đó, nó có một tập hợp các bộ mô tả tệp mà nó yêu cầu hệ điều hành giám sát, sử dụng cơ chế như epoll (Linux), kqueue (OSX), cổng sự kiện (Solaris) hoặc IOCP (Windows). Các bộ mô tả tệp này tương ứng với ổ cắm mạng, bất kỳ tệp nào nó đang xem, v.v. Khi hệ điều hành nói rằng một trong những bộ mô tả tệp này đã sẵn sàng, Vòng lặp sự kiện sẽ dịch nó thành sự kiện thích hợp và gọi (các) cuộc gọi lại được liên kết với sự kiện đó. Bạn có thể tìm hiểu thêm về quy trình này tại đây

In that said. Vòng lặp sự kiện duy trì một tập tin mô tả tập tin được theo dõi bởi hệ thống điều hành. Bộ mô tả tệp này có thể là ổ cắm mạng, bất kỳ tệp nào đang được theo dõi, v. v. Khi HHĐ nói rằng file mô tả đã có sẵn, event loop sẽ dịch nó thành các sự kiện và gọi các hàm callback liên quan đến sự kiện đó.
Cậu có thể nghe thêm chi tiết về vòng lặp sự kiện tại đây.

Loằng ngoằng quá đúng không? . Sự kiện đó được hiểu bao gồm cả các cuộc gọi lại liên quan đến sự kiện đó.

Hàng đợi yêu cầu javascript
Để cho đơn giản, cậu chỉ cần hiểu các event sẽ được đặt trong queue (thế nên nó được gọi là event queue, không phải mafia queue - queue chứa mafia, werewolf queue - queue chứa người sói). Các event đó được hiểu bao gồm cả các callback liên quan tới event đó.

Hàng đợi yêu cầu javascript
ilovelập trình

2. event loop khi thực thi code server (tức lắng nghe yêu cầu) và event loop khi thực thi 1 đoạn code giống hay khác nhau, nếu khác nhau thì ở điểm gì?

Hử?
Đó là 2 trạng thái khác nhau của vòng lặp sự kiện đúng không?

Hàng đợi yêu cầu javascript
ilovelập trình

3. vòng lặp sự kiện bên trong nó bao gồm những gì thành phần.
theo như ảnh 2 thì khi thực thi 1 đoạn code thì nó gồm 3 phần. web API/System API ( setTimeOut(), SetInterval() thuộc về webAPi/SystemAPI ), callstack và queue, hay nếu nó chỉ là cái ký hiệu xoay vòng (tracker) theo dõi callstack, queue thì ở ảnh 1 tại sao

Hử?
Vòng lặp sự kiện chỉ là 1 vòng lặp mà bạn

Hàng đợi yêu cầu javascript
Giống như cách bạn code bất cứ hệ thống hướng sự kiện nào khác, bạn cần .
Theo tài liệu chính chủ về vòng lặp sự kiện mà mình đã cung cấp ở comment trước, bạn nên hiểu rõ Vòng lặp sự kiện là 1 vòng lặp có nhiều giai đoạn khác nhau.
Cái gọi ngăn xếp kia là thành phần của môi trường thời gian chạy (a. k. a v8 engine), giống như tất cả các ngôn ngữ khác, trong thời gian chạy bạn có ngăn xếp cuộc gọi để theo dõi bất kỳ hàm nào được gọi, với các tham số nào, và khi gọi xong thì quay lại hàm nào. Bạn có thể tìm hiểu thêm về trình biên dịch để hiểu thêm về ngăn xếp cuộc gọi.
Hàng đợi ở ảnh 1 không có ngăn xếp cuộc gọi, đơn giản vì bài viết tập trung vào hoạt động của vòng lặp sự kiện ở mức cao. Ở ảnh 2, bài viết muốn nói sâu hơn về những gì hoạt động trong môi trường runtime, đặc biệt là cách callback được gọi, nên call stack được liệt kê ở đây.

Hàng đợi yêu cầu javascript
ilovelập trình

4. Có 4 luồng trong 1 nhóm luồng theo mặc định, mỗi luồng này bản thân nó có 1 vòng lặp sự kiện riêng cho nó không?

Không. Nhóm công nhân là một đơn vị khác, nó chỉ có hàng đợi riêng của nó thôi. Quay lại từ tài liệu chính chủ mà tớ đã đưa cho cậu

Ngược lại, Worker Pool sử dụng một hàng đợi thực có các mục nhập là các tác vụ cần xử lý. Một Công nhân bật một nhiệm vụ từ hàng đợi này và làm việc với nó, và khi hoàn thành, Công nhân sẽ đưa ra một sự kiện “Ít nhất một nhiệm vụ đã hoàn thành” cho Vòng lặp Sự kiện

Hàng đợi yêu cầu javascript
ilovelập trình

5. Các yêu cầu chứa tác vụ đọc ghi db phải gửi qua luồng tạm gọi là luồng t1 trong nhóm luồng xử lý, giả sử quá trình đọc ghi db kết thúc thì hàm gọi lại của sự kiện đọc ghi, lúc này sẽ thực hiện luồng chính thực thi mã

Vòng lặp sự kiện (a. k. một luồng chính) sẽ thực hiện cuộc gọi lại đó. Nếu bạn đọc kỹ quote ở ngay trên của tớ về Worker Pool, bạn sẽ hiểu

Hàng đợi yêu cầu javascript
ilovelập trình

6. các bộ điều khiển làm đa số đều phải đọc ghi db, trường hợp có 5 yêu cầu đều yêu cầu đọc ghi db, mà chỉ có 4 luồng trong 1 nhóm luồng, như vậy giả sử có 5 yêu cầu cùng lúc thì yêu cầu thứ 5 sẽ ở đâu

Yêu cầu thứ 5 sẽ phải chờ trong hàng đợi nhóm của công nhân, cho tới khi một công nhân được giao nhiệm vụ thực hiện cho yêu cầu thứ 5

Hy vọng nó giúp

trước khi trả lời thì mình nói thêm về cái ví dụ về xếp hạng hàng để cập hồ sơ cho khách tếp nhận trên
Theo yêu cầu của bạn, mỗi bạn sẽ có nhiều lệnh, mỗi
Các ông này đi theo nhóm, có thể nhóm 1 người, 2 người hay n người, hiển nhiên các ông đi theo nhóm thì sẽ xếp hàng liên tục với nhau, như thế này

1 1 1 1 2 2 3 4 4 4 4 4 5 6 7 7 8

4 ông nhóm 1, 2 ông nhóm 2, 1 ông nhóm 3
Mỗi lần yêu cầu của bạn sẽ có thể thực hiện 1 hoặc nhiều lệnh tương ứng với các ông xếp hàng, ví dụ

Ở đây ta chỉ có 1 ông tân, tiếp nhận yêu cầu (xử lý tại đây của cái hình 1)
khi tiếp nhận yêu cầu của mấy ông nhóm 1, thì có cái
còn cái ông thứ 3 bị đưa cho bên khác bổ sung hồ sở xong, thì ông thứ 3 qua lấy, lúc này thì ổng phải ra cuối hàng

nhưng mà 4 ông này có thể chơi rất thân nhau, nên ông thứ 4 muốn đợi ông thứ 3 luôn, tức là đang muốn 4 ông này đúng thứ tự, thì buộc lòng ông 4 phải đợi ông 3 xong (
và hiển nhiên là tiếp tân mời ông kế tiếp là ông đầu tiên của nhóm 2 lên làm việc

Hàng đợi yêu cầu javascript
ilovelập trình

1. hàng đợi sự kiện ở ảnh 1 và hàng đợi tác vụ ở ảnh 2 có phải là 1 không?

con số 2 không có ghi kèm theo chú thích rõ ràng, hơn nữa có web api thì cái này đang nói đến js của trình duyệt, nhưng về idea hay cơ chế thì đúng

Hàng đợi yêu cầu javascript
ilovelập trình

2. event loop khi thực thi code server (tức lắng nghe yêu cầu) và event loop khi thực thi 1 đoạn code giống hay khác nhau, nếu khác nhau thì ở điểm gì?

Lắng nghe yêu cầu thì không phải là thực thi, ít nhất nó không phải là cái cục bộ để “xử lý tại đây” ở hình 1
“vòng lặp sự kiện khi thực thi” ý bạn nói

đón ở đây giống như lời mời 4 anh nhóm 1 của ví vụ bên trên,
ông 1. 1 và 1. 2 ok, to the 1. 3 thì gấu cần bổ sung hồ sơ,
ông 1. 4 thì không muốn làm trước ông 1. 3 nên quyết định chờ đợi, có thể là 2 ông ra cuối hàng, ông 1. 1 và 1. 2 xong rồi nhưng cùng chưa về (yêu cầu 1 chưa kết thúc)
nhưng tiếp tân thì không đợi, kêu ông 2. 1 up, and cứ thế

  1. Event loop chỉ là cái tên người ta gọi nó vì cái cơ chế của nó (thì cũng là do người ta code ra thôi)
    https. // nhà phát triển. mozilla. org/en-US/docs/Web/JavaScript/EventLoop
    giờ bạn hỏi nó bao gồm cái gì cũng vậy, giống như bạn hỏi settimeout có gì ở trong đó, mã như nào, cơ chế đếm ra
    ảnh cũng chỉ là mô tả, cũng chỉ là cách mô tả khác nhau, ở ảnh 1 thì các nó nằm trong phần process here là cái nào tới process here chính là callstack

Hàng đợi yêu cầu javascript
ilovelập trình

4. Có 4 luồng trong 1 nhóm luồng theo mặc định, mỗi luồng này bản thân nó có 1 vòng lặp sự kiện riêng cho nó không?

không, và không liên quan đến luồng chính của nút nữa
4 luồng mà bạn nói rằng có thể là luồng được các thư viện của nền tảng nó gọi, lúc này thì nó không . ví dụ.
khi mà các thread này done nhiệm vụ, nó sẽ raise một cái event về cho node, mà khi node gọi nó đã đăng kí. ví dụ:

unlink('/tmp/hello', (err) => {
  if (err) throw err;
  console.log('successfully deleted /tmp/hello');
});

// ở đây, node gọi thư viện bên dưới (fs) để xóa file, và nó đăng kí một cái event handler, khi xóa xong thì thì bên dưới raise event mà chính cái handler lúc nãy handle

Hàng đợi yêu cầu javascript
ilovelập trình

5. Các yêu cầu chứa tác vụ đọc ghi db phải gửi qua luồng tạm gọi là luồng t1 trong nhóm luồng xử lý, giả sử quá trình đọc ghi db kết thúc thì hàm gọi lại của sự kiện đọc ghi, lúc này sẽ thực hiện luồng chính thực thi mã

như trên, thực thi xong thì bắn cái event vô hàng đợi event queue (và mỗi event thì có handler của nó) (dù ông 1. 3 chỉ cần 0s để hoàn thành, nhưng gấu cũng phải ra phía sau hàng)

Hàng đợi yêu cầu javascript
ilovelập trình

6. các bộ điều khiển làm đa số đều phải đọc ghi db, trường hợp có 5 yêu cầu đều yêu cầu đọc ghi db, mà chỉ có 4 luồng trong 1 nhóm luồng, như vậy giả sử có 5 yêu cầu cùng lúc thì yêu cầu thứ 5 sẽ ở đâu

không có cái gọi là controller ở đây
nếu nói về cơ chế thread pool thì lúc này nó đã vượt qua vấn đề của js, bạn nên tìm hiểu lại về os/ process/ thread
bạn không tự can thiệp được chuyện thread pool nó làm gì ở dưới đâu
bạn chỉ kếu nó chạy, chạy xong thì gọi lại cho bạn mà thôi

Ban đầu khi đối đáp với @Sherly1001, bạn nói cái gì bạn cũng học qua, chí làm qua, nhưng khi đọc 6 câu hỏi này của bạn, mình thấy có vẻ như bạn đang ngộ nhận kiến ​​thức của mình giải thích được những điều đó

bạn nên dành nhiều thời gian hơn để thử nghiệm, và kiểm chứng kiến ​​thức mà bạn cho rằng bạn đã thu được, mà nodejs là mã nguồn mở, bạn có thể vào đọc mã nguồn để hiểu thêm

bài này mục đích không phải để đánh vào mặt bạn, vì ai cũng sẽ có lúc như vậy, tưởng mình biết tất cả, nhưng chỉ là phần nổi của băng tần
kiến

2 đoạn mã ví dụ trên của mình, bạn sẽ không thể thấy ở bất kỳ đâu vì đó là do mình trong quá trình làm việc mà tiếp nhận vấn đề, nên mới viết ra để hỏi các bạn còn mơ.
nhưng có lẽ là bạn không hứng thú với những ví dụ đó, nên thôi, mình cũng chỉ chia sẻ tới đây mà thôi
kiến thức hàn lâm như bạn đã đọc thì search là ra thôi, nên bạn có thể search các trang khác, hoặc post câu hỏi lên stackoverflow, nơi đó sẽ có nhiều cao thủ hơn, hoặc có khi là contributor của nodejs giải đáp cho bạn

còn một điều nữa, là bạn đang học nodejs, bất đồng bộ của nodejs, không nên tập trung vào express hay framework khác thì cũng chỉ là code javascript/nodejs mà thôi

In commnet before em has to nghe to process. That has must be process is not?

vi. m. wikipedia. tổ chức
Hàng đợi yêu cầu javascript

Tiến trình (khoa học máy tính)

Trang dành cho người dùng chưa đăng nhập tìm hiểu thêm Trong khoa học máy tính, tiến trình (tiếng Anh. process) là một thực thể (ví dụ) của một chương trình máy tính đang được thực hiện bởi một hoặc nhiều luồng (luồng). Một tiến trình có riêng một không gian địa chỉ, có ngăn xếp (ngăn xếp) riêng rẽ, có bảng chứa các tập tin đặc tả (bộ mô tả tệp) được mở cùng tiến trình và đặc biệt là có một định danh PID (định danh tiến trình)

Một tiến trình có riêng một địa chỉ không gian, có ngăn xếp (ngăn xếp) riêng rẽ, có bảng chứa các tập tin mô tả đặc tả (bộ mô tả tệp)

Ý là đang nói đến việc mỗi process là một luồng xử lý riêng, được cấp cho một stack, heap riêng đúng không ạ?

Hàng đợi yêu cầu javascript
Chương trình multi stream thì xử lý nhiều stack cùng lúc? programming

Dạ anh chị cho em hỏi. Ngôn ngữ đơn luồng thì tạo ra ứng dụng chỉ có 1 ngăn xếp bộ nhớ khi chạy (ví dụ javascript có 1 ngăn xếp cuộc gọi), ngôn ngữ đa luồng lập trình ứng dụng có nhiều ngăn xếp khi chạy đúng không ạ?

Hàng đợi yêu cầu javascript
thư viện

Event loop only is 1 loop that you

Cho em hỏi vòng lặp này có gì khác với vòng lặp của cậu bé này trình bày ạ?

Hàng đợi yêu cầu javascript
Lập trình hướng sự kiện (hướng sự kiện) có gì khác với các kiểu lập trình lập trình khác

Cháu chào các chú, Cháu muốn hỏi là lập hướng sự kiện là gì? . Cháu cảm giác như nó có một thế lực vô hình…

=>> Câu trả lời cuối cùng của chủ đề này là.
Máy chủ sẽ xử lý tuần tự 1000 yêu cầu, có thể do CPU quá mạnh nên cảm giác 1000 yêu cầu này xử lý bài hát nhưng thực hiện xử lý yêu cầu thứ 1000 cuối cùng. Nếu có công cụ đo thời gian thì yêu cầu thứ 1000 được xử lý theo cách yêu cầu thứ 1 trong khoảng thời gian nào đó phải không?

Hàng đợi yêu cầu javascript
ongchamchi

Máy chủ sẽ xử lý tuần tự 1000 yêu cầu, có thể do CPU quá mạnh nên cảm giác 1000 yêu cầu này xử lý bài song nhưng thực hiện yêu cầu thứ 1000 xử lý cuối cùng

Đúng là v, nhưng được đưa vào cuối cùng của điều khiển không có nghĩa là yêu cầu thứ 1000 sẽ được xử lý cuối cùng.

Hàng đợi yêu cầu javascript

Hàng đợi yêu cầu javascript
ongchamchi

Nếu có công cụ đo thời gian thì yêu cầu thứ 1000 được xử lý theo cách yêu cầu thứ 1 trong khoảng thời gian nào đó phải không?

Đâu cần tool gì, bạn dựng 1 cái server trả về thời gian mà có yêu cầu về cho client. Bên client gọi 1000 cái yêu cầu liên tục, log ra kết quả của yêu cầu 1 và yêu cầu 1000 r tự so sánh được mà. . v. V

Hàng đợi yêu cầu javascript
ongchamchi

em muốn hỏi về cách máy chủ tiếp nhận yêu cầu thôi (lúc mới vừa đưa tác vụ vào bộ nhớ ngăn xếp á)

Ý bạn là sao mà máy chủ nhận được yêu cầu từ máy khách?

Chào quý anh chị,

  1. Theo em thì nodeJS xử lý yêu cầu C10K cũng không khác gì xử lý 10K dòng console.log cả. Tất cả các lần được đưa vào ngăn xếp bộ nhớ và thực hiện tuần tự thi theo cơ chế LIFO. 10K dòng console.log sẽ hiển thị màn hình gần nhất như đồng thời và ngay lập tức (có thể trì hoãn 0,0000…01 giây). Ví dụ trong bảng điều khiển dòng 10K có thể khiến CPUchi phí thêm 20%, 30% sau đó quay về mức cấm đầu, thì lý do yêu cầu 10K cũng xử lý http tương tự như vậy
  2. Nhưng tại sao lúc quý anh chị gửi yêu cầu 10K mà máy chủ không phản hồi ngay lập tức như thực thi 10K dòng console.log? . Còn việc máy chủ lấy kết quả ở đâu để trả lại thì em sẽ giải thích sau. VD. khi quý anh chị kê đơn tố cáo 10K - khiếu nại lên bộ phận một cửa của UBND phường. Cán bộ tiếp nhận 10K hồ sơ, đóng mộc, ký tên trong vòng 1 nốt nhạc là xong. Còn 10K hồ sơ đó có được thụ lý hay không, kết quả là gì thì anh chị phải CHỜ ĐỢI
  3. Chúng ta cùng phân tích từ CHỜ ĐỢI. đợi chờ có 2 loại là chờ đợi tài nguyên CPU (lấy CPU đại diện cho tài nguyên, có thể mất thêm GPU và các linh kiện khác) và chờ đợi không tốn tài nguyên CPU
    • Chờ CPU bao gồm các tác vụ. xử lý ảnh, kết xuất video, mã hóa, giải mã, … những tác vụ này khiến máy tính bị lag, tác vụ nặng thì phải chờ, chờ vì CPU đang ở trạng thái kết xuất cực kỳ khó, muốn không chờ thì mở rộng máy xử lý theo chiều dọc, mua CPU khác, . Golang xử lý vấn đề này, còn nodeJS thì không
    • Chờ đợi không tốn CPU - đây là cách chờ đợi của nodeJS. Nghĩa là đã ủy quyền nhiệm vụ đó cho bên khác làm thay. Có 2 ví dụ.
      – người dùng yêu cầu lấy dữ liệu trong cơ sở dữ liệu, mà nodejs và cơ sở dữ liệu là 2 thực thể khác nhau, nodejs yêu cầu cơ sở dữ liệu đưa dữ liệu vào, nodejs không quan tâm đến cơ sở dữ liệu như thế nào, miễn sao có dữ liệu . Muốn cơ sở dữ liệu xử lý nhanh thì cơ sở dữ liệu phải thiết kế chạy đa luồng hay như nào thì nodeJS mới tận dụng được sức mạnh đa luồng của cơ sở dữ liệu máy chủ. Ví dụ như cơ sở dữ liệu cùng trả về 10K phản hồi ngay lập tức thì như thế nào? . in this time server nodeJS do not doing anything. Xử lý tiêu thụ CPU là một đường ngang chứ không phải nhảy như đo điện tâm đồ (ECG) trong bệnh viện.
      – Tương tự khi khi xử lý request thanh toán thì nodeJS tiếp tục call API tới ngân hàng và chờ ngân hàng response về. trong lúc này server nodeJS không làm gì cả. Mức tiêu thụ CPU là một đường ngang chứ không nhảy như đo điện tâm đồ (ECG) trong bênh viện.

Hàng đợi yêu cầu javascript
Có thể hiểu vui như thế này. NodeJS tiếp nhận yêu cầu 10K, xử lý như nào rồi ủy quyền cho bên khác (cơ sở dữ liệu máy chủ) xử lý tiếp. Trong lúc chờ đợi, có thể tắt server nodeJS, rút ​​điện, đóng cầu dao. Khi nào database gọi điện “Alo, có phải nodeJS không ạ, em đến giao 10K data, anh chị ra trước cổng nhận giúp”, thì lúc này anh devOps mới bật cầu dao lên, mở server lên nhận dữ liệu của database đưa ra rồi phản hồi

Hàng đợi yêu cầu javascript
Theo quan điểm cá nhân của em thì nodejs rất thích hợp làm backend cho app với core business bên trong là nồi lẩu thập cẩm, call API tá lả, bên trong chả làm gì cả. thanh toán thì gọi API của ngân hàng, giao hàng thì gọi API cty chuyển phát, lưu trữ file thì gọi API dịch vụ Object storage (AWS, azure,…), eKYC thì API các cty AI,… tích hợp đủ các kiểu. NodeJS xử lý cơ bản rồi nằm đắp chăn, rung đùi chờ bên còng lưng xử lý mà không quên kèm theo thông báo “Khi nào làm xong thì alo cho anh, để anh chạy xử lý gọi lại nhé”

Bản thân em không code nodejs nhiều, cũng đang thắc mắc. Nếu một CPU 10 nhân chỉ chạy môi trường nodeJS, thì nodeJS đang làm 9 nhân còn lại nhảy số như điện tâm đồ ECG không hay chỉ vượt qua 1 nhân mà bắt nút làm nhiệm vụ 10K khiến nó lúc nào cũng ở trạng thái 80%,

Quý anh chị nếu quan tâm có thể phản bác lại em, rất mong được quý anh chị chia sẻ kiến ​​thức và quan điểm