﻿1
00:00:01,400 --> 00:00:03,624
‫Instructeur : Alors, rappelez-vous que dans la

2
00:00:03,624 --> 00:00:06,000
‫dernière conférence, nous avons parlé de l'architecture des

3
00:00:06,000 --> 00:00:07,670
‫nœuds, où deux parties

4
00:00:07,670 --> 00:00:10,810
‫fondamentales sont le pool de threads et la boucle d'événements.

5
00:00:10,810 --> 00:00:12,630
‫Donc, dans cette conférence, vous allez tout

6
00:00:12,630 --> 00:00:14,619
‫apprendre sur les threads et un pool de threads.

7
00:00:14,619 --> 00:00:15,771
‫Et dans le

8
00:00:15,771 --> 00:00:19,510
‫prochain, nous plongerons ensuite profondément dans la boucle des événements.

9
00:00:19,510 --> 00:00:20,883
‫Alors, commençons.

10
00:00:22,230 --> 00:00:25,660
‫Donc, tout d'abord, lorsque nous utilisons Node sur un

11
00:00:25,660 --> 00:00:28,210
‫ordinateur, cela signifie qu'un processus Node

12
00:00:28,210 --> 00:00:30,110
‫s'exécute sur cet ordinateur.

13
00:00:30,110 --> 00:00:33,530
‫Et le processus n'est qu'un programme en cours d'exécution.

14
00:00:33,530 --> 00:00:35,900
‫Et nous avons déjà appris que Node. js est

15
00:00:35,900 --> 00:00:38,490
‫essentiellement un programme C++, qui démarrera

16
00:00:38,490 --> 00:00:42,040
‫donc un processus lorsqu'il sera en cours d'exécution.

17
00:00:42,040 --> 00:00:44,100
‫Ceci est important car dans Node,

18
00:00:44,100 --> 00:00:46,980
‫nous avons en fait accès à une variable de processus,

19
00:00:46,980 --> 00:00:49,670
‫que nous utiliserons plus tard dans ce cours.

20
00:00:49,670 --> 00:00:52,510
‫Maintenant, dans ce processus, Node. js s'exécute

21
00:00:52,510 --> 00:00:54,860
‫dans un soi-disant thread unique.

22
00:00:54,860 --> 00:00:58,641
‫Et un fil n'est fondamentalement qu'une séquence d'instructions.

23
00:00:58,641 --> 00:01:01,062
‫Mais il n'est pas important de comprendre

24
00:01:01,062 --> 00:01:03,690
‫en profondeur ce qu'est un fil ou un processus.

25
00:01:03,690 --> 00:01:05,740
‫C'est plus une question d'informatique.

26
00:01:05,740 --> 00:01:08,130
‫Imaginez simplement un fil comme étant une

27
00:01:08,130 --> 00:01:11,483
‫boîte où notre code est exécuté dans le processeur d'un ordinateur.

28
00:01:12,750 --> 00:01:15,273
‫Maintenant, ce qu'il est important de

29
00:01:15,273 --> 00:01:19,100
‫comprendre ici, c'est le fait que Node s'exécute dans un seul

30
00:01:19,100 --> 00:01:22,346
‫thread, ce qui facilite le blocage des applications Node.

31
00:01:22,346 --> 00:01:25,273
‫Et c'est quelque chose dont nous avons déjà parlé, en fait.

32
00:01:25,273 --> 00:01:28,650
‫Mais c'est quelque chose de vraiment, vraiment important à retenir

33
00:01:28,650 --> 00:01:30,586
‫car c'est l'une des fonctionnalités

34
00:01:30,586 --> 00:01:33,029
‫uniques que Node. js apporte à la table.

35
00:01:33,029 --> 00:01:36,370
‫Donc, encore une fois, si vous exécutez votre application Node,

36
00:01:36,370 --> 00:01:38,710
‫elle s'exécutera dans un seul thread.

37
00:01:38,710 --> 00:01:41,834
‫Peu importe si vous avez 10 utilisateurs ou

38
00:01:41,834 --> 00:01:45,030
‫10 millions d'utilisateurs accédant à votre application en même temps.

39
00:01:45,030 --> 00:01:47,210
‫Et donc vous devez faire très

40
00:01:47,210 --> 00:01:49,610
‫attention à ne pas bloquer ce fil.

41
00:01:49,610 --> 00:01:51,042
‫Et nous allons bien sûr

42
00:01:51,042 --> 00:01:53,723
‫nous en occuper tout au long du projet dans ce cours.

43
00:01:54,890 --> 00:01:57,010
‫Poursuivons, comprenons maintenant rapidement ce

44
00:01:57,010 --> 00:01:59,700
‫qui se passe exactement dans un seul thread

45
00:01:59,700 --> 00:02:02,040
‫lorsque vous démarrez votre application Node.

46
00:02:02,040 --> 00:02:04,730
‫Ainsi, lorsque le programme est initialisé, tout le code

47
00:02:04,730 --> 00:02:07,440
‫de niveau supérieur est exécuté, ce qui signifie tout

48
00:02:07,440 --> 00:02:09,060
‫le code qui ne se

49
00:02:09,060 --> 00:02:10,933
‫trouve dans aucune fonction de rappel.

50
00:02:12,020 --> 00:02:16,200
‫De plus, tous les modules dont votre application a besoin sont requis et

51
00:02:16,200 --> 00:02:18,560
‫tous les rappels sont enregistrés, tout comme

52
00:02:18,560 --> 00:02:20,300
‫ceux que nous avons

53
00:02:20,300 --> 00:02:23,390
‫utilisés pour notre serveur HTP dans l'application Node Farm.

54
00:02:23,390 --> 00:02:24,589
‫Vous vous en souvenez ?

55
00:02:24,589 --> 00:02:29,589
‫Ensuite, après tout cela, la boucle d'événements commence enfin à s'exécuter.

56
00:02:29,890 --> 00:02:33,000
‫Et encore, plus sur l'événement en boucle dans la prochaine vidéo.

57
00:02:33,000 --> 00:02:35,500
‫Ce que vous devez savoir pour le moment, c'est que la

58
00:02:35,500 --> 00:02:38,410
‫boucle d'événements est l'endroit où la plupart du travail est effectué dans votre application.

59
00:02:38,410 --> 00:02:42,600
‫C'est donc vraiment le cœur de l'ensemble de l'architecture Node.

60
00:02:42,600 --> 00:02:46,640
‫Mais voici le hic, certaines tâches sont en fait trop lourdes.

61
00:02:46,640 --> 00:02:50,570
‫Ils sont trop coûteux pour être exécutés dans la boucle d'événement

62
00:02:50,570 --> 00:02:53,510
‫car ils bloqueraient alors le thread unique.

63
00:02:53,510 --> 00:02:56,770
‫Et donc, c'est là qu'intervient le pool de threads, qui,

64
00:02:56,770 --> 00:02:58,610
‫tout comme la boucle d'événements,

65
00:02:58,610 --> 00:03:01,670
‫est fourni à Node. js par la bibliothèque

66
00:03:01,670 --> 00:03:03,890
‫libuv dont nous avons parlé auparavant.

67
00:03:03,890 --> 00:03:07,140
‫Ainsi, le pool de threads nous donne quatre

68
00:03:07,140 --> 00:03:10,560
‫threads supplémentaires qui sont complètement séparés du thread unique principal.

69
00:03:10,560 --> 00:03:14,170
‫Et nous pouvons en fait le configurer jusqu'à 128 threads.

70
00:03:14,170 --> 00:03:16,670
‫Mais généralement, ces quatre sont suffisants.

71
00:03:16,670 --> 00:03:19,630
‫Ainsi, ces threads formaient ensemble un pool de threads.

72
00:03:19,630 --> 00:03:21,840
‫Et la boucle d'événements peut alors

73
00:03:21,840 --> 00:03:25,490
‫décharger automatiquement les tâches lourdes vers le pool de threads.

74
00:03:25,490 --> 00:03:28,490
‫Et tout cela se passe automatiquement dans les coulisses.

75
00:03:28,490 --> 00:03:30,680
‫Ce ne sont pas nous, les développeurs, qui décidons de ce

76
00:03:30,680 --> 00:03:33,253
‫qui va dans le pool de threads et de ce qui ne l'est pas.

77
00:03:34,780 --> 00:03:37,849
‫Désormais, les tâches coûteuses qui sont déchargées sont

78
00:03:37,849 --> 00:03:41,390
‫toutes les opérations relatives aux fichiers, tout ce qui concerne

79
00:03:41,390 --> 00:03:44,898
‫la cryptographie, comme la mise en cache des mots de

80
00:03:44,898 --> 00:03:48,860
‫passe, puis tous les éléments de compression, ainsi que les recherches

81
00:03:48,860 --> 00:03:50,850
‫DNS, qui font correspondre

82
00:03:50,850 --> 00:03:54,020
‫les domaines Web à leurs adresses IP réelles correspondantes.

83
00:03:54,020 --> 00:03:55,500
‫C'est donc ce qui

84
00:03:55,500 --> 00:03:57,870
‫bloquerait le plus facilement le fil principal.

85
00:03:57,870 --> 00:04:00,460
‫Et donc, Node s'occupe de les décharger

86
00:04:00,460 --> 00:04:02,890
‫automatiquement dans le pool de threads,

87
00:04:02,890 --> 00:04:05,830
‫où ils ne bloquent pas notre boucle d'événement.

88
00:04:05,830 --> 00:04:07,640
‫Et c'est la chose la plus importante

89
00:04:07,640 --> 00:04:09,923
‫que je veux que vous reteniez de cette vidéo.

90
00:04:11,370 --> 00:04:15,693
‫Alors, passons maintenant et parlons de la boucle d'événements elle-même.

