1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/Bwar-NebulaBootstrap

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README_cn.md 15 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 28.11.2024 22:05 7f37d7b

NebulaBootstrap: основанный на Nebula распределённый кластер

Bwar’s технический блог.

NebulaBootstrap: на основе Nebula распределённая группа

Автор Платформа Лицензия

  1. Обзор
  2. Лицензия
  3. Компиляция
  4. Документация
  5. Зависимости
  6. Задачи разработки
  7. История изменений

Обзор

NebulaBootstrap — это решение для разработчиков, которое позволяет быстро создавать распределённые системы (включая управление конфигурацией, обнаружение служб, маршрутизацию, балансировку нагрузки, выборы лидера, распределённую сессию и состояние кластера и т. д.).

nebula_cluster

Лицензия

Copyright (c) 2018 Bwar

Настоящим бесплатно предоставляется любому лицу копия данного программного обеспечения и связанных с ним файлов документации («Программное обеспечение») без ограничений на использование, копирование, изменение и объединение, публикацию, распространение, повторное лицензирование и/или продажу копий данного программного обеспечения, а также разрешение лицам, которым предоставляется данное программное обеспечение, соблюдать следующие условия:

Вышеупомянутые заявления об авторских правах и настоящие разрешения должны быть включены во все копии или основные части данного программного обеспечения.

Данное программное обеспечение предоставляется «как есть», без каких-либо явных или подразумеваемых гарантий, включая, но не ограничиваясь, пригодностью для продажи, применимостью для конкретной цели и отсутствием нарушений прав интеллектуальной собственности. В любом случае автор или владелец авторских прав не несёт никакой ответственности за любые претензии, ущерб или другие обязательства, будь то в результате контракта, нарушения прав интеллектуальной собственности или других действий, независимо от того, связаны ли они с программным обеспечением или его использованием или другими сделками.

Компиляция

Для Nebula требуется компилятор gcc версии 4.8 или выше.

Шаги автоматической сборки и развёртывания:

  1. wget https://github.com/Bwar/NebulaBootstrap/archive/master.zip
  2. unzip master.zip; rm master.zip; mv NebulaBootstrap-master NebulaBootstrap
  3. cd NebulaBootstrap
  4. chmod u+x deploy.sh
  5. ./deploy.sh

После выполнения сценария deploy компиляция и развёртывание распределённых сервисов Nebula и NebulaBootstrap завершены. Зависимость Nebula также автоматически загружается из Интернета и компилируется перед развёртыванием. Хотя это не так хорошо известно, как autoconf и automake, сценарий deploy выполняет больше работы, чем эти инструменты. После выполнения сценария структура каталогов выглядит следующим образом:

  • NebulaBootstrap
    • bin       каталог, в котором хранятся файлы сервера.
    • build      путь сборки, созданный deploy.sh. Если развёртывание завершено и сборка больше не требуется, этот каталог можно удалить (необязательно).
    • conf       каталог хранения файлов конфигурации.
    • data       каталог для хранения данных файлов, таких как данные точек сбора и анализа в реальном времени Nebio, основанные на Nebula, которые будут сохранены в этом каталоге (необязательно).
    • lib       каталог хранения необходимых библиотек.
    • log       каталог журналов программы.
    • plugins      каталог плагинов (динамически загружаемая бизнес-логика so).
      • logic      каталог серверных плагинов. Плагины хранятся в каталоге plugins только для удобства различения, их также можно хранить непосредственно в каталоге plugins. Конкретные правила можно настроить (необязательно).
    • script      каталог библиотеки скриптов. Сценарии deploy.sh, startup.sh и shutdown.sh зависят от этого каталога.
    • temp      каталог временных файлов (необязательно).
    • configure.sh     скрипт конфигурации, который необходимо выполнить после запуска deploy.sh перед первым запуском server. Также можно открыть каждый файл конфигурации отдельно и внести изменения.
    • deploy.sh      сценарий автоматической сборки и развертывания, автоматически загружает зависимости, автоматически строит и развертывает, выполняет ./deploy.sh --help для просмотра справки.
    • shutdown.sh      закрыть сервер, можно указать закрыть один или несколько серверов, также можно закрыть все серверы, без параметров закрыть все серверы (требуется подтверждение пользователя).
    • startup.sh      запустить сервер, можно указать запустить один или несколько серверов, также можно запустить все серверы.
    • README_cn.md
    • README.md

После завершения сборки можно начать запускать кластеры служб:

./configure.sh
./startup.sh

Сервер должен быть успешно запущен, и startup.sh выведет список запущенных серверов. Если запуск не удался, проверьте причину в журнале. Выполните grep "ERROR" log/* и grep "FATAL" log/*, чтобы сначала проверить наличие ошибок, а затем перейдите к конкретному файлу журнала для получения подробной информации об ошибке. Обратите внимание, что файл конфигурации по умолчанию для Nebula ограничивает IP-соединения в течение определённого периода времени. Если при большом объёме тестирования возникают странные проблемы, вы можете изменить ограничения конфигурации. Просмотр предупреждающих сообщений в журналах обычно помогает определить такие ошибки, которые не являются ошибками. Если сервер успешно запущен, вы можете использовать postman, curl и другие инструменты для тестирования и проверки результатов.

# Запустить только NebulaInterface для завершения теста hello http
curl -H "Content-Type:application/json" -X POST -d '{"name": "Nebula", "address":"https://github.com/Bwar/Nebula"}' http://${your_ip}:16003/hello

# Запустите NebulaInterface, NebulaLogic и NebulaBeacon для завершения распределённого сервиса hello test http.
curl -H "Content-Тип:application/json" -X POST -d '{"имя": "Nebula", "адрес":"https://github.com/Bwar/Nebula"}' http://${ваш_ip}:16003/hello_nebula

Этот простой тест может быть выполнен только путём запуска одного NebulaInterface или запуска распределённой службы. NebulaBootstrap предоставляет HelloWorld на основе кластера и отдельного сервера. HelloWorld на основе кластера запускает NebulaBeacon, NebulaInterface и NebulaLogic три сервера. Ниже представлена диаграмма архитектуры кластера:

Документация

Документация по завершённому Nebula находится на странице документации Nebula, которая постоянно обновляется.

Зависимости

  • protobuf
  • libev или libev Hiredis, crypto++, http_parse интегрированы в Nebula/src/util/http, CJsonObject — в Nebula/src/util/json.

Задачи разработки

  • Сервис-посредник данных NebulaMydis.
  • Разработка IM-проекта для приложения Nebula.

История версий

v0.8

  • Совместимость с компилятором gcc4.8. Теперь нет необходимости отдельно устанавливать версии gcc выше 5. Можно без препятствий и ожидания развернуть и протестировать на персональном компьютере, что также упрощает применение в производстве. Ранее проект Nebio по сбору и анализу данных о точках интереса Bwar был развёрнут на сервере с установленным gcc6.
  • Добавлена настройка привязки Worker-процессов к ядрам процессора. Проведено тестирование, которое показало, что привязка к процессору повышает производительность примерно на 20% по сравнению с непривязанным состоянием. Теперь Nebua позволяет разработчикам выбирать, привязывать ли процессы к ядрам.
  • Добавлена функция удаления динамических библиотек (бизнес-плагинов). Это важная функция, поддерживающая непрерывное обновление сервиса без его остановки.

v0.7

  • Добавлено управление конфигурацией. NebulaBeacon служит центром конфигурации. Инструкции по использованию см. в командах get и set инструмента командной строки Nebcli.

v0.6

  • В NebulaBeacon добавлена возможность запроса информации о состоянии узлов. Реализован выбор главного и резервного серверов.
  • NebulaInterface предоставляет пример HelloWorld.

v0.5

  • При неожиданном завершении работы worker-процесса и его перезапуске менеджером узел отправляет информацию о себе.
  • Поддержка IPv6.

v0.4

  • Тестирование распределённой службы журналов успешно завершено.
  • Поддержка HTTPS.
  • Для HTTP-канала добавлена настройка keep alive.
  • Вместо исходного типа данных repeated в протоколе proto3 используется map для HTTP-заголовков.
  • Channel получил интерфейс настройки симметричного ключа шифрования.
  • Исправлены ошибки.

v0.3

  • Весь проект переписан с использованием стандарта C++14.
  • Механизм создания экземпляров actor реализован с помощью шаблонов.
  • Реализована распределённая система отслеживания журналов.

v0.2

  • Первая версия, которую можно запустить и которая прошла HTTP-тестирование.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/Bwar-NebulaBootstrap.git
git@api.gitlife.ru:oschina-mirror/Bwar-NebulaBootstrap.git
oschina-mirror
Bwar-NebulaBootstrap
Bwar-NebulaBootstrap
master