workflow README

The project's README from github.com/sogou/workflow. As one markdown file: README.md.

简体中文版(推荐)

Sogou C++ Workflow

License Language Platform Build Status

As Sogou`s C++ server engine, Sogou C++ Workflow supports almost all back-end C++ online services of Sogou, including all search services, cloud input method, online advertisements, etc., handling more than 10 billion requests every day. This is an enterprise-level programming engine in light and elegant design which can satisfy most C++ back-end development requirements.

You can use it:

#include <stdio.h>
#include "workflow/WFHttpServer.h"

int main()
{
    WFHttpServer server([](WFHttpTask *task) {
        task->get_resp()->append_output_body("<html>Hello World!</html>");
    });

    if (server.start(8888) == 0) { // start server on port 8888
        getchar(); // press "Enter" to end.
        server.stop();
    }

    return 0;
}

Compiling and Running Environment

Get Started (Linux, macOS):

git clone https://github.com/sogou/workflow
cd workflow
make
cd tutorial
make

With SRPC Tool (NEW!):

https://github.com/sogou/srpc/blob/master/tools/README.md

With apt-get on Debian Linux, ubuntu:

Sogou C++ Workflow has been packaged for Debian Linux and ubuntu 22.04.
To install the Workflow library for development purposes:

sudo apt-get install libworkflow-dev

To install the Workflow library for deployment:

sudo apt-get install libworkflow1

With dnf on Fedora Linux:

Sogou C++ Workflow has been packaged for Fedora Linux.
To install the Workflow library for development purposes:

sudo dnf install workflow-devel

To install the Workflow library for deployment:

sudo dnf install workflow

With xmake

If you want to use xmake to build workflow, you can see xmake build document

Tutorials

Programming Paradigm

Program = Protocol + Algorithm + Workflow

Structured Concurrency and Task Abstraction

Callback and Memory Reclamation Mechanism

Any Other Questions?

You may check the FAQ and issues list first to see if you can find the answer.

You are very welcome to send the problems you encounter in use to issues, and we will answer them as soon as possible. At the same time, more issues will also help new users.

workflow (sogou/workflow)

Searching Database…

14.4K ·GitHub
Что это такое?Sogou C++ Workflow — промышленный C++-движок для асинхронного сетевого взаимодействия и параллельных вычислений. Компания Sogou использует его внутри для поиска, облачного метода ввода и рекламных сервисов, а он обрабатывает миллиарды запросов в день.
Это фреймворк или просто сетевая библиотека?Это полноценный фреймворк для асинхронного программирования. Помимо многопротокольной клиент-серверной библиотеки (HTTP, Redis, MySQL, Kafka), он позволяет создавать собственные протоколы, свою RPC-систему и произвольные рабочие процессы на основе DAG, которые сочетают сетевые операции и вычисления.
Как добавить это в мой проект?Установите готовые пакеты через apt-get в Debian/Ubuntu или dnf в Fedora, соберите проект с помощью xmake или скомпилируйте из исходников через make, а затем следуйте руководствам (например, примеру клиента 'wget'), чтобы написать свою первую задачу.
Что нужно для сборки?Компилятор с поддержкой C++11 и OpenSSL 1.1+ (BoringSSL тоже подходит). Зависимостей от boost или asio нет, однако для протокола Kafka нужны библиотеки сжатия lz4, zstd и snappy.
Версия для Windows не отстаёт от Linux?Поддержка Windows поставляется в отдельной ветке и использует IOCP вместо реализации для Linux на основе epoll, однако пользовательские интерфейсы полностью идентичны версии для Linux.
На каких платформах и процессорах это работает?Работает на Linux, macOS, Windows и Android, на 32- и 64-битных x86, на ARM как с порядком байтов big-endian, так и little-endian, а также на процессорах Loongson.
Как Workflow связан с srpc?srpc — это отдельная RPC-система с открытым исходным кодом, построенная на основе Workflow; она добавляет поддержку протоколов srpc, brpc, trpc и thrift.
Могут ли воркфлоу быть сложнее простых последовательных и параллельных цепочек?Да: помимо обычных последовательных и параллельных структур фреймворк поддерживает произвольные топологии задач в виде DAG (направленного ациклического графа).
Какие клиенты есть из коробки?В комплекте есть готовые асинхронные клиенты для HTTP, Redis, MySQL (а также MariaDB и TiDB) и Kafka, поэтому писать собственный код протокола для них не нужно.
Как в асинхронном коде с колбэками избегается утечка памяти?Время жизни каждой задачи длится от создания до завершения колбэка, после чего она автоматически освобождается; ненужные задачи нужно освобождать вызовом dismiss(). Архитектура намеренно не использует std::shared_ptr, отдавая предпочтение колбэкам на основе std::function.
What are similar projects?brpc, consul, swoole-src, pingora, go-zero, istio, zenc, eureka
Creator
sogou
Size
5 MB
Stars
14.4K
Age
6y
Commits · 90 Days