Вопрос: Как обеспечивается согласованность данных между процессами в кластере Node.js?

Лучший ответ:
В кластерном Node.js вместо разделяемой памяти используется подход разделяемого хранилища данных.
Обычно эту роль выполняет Redis-кластер поскольку в нем есть механизмы уведомлений (подписок) и возможность асинхронного оповещения узлов кластера.
Такие вещи, как сессии и данные специфичные для клиента (кэши пользователя) хранятся вне Node.Js процесса, например в том же Redis. Это увеличивает инфраструктурные издержки, но позволяет производить бесшовные рестарты и пережить внезапные остановки машин в кластере.
Стандартной практикой является применение балансировщика, например того же nginx, включенного как reverse-proxy. Если вам не очень хочется разбираться с сессиями, используйте ip_hash, это снимет головную боль. 
По поводу конкретных вопросов.традиционные подходы при разработке ПО для кластера Node.js
Традиционный кластер представляет собой множество машин, на который запущено множество процессов через https://nodejs.org/api/cluster.html
Разумеется вместо разделямой памяти вы получаете разделямый сервис. Например с кэшем работаете как с базой и т.д. Почитайте о том, как работает горизонтальное масштабирование.Что я должен учитывать разрабатывая бекэнд-приложение для кластера Node.js?
Учитывайте факт того, что это новая для вас область знаний. Вдобавок очень популярная и очень перегретая мнениями. Рассматривайте  Node.js как некий клей между сервисами и другими решениями. Например ресайз картинок лучше делать на C++, поэтому расходы на создание процесса ресайзинга меньше расходов на ресайз реализованный на Node.js.Как новый секретный код должен попасть ко всем остальным процессам?
Обычно такие проблемы решаются через провайдер конфигурации, например сервер конфигураций. Любая попытка изменить конфигурацию вызывает изменения во всем кластере. В модуле Cluster это реализуется через механизм уведомлений. В большом кластере такие вещи реализуются через подписки в Redis. 100 позиций этот процесс отдал пользователю в качестве первой страницы ответа, остальные позиции он закешировал
Смотрите про балансировщик и ip_hash. Но в целом подход довольно плохой. Запрашивайте только нужные 100 товаров. Если вытаскивание данных из базы является проблемой, меняйте базу или ее структуру. Масштабируйте хранилище. В крайнем случае используйте разделяемый кэш (Redis, memcached). Кроме того, являются ли мои примеры корректными, практикуется ли описанное кеширование данных в бекэнд-приложениях на Node.js?
Считается плохой практикой. Кэширование конфигурации или данных используемых повсеместно (например локализация) - норма. Кэширование пользовательских данных легко приводит к утечкам, т.к. вы никогда не знаете, сколько пользователей может обратиться к вашему ресурсу в указанный период времени.

Худший ответ:
Господа, будьте добры рассказать каковы традиционные подходы при разработке ПО для кластера Node.js относительно обеспечения согласованности информации между процессами кластера?
В рамках одного инстатса - собственно то же самое, что и на c++ - общая память. Создаем в некоем общем скопе сервис с данными, которые нужны для всех и используем.
В рамках кластера - кэширующие сервера, типа memcached, redis.Что я должен учитывать разрабатывая бекэнд-приложение для кластера Node.js?
Несколько факторов:
- оно течет, и вы не раз будете вытирать капли крови из глаз, пытаясь понять где.
- качество существующих решений в большинстве случаев - невероятно низкое. Чего только стоит https://habrahabr.ru/post/280099/
- у вас будет много зависимостей хотите вы того, или нет.
- если вам не помогает событийная модель - Node.js вероятно не то, что вам надо.Но запросы пользователя на следующие страницы могут пойти через другие процессы, где нет этих закешированных данных - как же с этим быть? 
Кэшировать в скопе, доступном для каждого из ваших процессов.Кроме того, являются ли мои примеры корректными, практикуется ли описанное кеширование данных в бекэнд-приложениях на Node.js?
По тому, как оно внутри работает - безусловно. Визуально же будет несколько по другому.const http = require('http');

const hostname = '127.0.0.1';
const port = 3000;

const I_AM_CACHE = {
    "some": "data",
};

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end(JSON.stringify(I_AM_CACHE));
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});