﻿1
00:00:01,400 --> 00:00:03,624
‫Instructor: Entonces, recuerde que en la

2
00:00:03,624 --> 00:00:06,000
‫última conferencia, hablamos sobre la arquitectura Node,

3
00:00:06,000 --> 00:00:07,670
‫donde dos partes fundamentales

4
00:00:07,670 --> 00:00:10,810
‫son el grupo de subprocesos y el bucle de eventos.

5
00:00:10,810 --> 00:00:12,630
‫Entonces, en esta conferencia, aprenderá todo

6
00:00:12,630 --> 00:00:14,619
‫sobre los hilos y un grupo de hilos.

7
00:00:14,619 --> 00:00:15,771
‫Y en

8
00:00:15,771 --> 00:00:19,510
‫el siguiente, nos sumergiremos profundamente en el ciclo del evento.

9
00:00:19,510 --> 00:00:20,883
‫Entonces empecemos.

10
00:00:22,230 --> 00:00:25,660
‫Entonces, en primer lugar, cuando usamos Node en una computadora,

11
00:00:25,660 --> 00:00:28,210
‫significa que hay un proceso de Node

12
00:00:28,210 --> 00:00:30,110
‫ejecutándose en esa computadora.

13
00:00:30,110 --> 00:00:33,530
‫Y el proceso es solo un programa en ejecución.

14
00:00:33,530 --> 00:00:35,900
‫Y ya aprendimos que Node. js es

15
00:00:35,900 --> 00:00:38,490
‫básicamente un programa C ++, que por

16
00:00:38,490 --> 00:00:42,040
‫lo tanto iniciará un proceso cuando se esté ejecutando.

17
00:00:42,040 --> 00:00:44,100
‫Esto es importante porque en

18
00:00:44,100 --> 00:00:46,980
‫Node, en realidad tenemos acceso a una variable de

19
00:00:46,980 --> 00:00:49,670
‫proceso, que usaremos más adelante en este curso.

20
00:00:49,670 --> 00:00:52,510
‫Ahora en ese proceso, Node. js se

21
00:00:52,510 --> 00:00:54,860
‫ejecuta en un solo hilo.

22
00:00:54,860 --> 00:00:58,641
‫Y un hilo es básicamente una secuencia de instrucciones.

23
00:00:58,641 --> 00:01:01,062
‫Pero no es importante comprender en

24
00:01:01,062 --> 00:01:03,690
‫profundidad qué es un hilo o un proceso.

25
00:01:03,690 --> 00:01:05,740
‫Eso es más sobre ciencias de la computación.

26
00:01:05,740 --> 00:01:08,130
‫Imagínese un hilo como una caja donde

27
00:01:08,130 --> 00:01:11,483
‫nuestro código se ejecuta en el procesador de una computadora.

28
00:01:12,750 --> 00:01:15,273
‫Ahora, lo que es importante entender

29
00:01:15,273 --> 00:01:19,100
‫aquí es el hecho de que Node se ejecuta en un solo

30
00:01:19,100 --> 00:01:22,346
‫hilo, lo que facilita el bloqueo de aplicaciones de Node.

31
00:01:22,346 --> 00:01:25,273
‫Y esto es algo de lo que hablamos antes, de hecho.

32
00:01:25,273 --> 00:01:28,650
‫Pero es algo muy, muy importante de recordar porque esta

33
00:01:28,650 --> 00:01:30,586
‫es una de las características

34
00:01:30,586 --> 00:01:33,029
‫únicas que Node. js trae a la mesa.

35
00:01:33,029 --> 00:01:36,370
‫Entonces, nuevamente, si ejecuta su aplicación Node, se

36
00:01:36,370 --> 00:01:38,710
‫ejecutará en un solo hilo.

37
00:01:38,710 --> 00:01:41,834
‫No importa si tiene 10 usuarios o 10

38
00:01:41,834 --> 00:01:45,030
‫millones de usuarios accediendo a su aplicación al mismo tiempo.

39
00:01:45,030 --> 00:01:47,210
‫Por lo tanto, debe tener

40
00:01:47,210 --> 00:01:49,610
‫mucho cuidado de no bloquear ese hilo.

41
00:01:49,610 --> 00:01:51,042
‫Y, por supuesto, nos

42
00:01:51,042 --> 00:01:53,723
‫encargaremos de eso durante todo el proyecto en este curso.

43
00:01:54,890 --> 00:01:57,010
‫Continuando, ahora entendamos rápidamente

44
00:01:57,010 --> 00:01:59,700
‫exactamente qué sucede en un solo hilo

45
00:01:59,700 --> 00:02:02,040
‫cuando inicia su aplicación Node.

46
00:02:02,040 --> 00:02:04,730
‫Entonces, cuando se inicializa el programa, se ejecuta todo el

47
00:02:04,730 --> 00:02:07,440
‫código de nivel superior, lo que significa todo el código

48
00:02:07,440 --> 00:02:09,060
‫que no está dentro de

49
00:02:09,060 --> 00:02:10,933
‫ninguna función de devolución de llamada.

50
00:02:12,020 --> 00:02:16,200
‫Además, se requieren todos los módulos que su aplicación necesita y todas las

51
00:02:16,200 --> 00:02:18,560
‫devoluciones de llamada están registradas, al igual

52
00:02:18,560 --> 00:02:20,300
‫que las que usamos

53
00:02:20,300 --> 00:02:23,390
‫para nuestro servidor HTP en la aplicación Node Farm.

54
00:02:23,390 --> 00:02:24,589
‫¿Recuérdalo?

55
00:02:24,589 --> 00:02:29,589
‫Luego, después de todo eso, el bucle de eventos finalmente comienza a ejecutarse.

56
00:02:29,890 --> 00:02:33,000
‫Y nuevamente, más sobre el evento en bucle en el siguiente video.

57
00:02:33,000 --> 00:02:35,500
‫Lo que necesita saber por ahora es que el ciclo de

58
00:02:35,500 --> 00:02:38,410
‫eventos es donde se realiza la mayor parte del trabajo en su aplicación.

59
00:02:38,410 --> 00:02:42,600
‫Entonces, es realmente el corazón de toda la arquitectura de Node.

60
00:02:42,600 --> 00:02:46,640
‫Pero aquí está el truco, algunas tareas son demasiado pesadas.

61
00:02:46,640 --> 00:02:50,570
‫Son demasiado costosos para ejecutarse en el bucle de eventos

62
00:02:50,570 --> 00:02:53,510
‫porque luego bloquearían el hilo único.

63
00:02:53,510 --> 00:02:56,770
‫Y ahí es donde entra el grupo de subprocesos, que al

64
00:02:56,770 --> 00:02:58,610
‫igual que el bucle de eventos,

65
00:02:58,610 --> 00:03:01,670
‫se proporciona a Node. js por la biblioteca

66
00:03:01,670 --> 00:03:03,890
‫libuv de la que hablamos antes.

67
00:03:03,890 --> 00:03:07,140
‫Entonces, el grupo de subprocesos nos da cuatro

68
00:03:07,140 --> 00:03:10,560
‫subprocesos adicionales que están completamente separados del subproceso principal único.

69
00:03:10,560 --> 00:03:14,170
‫Y de hecho podemos configurarlo hasta 128 subprocesos.

70
00:03:14,170 --> 00:03:16,670
‫Pero, por lo general, estos cuatro son suficientes.

71
00:03:16,670 --> 00:03:19,630
‫Entonces, estos hilos juntos formaron un grupo de hilos.

72
00:03:19,630 --> 00:03:21,840
‫Y el bucle de eventos

73
00:03:21,840 --> 00:03:25,490
‫puede descargar automáticamente tareas pesadas al grupo de subprocesos.

74
00:03:25,490 --> 00:03:28,490
‫Y todo esto sucede automáticamente detrás de escena.

75
00:03:28,490 --> 00:03:30,680
‫No somos nosotros los desarrolladores quienes decidimos

76
00:03:30,680 --> 00:03:33,253
‫qué va al grupo de subprocesos y qué no.

77
00:03:34,780 --> 00:03:37,849
‫Ahora, las tareas costosas que se descargan son

78
00:03:37,849 --> 00:03:41,390
‫todas las operaciones relacionadas con archivos, todo lo relacionado con

79
00:03:41,390 --> 00:03:44,898
‫la criptografía, como el almacenamiento en caché de contraseñas, luego

80
00:03:44,898 --> 00:03:48,860
‫todo lo relacionado con la compresión y también las búsquedas de

81
00:03:48,860 --> 00:03:50,850
‫DNS, que básicamente hacen coincidir

82
00:03:50,850 --> 00:03:54,020
‫los dominios web con sus correspondientes direcciones IP reales.

83
00:03:54,020 --> 00:03:55,500
‫Entonces, esto es lo

84
00:03:55,500 --> 00:03:57,870
‫que bloquearía más fácilmente el hilo principal.

85
00:03:57,870 --> 00:04:00,460
‫Y así, Node se encarga de descargarlos

86
00:04:00,460 --> 00:04:02,890
‫automáticamente en el grupo de

87
00:04:02,890 --> 00:04:05,830
‫subprocesos, donde no bloquean nuestro bucle de eventos.

88
00:04:05,830 --> 00:04:07,640
‫Y eso es lo más

89
00:04:07,640 --> 00:04:09,923
‫importante que quiero que retengas de este video.

90
00:04:11,370 --> 00:04:15,693
‫Entonces, sigamos adelante y hablemos sobre el ciclo de eventos en sí.

