Норберт - хороший приклад з масштабованої системи виробництва. Я, як правило, інтегрує Netty, Buffers Protocol та Zookeeper у легку основу для роботи кластерних служб. Буфери протоколів використовуються для визначення API сервісу, Netty реалізує абстракції транспортного рівня, а Zookeeper - це по суті служба виявлення відмов.
Кожен раз, коли запускається екземпляр служби, Норберт реєструє його як доступний екземпляр певного типу послуги. З точки зору впровадження, він створює два дерева Zookeeper:
- "/ ServiceName / members", в якому перераховані всі відомі екземпляри служби
- "/ ServiceName / available", який перераховує наявні в даний час екземпляри послуги
Найважливішою властивістю кожного вузла є URL-адреса, яка використовується для підключення до відповідного екземпляра служби. Це дозволяє врівноважувати навантаження на стороні клієнта - клієнт Норберта знаходить список URL-адрес для заданої назви послуги та намагається підключитися до одного з них - це певний порядок (наприклад, круговий або випадковий).