В чем разница между операционными ошибками и ошибками программиста?

Операционные ошибки — это не ошибки, а проблемы с системой, такие как тайм-аут запроса или аппаратный сбой.

С другой стороны, ошибки программиста — это настоящие ошибки.

Что такое программирование, управляемое событиями?

Он использует события в качестве основы для разработки программного обеспечения. Эти события могут быть действиями пользователей — нажатием определенной кнопки, выбором параметра из раскрывающегося списка, вводом текста в поле, голосовыми командами или загрузкой видео — или системными событиями, такими как загрузка программы.

Что такое «рабочие процессы»?

Веб-воркеры — это простое средство веб-контента для запуска сценариев в фоновых потоках. Рабочий поток может выполнять задачи, не мешая работе пользовательского интерфейса. Кроме того, они могут выполнять ввод-вывод, используя XMLHttpRequest (хотя атрибуты responseXML и channel всегда нулевые). После создания рабочий процесс может отправлять сообщения коду JavaScript, который его создал, отправляя сообщения обработчику событий, указанному этим кодом (и наоборот).

Опишите, как сделать Node.js более масштабируемым?

1 — Клонирование

Для масштабирования большого приложения проще всего клонировать его несколько раз, чтобы каждый клонированный экземпляр выполнял часть нагрузки (например, с помощью балансировщика нагрузки). Это не требует больших затрат времени на разработку и очень эффективно. Эта стратегия является минимумом, который вы должны использовать, и в Node.js есть встроенный модуль cluster, упрощающий реализацию стратегии клонирования на одном сервере.

2 — Разложение

Мы также можем масштабировать приложение, декомпозируя его на основе функций и сервисов. Это означает наличие нескольких разных приложений с разными кодовыми базами, а иногда и с собственными выделенными базами данных и пользовательскими интерфейсами.

Эта стратегия обычно ассоциируется с термином Микросервис, где микро означает, что эти сервисы должны быть как можно меньше, но на самом деле важен не размер сервиса, а обеспечение слабой связи. и высокая связность между службами. Реализация этой стратегии часто бывает непростой и может привести к неожиданным долговременным проблемам, но если все сделано правильно, преимущества огромны.

3 — Разделение

Мы также можем разделить приложение на несколько экземпляров, где каждый экземпляр отвечает только за часть данных приложения. Эту стратегию в базах данных часто называют горизонтальное секционирование или сегментирование. Разделение данных требует шага поиска перед каждой операцией, чтобы определить, какой экземпляр приложения использовать. Например, может быть, мы хотим разделить наших пользователей на основе их страны или языка. Сначала нам нужно выполнить поиск этой информации.

Успешное масштабирование большого приложения должно в конечном итоге реализовать все три стратегии.

https://www.freecodecamp.org/news/scaling-node-js-applications-8492bd8afadc/

Объяснить глобальную установку зависимостей?

  • локальные пакеты устанавливаются в каталог, где вы запускаете npm install <package-name>, и помещаются в папку node_modules в этом каталоге.
  • Все глобальные пакеты размещаются в одном месте в вашей системе (точное место зависит от вашей настройки), независимо от того, где вы запускаете npm install -g <package-name>

Объяснить веб-службу RESTful?

Веб-службы RESTful созданы для оптимальной работы в Интернете. Передача репрезентативного состояния (REST) ​​— это архитектурный стиль, определяющий ограничения, такие как унифицированный интерфейс, которые при применении к веб-службе вызывают желаемые свойства, такие как производительность, масштабируемость и модифицируемость, которые позволяют службам лучше всего работать в Интернете. В архитектурном стиле REST данные и функции считаются ресурсами, и доступ к ним осуществляется с помощью универсальных идентификаторов ресурсов (URI), обычно по ссылкам в Интернете. Ресурсы обрабатываются с помощью набора простых, четко определенных операций. Архитектурный стиль REST ограничивает архитектуру архитектурой клиент/сервер и предназначен для использования протокола связи без сохранения состояния, обычно HTTP. В стиле архитектуры REST клиенты и серверы обмениваются представлениями ресурсов, используя стандартизированный интерфейс и протокол.

Следующие принципы поощряют приложения RESTful быть простыми, легкими и быстрыми:

  • Идентификация ресурса через URI: веб-служба RESTful предоставляет набор ресурсов, которые определяют цели взаимодействия с ее клиентами. Ресурсы идентифицируются по URI, которые обеспечивают глобальное адресное пространство для обнаружения ресурсов и служб. Дополнительную информацию см. в разделе Шаблоны пути аннотации @Path и пути URI.
  • Единый интерфейс. Управление ресурсами осуществляется с помощью фиксированного набора из четырех операций создания, чтения, обновления и удаления: PUT, GET, POST и DELETE. PUT создает новый ресурс, который затем можно удалить с помощью DELETE. GET извлекает текущее состояние ресурса в некотором представлении. POST передает новое состояние на ресурс. Дополнительную информацию см. в разделе Ответ на HTTP-методы и запросы.
  • Сообщения с самоописанием. Ресурсы отделены от их представления, поэтому доступ к их содержимому можно получить в различных форматах, таких как HTML, XML, обычный текст, PDF, JPEG, JSON и других. Метаданные о ресурсе доступны и используются, например, для управления кэшированием, обнаружения ошибок передачи, согласования соответствующего формата представления и выполнения аутентификации или управления доступом. Дополнительные сведения см. в разделах Ответ на HTTP-методы и запросы и Использование поставщиков сущностей для сопоставления тел сущностей ответов и запросов HTTP.
  • Взаимодействия с отслеживанием состояния через гиперссылки. Каждое взаимодействие с ресурсом не имеет состояния; то есть сообщения запроса являются автономными. Взаимодействия с отслеживанием состояния основаны на концепции явной передачи состояния. Существует несколько методов обмена состоянием, таких как перезапись URI, файлы cookie и скрытые поля формы. Состояние может быть встроено в ответные сообщения, чтобы указывать на действительные будущие состояния взаимодействия. Дополнительные сведения см. в разделах Использование поставщиков сущностей для сопоставления тел сущностей ответов и запросов HTTP и Создание URI в документе Обзор JAX-RS.