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

OSCHINA-MIRROR/Bwar-Nebula

Клонировать/Скачать
README_cn.md 22 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 28.11.2024 22:21 646366b

Небула: мощный IoC сетевой фреймворк для быстрой разработки высокопроизводительных, распределённых и эластичных приложений на C++.

Author Platform License

  1. Обзор
  2. Производственное применение
  3. Функции
  4. Начало работы
  5. Документация
  6. Зависимости
  7. Связанные проекты
  8. Задачи разработки
  9. История изменений
  10. Общение и обратная связь

Обзор

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

  Он изначально поддерживает протоколы proto3, resp, http, https, http2, grpc и websocket для различных коммуникационных слоёв.

  Документация подробная, простая в освоении, удобная в расширении и эффективная в разработке.

  Зависит от небольшого количества сторонних библиотек, разработка и развёртывание не требуют затрат.

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

  Поддерживает динамическую загрузку плагинов, что упрощает непрерывное обновление сервисов.

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

  Структура кода чёткая и легко читаемая.

Производственное применение (в порядке убывания времени)

  • Сбор данных с интеллектуального оборудования в отрасли X: на основе протокола http2 соединение устанавливается с интеллектуальным оборудованием, которое отвечает потоком данных по протоколу http2.
  • Услуги по распознаванию изображений в мобильной интернет-отрасли O: на базе протоколов redis и grpc, а также сложной логики данных redis, которая является одновременно сервером redis и клиентом redis, пиковая пропускная способность составляет 330 000 транзакций в секунду.
  • Рекомендательная система в мобильной интернет-отрасли О: основана на протоколах grpc и redis, для вычислительно интенсивных сервисов.
  • Система векторного поиска в мобильной интернет-отрасли О: использует протоколы grpc и http для вычислительных сервисов.
  • Платёжный шлюз в компьютерной аппаратной отрасли X: основан на протоколе https для связи с мобильными устройствами и банковскими платежами api через протокол https.
  • HTTP-шлюз доступа в мобильной интернет-отрасли О: работает на основе протокола http и включает такие функции, как условная переадресация, маршрутизация по хэшу, восстановление после сбоя и снижение нагрузки.
  • Система мгновенных сообщений в игровой индустрии G: основана на протоколе nebula и протоколе http, включая сервисы доступа, логические сервисы, прокси-сервисы кеша, прокси-сервисы базы данных, центры регистрации и конфигурации.
  • Система сбора и анализа данных в режиме реального времени в индустрии O2O J: основана на протоколах http и nebula для сервисов доступа, логических сервисов, прокси-сервисов базы данных и центров регистрации.
  • Система мгновенных сообщений в финансовой отрасли N: основана на протоколах nebula и http, включая сервисы доступа, логические сервисы, прокси-сервисы кеша, прокси-сервисы базы данных, центры регистрации, конфигурации, журналы и другие сервисы.

Функции

  • Поддержка протоколов http, protobuf, websocket и других.
  • Поддержка шифрования соединений SSL.
  • Микросервисный фреймворк.
  • IoC-контейнер.
  • Динамическое обновление сервисов.
  • Регистрация сервисов.
  • Обнаружение сервисов.
  • Мониторинг сервисов.
  • Управление конфигурацией.
  • Динамическая маршрутизация.
  • Балансировка нагрузки.
  • Защита от перегрузки.
  • Детектирование и восстановление после сбоев.
  • Статистические данные.
  • Многоуровневые сервисы.
  • Аутентификация и авторизация.
  • Распределённая трассировка логов.
  • Лёгкое расширение сторонних коммуникационных протоколов.

Начало работы

  Небула представляет собой хорошо разработанный проект, который также имеет небольшое количество зависимостей, предоставляя множество готовых функций и предоставляя скрипт установки одной кнопкой, NebulaBootstrap, чтобы разработчики могли быстро развернуть и испытать Небулу. После развёртывания и тестирования вы, вероятно, будете заинтересованы в Небуле, которая может стать широко используемым фреймворком. На основе NebulaBootstrap можно легко разрабатывать микросервисы на C++. Связанные проекты являются лучшими примерами изучения и использования фреймворка Небула.

nebula_cluster

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

Полная документация доступна в справочном руководстве Небулы.

Зависимости

Связанные проекты

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

  1. Завершить разработку руководства.
  2. Обеспечить поддержку Dubbo, MQTT и других протоколов.

Версия истории v2.0.0

  • Добавлен канал без блокировки SpecChannel для обмена данными между потоками.
  • SpecChannel используется для замены передачи дескриптора файла через сокет Unix.
  • Возможность переноса канала SocketChannel между потоками.
  • Управление клиентским пулом соединений.
  • Ограничение размера буфера приёма и отправки данных.
  • Оптимизация обработки новых соединений.
  • Процессный режим заменён на поточный.

v1.7.3

  • Настройка очереди соединений.
  • Кэш DNS.
  • Мониторинг соединений вверх и вниз по течению и пакетов данных.
  • Переключатель управления фоновым выполнением и консольным журналом.
  • Создание канала с использованием CodecFactory.
  • Улучшение пересылки минимальной нагрузки рабочего процесса.
  • Исправлена ошибка в обнаружении сбоя узла, вызывающая проблемы с обратным вызовом.
  • Исправление ошибок в Redis Cluster при выполнении пакетных команд записи, переключении мастер-ведомый и запросе команд, а также в тегах маршрутизации.
  • Устранены проблемы инициализации внутренних служб кластера.

v1.7.2

  • Решена проблема циклической ссылки при привязке канала к Codec.
  • Решены проблемы связи без тела сообщения с помощью CodecProto.
  • Включение защиты конфигурации соединения.

v1.7.1

  • Асинхронный журнал файлов оптимизирован.
  • SelfChannel добавлен seq.
  • Redis Cluster: добавлены функции обнаружения и восстановления после сбоев, а также исправления ошибок.
  • Устранение ошибок, связанных с обнаружением и восстановлением после сбоев узлов.

v1.7.0

  • Оптимизирована связь ввода-вывода, кодировщик и декодер разделены.
  • Из Channel и Actor удалён shared_from_this, вместо этого используются ChannelWatcher и ActorWatcher для повышения производительности.
  • Динамическая загрузка плагинов отключена для снижения производительности.
  • Чистые данные кодирования и декодирования отделены от кодировщика и декодера.
  • Добавлены кодировщики и декодеры для Cassandra.
  • Поддержка аутентификации пароля в Redis Cluster.
  • Файлы журналов оптимизированы для повышения скорости записи и добавлен асинхронный файл журнала.

v1.6.2

  • Оптимизация выключателя.
  • HTTP chunk декодирование, resp строка декодирования, ошибки в Redis Cluster без доступных узлов исправлены.

v1.6.1

  • HTTP2: разделение уведомлений о фрагментации ответа на потоки вместо соединений.
  • Ошибки в строке декодирования resp при разделении пакета исправлены.

v1.6.0

  • Самостоятельный канал (SelfChannel) добавлен для улучшения коммуникации внутри Worker.
  • Плагины для мониторинга состояния службы и сбора метрик добавлены.
  • Коммуникация между менеджерами разных узлов добавлена.
  • Конфигурация начального времени ожидания подключения добавлена.
  • Шаблоны переменных заменены на va_list в компоненте журнала для решения проблем с coredump.
  • Один порт поддерживает несколько протоколов.
  • Идентификаторы потоков оптимизированы.
  • Компонент Chain оптимизирован.
  • Проблемы с динамическими таблицами и приоритетами HTTP2 исправлены.

v1.5.0

  • Встроенная поддержка HTTP2 для серверной и клиентской сторон.
  • Встроенная поддержка gRPC для серверной и клиентской сторон.
  • Чтение и запись каналов оптимизированы.
  • Абсолютные пути для программных журналов.

v1.4

  • Кодировщик CodecResp заменён на Hiredis для соединений Redis.
  • Поддержка Redis Cluster добавлена.
  • Передача чистых данных (RawData) поддерживается.
  • Реализована настраиваемая функция мгновенной очистки журнала.
  • Поддерживаются IP-адреса и комбинации узлов.
  • Диспетчер распределения оптимизирован.
  • Ошибки исправлены.

v1.3

  • Не-pipeline режим для соединений Redis поддерживается.
  • Потоковый режим: Worker запускается до Loader, и идентификатор рабочего потока передаётся в Loader.
  • CodecResp и CodecHttp2 объединены.
  • Cityhash добавлен.
  • CJsonObject обновлён.
  • Ошибки устранены.

v1.2

  • Функция отложенного запуска добавлена для задержки привязки порта и предоставления услуг после загрузки большого объёма локальных данных и регистрации в Beacon.
  • Менеджер больше не отслеживает и не перезапускает нездоровые рабочие и загрузочные процессы в потоковом режиме.

v1.1

  • Рабочие процессы поддерживаются в потоковом режиме.

v1.0

  • Функции диспетчеризации и создания и управления Actor разделены и перемещены из Manager и Worker в классы Dispatcher и ActorBuilder.
  • Manager поддерживает использование Actor, а функции управления системой разделены на Cmd и Step.
  • Тип процесса Loader добавлен.
  • Actor динамически создаётся с использованием отражения.
  • Связь HTTP для коротких подключений и данных оптимизирована.
  • Ошибка в канале Redis исправлена.
  • Привязка IP настроена.
  • Интерфейс для тестирования под нагрузкой добавлен.
  • Автоматическое преобразование кодировщиков реализовано.

v0.10

  • Динамическое удаление и загрузка плагинов с контролем версий и мгновенным эффектом.
  • Отражение оптимизировано для динамического создания Actor.

v0.9

  • Модель Model добавлена.
  • Цепочка вызовов Chain добавлена.
  • Context упрощён.
  • Количество уровней наследования Actor уменьшено, Actor оптимизирован.

v0.8

  • Совместимость с компилятором GCC 4.8 (больше не требуется установка GCC версии 5 или выше, можно легко развернуть и протестировать на персональном компьютере, что также облегчает применение в производстве).
  • Настройки привязки процессора добавлены для поддержки привязки процессоров рабочими процессами.
  • Функциональность динамических библиотек (бизнес-плагинов) для удаления добавлена.

v0.7

  • Управление конфигурацией добавлено, NebulaBeacon является центром конфигурации, см. команды get и set в инструменте командной строки Nebcli.

v0.6

  • NebulaBeacon: информация о состоянии узлов запрашивается, и реализуется высокая доступность регистрационного центра.
  • NebulaInterface: пример HelloWorld.

v0.5

  • Информация о рабочих процессах, которые неожиданно завершаются и перезапускаются менеджером, отправляется узлам.
  • IPv6 поддерживается.

v0.4

  • Распределённый журнал протестирован и работает.
  • HTTPS поддерживается.
  • Канал HTTP: настройка keep alive добавлена.
  • Map в proto3 используется для замены повторяющихся типов данных.
  • Channel: интерфейс настройки симметричного шифрования добавлен.
  • Ошибки исправлены.

v0.3

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

v0.2

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

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

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

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