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

- Обзор
- Производственное применение
- Функции
- Начало работы
- Документация
- Зависимости
- Связанные проекты
- Задачи разработки
- История изменений
- Общение и обратная связь
Обзор
Небула — это проект сетевого фреймворка и распределённого решения для производственных задач, который подходит для таких сценариев использования, как мгновенные сообщения, сбор данных, вычисления в реальном времени, отправка сообщений, доступ к шлюзу, фоновые сервисы веб-приложений и т. д.
Он изначально поддерживает протоколы 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++. Связанные проекты являются лучшими примерами изучения и использования фреймворка Небула.

Документация
Полная документация доступна в справочном руководстве Небулы.
Зависимости
Связанные проекты
Разработка задачи
- Завершить разработку руководства.
- Обеспечить поддержку 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 )