Облегченная версия центра конфигурации Nodejs

Node.js Redis внешний интерфейс jQuery

адрес проекта

Когда одному проекту нужен только простой файл конфигурации для завершения управления конфигурацией. Если несколько проектов и несколько сред настраиваются одновременно, возникает очень сложная ситуация управления конфигурацией.

В это время необходимо использовать центр конфигурации, и его принцип фактически аналогичен кешу Redis. Отличие состоит в том, что центр конфигурации фокусируется только на настройке и имеет больше функций, упрощающих настройку. Приблизительные функции следующие:

В то же время эти функции также являются функциями, которые центр конфигурации, который будет разработан на этот раз, должен включать.

Центр конфигурации, разработанный на этот раз, основан на версии nodejs. То, как клиент получает конфигурацию, может ссылаться на протокол для разработки собственного клиентского SDK. Версия javascript в настоящее время доступна.

Особенности дизайна

Разработка центра конфигурации основана на nodejs.Давайте сначала рассмотрим общий процесс.

Как видно из вышеизложенного, к основным функциям конфигурационного центра относятся:

  1. хранилище данных. Протокол хранения используется здесь для сопоставления нескольких форм хранения.
  2. Дела по расписанию. Это включает хранение по времени и настраиваемые задачи обновления по времени.
  3. Веб-сайт. Главным образом, чтобы обеспечить простой и быстрый способ настройки конфигурации.
  4. Обнаружение сердцебиения. Используйте протокол TCP для подключения клиента к центру конфигурации, вы можете отслеживать изменения конфигурации и своевременно получать самое последнее содержимое конфигурации.

функция развития

На самом деле это очень просто внедрить в конкретную разработку, во многих случаях это может потребовать только процесса понимания и практики. Здесь я дам вам общее представление.

хранилище данных

Есть только две цели хранения:

  1. Сохраните используемую конфигурацию. Вот простая реализация функций списка, хранения и выборки.
  2. Логин пользователя.

В настоящее время это руководство реализует только чтение и запись локальных файлов json.Если вы хотите использовать MySQL или Redis, вы можете реализовать это самостоятельно в соответствии со следующим протоколом.

init(), Репозиторий методов инициализации. Первый раз будет вызван, когда проект стартовал.

list(), чтобы получить список пространств имен. Пространства имен используются здесь, чтобы различать разные файлы конфигурации. Здесь используется по умолчаниюdefчтобы сохранить первый файл.

all(namespace = "def")чтобы получить содержимое конфигурации в соответствующем пространстве имен.

update(namespace, txt), чтобы обновить всю конфигурацию пространства имен. Здесь передается строка, а также сохраняется строка.

get(key, namespace = "def"), получить содержимое поля в соответствующем пространстве имен. Здесь нужно быть бдительным, конфигурация не обязательно json-объект.

set(key, val, namespace = "def"), установите значение поля в соответствующем пространстве имен.

login(user, pwd)Судья журнала, в настоящее время возвращает true или false.


Пока репозиторий реализует указанный выше протокол, метод хранения проекта может быть заменен без следа.

задача на время

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

Содержимое программы устанавливает переменную состоянияchangedЕсли есть соответствующее изменение конфигурации, его состояние будет изменено наtrue. Задачи сохранения по времени будут храниться в репозитории при запуске.

自定义定时任务的目的在于设置一个配置结果和定时时间,当时间到了的时候就触发一次更新操作。这个功能实现非常简单,但是对于使用的人来说是一个非常好用的功能。例如:半夜2点定时上线某些产品什么的。 . . .在也不需要熬夜等了。

В проекте, которым поделились на этот раз, эта пользовательская функция обновления времени не реализована. Эта функция будет постепенно улучшаться в последующих обновлениях.

Веб-сайт

Веб-сайт — это место, где манипулируют конфигурацией. Проект по умолчанию предоставляет несколько интерфейсов для получения и обновления конфигурации.

В настоящее время реализовано с использованием jQuery, интерфейс относительно прост, и реализованы основные функции.

Здесь вы можете видеть, что самая верхняя метка — это пространство имен. Далее нужно добавить пространство имен. Ниже находится место, где отображается и редактируется конфигурация.

Обнаружение сердцебиения

На самом деле сердце является центром конфигурации ядра. Его главная задача - это своевременное и быстрое уведомление на обновления конфигурации клиента, вам нужно использовать последнюю конфигурацию.

Сервер использует nodejsnet.createServerМетод создает службу прослушивания TCP, и если клиент подключается, он помещает объект подключения клиента в пул буферов объектов.

При подключении здесь выполняются две вещи:

  1. В объект подключения добавлен uuid для идентификации разных клиентов.
  2. Уведомляет клиента о необходимости отправить токен проверки подлинности. Логика здесь относительно проста, всего лишь простая проверка.

После подключения является процесс обнаружения сердцебиения. Клиент должен регулярно обновлять свой статус, и сервер обновляет в последний раз наличие клиента в соответствии с этим запросом. Добавление тайм-аута или отсоединения соединения означает, что клиент отключен, и клиент будет удален из кэша объекта бассейн.

Если веб-сайт обновляет соответствующую конфигурацию, сервер будет активно отправлять имя клиенту. Команды типа操作|命名空间|更改值, клиент запускает монитор обновления конфигурации клиента в соответствии с полученной командой и использует удаленный API для обновления конфигурации кэша клиента.

Сам клиент автоматически обновит содержимое конфигурации и в то же время предоставит метод мониторинга для отслеживания изменений конфигурации.

Конфигурация с несколькими средами

В корневом каталоге сервера естьconfigКаталог, здесь представлена ​​конфигурация для мультисреды сервера.

просто согласноNODE_ENVЗначение соответствующего файла может быть создано. При запуске проекта он автоматически использует конфигурацию соответствующего файла в соответствии с параметрами среды.

Если вы спрашиваете о нескольких средах на стороне клиента? Пространства имен полностью достижимы. Если вы хотите добавить больше уровней параметров среды, вы можете настроить соглашение об именовании пространства имен, например:test.conf1Таким образом, можно реализовать многоуровневую среду конфигурации без изменения основной программы. Цена - необходимость изменения интерфейса веб-сайта. . . .

заключительные замечания

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

Желающие могут принять участие и обновить лучший центр конфигурации вместе.

адрес проекта