Repolode
sogou

sogou/workflow

C++11-фреймворк для параллельных вычислений и асинхронной работы с сетью, используемый в серверных сервисах Sogou для построения DAG-сценариев задач.

Звёзды
14,423
Форки
2,551
Открытые issues
27
Последний коммит
3 дня назад

Что это?

Sogou C++ Workflow — это C++-движок для серверных сервисов, который объединяет асинхронную работу с сетью и параллельные вычисления. Задачи можно объединять в последовательные и параллельные цепочки, а также в произвольные структуры DAG, чтобы сетевые запросы, вычислительные задачи и файловый ввод-вывод выполнялись в рамках одного сценария.

В состав фреймворка входят асинхронные клиенты для HTTP, Redis, MySQL (включая MariaDB и TiDB) и Kafka, а также API HTTP-сервера, который можно запустить всего несколькими строками кода. Кроме того, поддерживаются пользовательские протоколы для создания собственных клиентов, серверов и RPC-систем, а также управление сервисами и балансировка нагрузки в микросервисных системах.

Проект рассчитан на Linux, macOS, Windows (через отдельную ветку с использованием IOCP) и Android. Для master-ветки требуются C++11 и OpenSSL 1.1 или более поздней версии; зависимости от boost и asio нет. Для протокола Kafka дополнительно нужны lz4, zstd и snappy.

Ключевые возможности

  • 01Позволяет строить последовательные и параллельные цепочки задач, а также произвольные графы DAG.
  • 02Содержит асинхронные клиенты для HTTP, Redis, MySQL и Kafka.
  • 03Позволяет создавать HTTP-серверы с помощью небольшого фрагмента кода.
  • 04Поддерживает пользовательские протоколы для собственных клиентов, серверов и RPC.
  • 05Позволяет выполнять сетевые задачи, вычисления и файловый ввод-вывод в рамках одного сценария.
  • 06Предоставляет средства управления сервисами и балансировки нагрузки.

Сценарии использования

  • Создание высоконагруженных серверных сервисов, сочетающих сетевые вызовы и задачи с интенсивными вычислениями на CPU.
  • Оркестрация нескольких асинхронных вызовов API или баз данных с учётом зависимостей между ними.
  • Создание собственных RPC-систем на основе пользовательского протокола.
  • Разработка компонентов микросервисов на C++ со встроенной балансировкой нагрузки.

Быстрый старт

  1. 1

    Клонируйте репозиторий

    git clone https://github.com/sogou/workflow
  2. 2

    Перейдите в каталог проекта и соберите библиотеку

    cd workflow make
  3. 3

    Соберите примеры из руководства

    cd tutorial make

Что важно знать

  • Для ветки master требуется OpenSSL версии 1.1 или выше, если не использовать ветку nossl.
  • Для поддержки Kafka необходимо установить дополнительные библиотеки сжатия (lz4, zstd, snappy).
  • Поддержка Windows находится в отдельной ветке, а не в основной кодовой базе.

В подборках

Темы

Частые вопросы

Что такое workflow?
C++11-фреймворк для параллельных вычислений и асинхронной работы с сетью, используемый в серверных сервисах Sogou для построения DAG-сценариев задач. Sogou C++ Workflow — это C++-движок для серверных сервисов, который объединяет асинхронную работу с сетью и параллельные вычисления. Задачи можно объединять в последовательные и параллельные цепочки, а также в произвольные структуры DAG, чтобы сетевые запросы, вычислительные задачи и файловый ввод-вывод выполнялись в рамках одного сценария.
workflow можно использовать бесплатно? Какая у него лицензия?
workflow распространяется с открытым исходным кодом под лицензией Apache-2.0. Перед использованием в коммерческих продуктах проверьте условия лицензии.
workflow всё ещё поддерживается?
Активно поддерживается. Последний коммит в workflow — 22 окт. 2026 г..
Для чего можно использовать workflow?
Создание высоконагруженных серверных сервисов, сочетающих сетевые вызовы и задачи с интенсивными вычислениями на CPU. Оркестрация нескольких асинхронных вызовов API или баз данных с учётом зависимостей между ними. Создание собственных RPC-систем на основе пользовательского протокола. Разработка компонентов микросервисов на C++ со встроенной балансировкой нагрузки.
Как установить workflow?
Клонируйте репозиторий: git clone https://github.com/sogou/workflow Перейдите в каталог проекта и соберите библиотеку: cd workflow make Соберите примеры из руководства: cd tutorial make
Где скачать workflow?
Исходный код и инструкции по установке — на GitHub: https://github.com/sogou/workflow

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты

Лёгкая базовая библиотека на C++: корутины в стиле goroutine, сетевые компоненты, логирование, разбор флагов, JSON, модульное тестирование и бенчмарки.

4,2 тыс.593C++OtherОбновлён 27 дней назад