サービス通信、ディスカバリー、トラフィック管理を実現するRPC・マイクロサービスフレームワーク、Apache DubboのJava実装。
sogou/workflow
Sogouのバックエンドサービスで使われているC++11並列計算・非同期ネットワークフレームワーク。DAGベースのタスクワークフローを構築できます。
- スター
- 14,425
- フォーク
- 2,552
- 未解決の Issue
- 27
- 最終コミット
- 一昨日
これは何?
Sogou C++ Workflowは、非同期ネットワーク処理と並列計算を組み合わせたバックエンドサービス向けのC++エンジンです。タスクを直列、並列、または任意のDAG構造に組み合わせることで、ネットワークリクエスト、計算処理、ファイルIOをすべて同じフローで実行できます。
HTTP、Redis、MySQL(MariaDBとTiDBを含む)、Kafka向けの非同期クライアントを標準で備えており、数行のコードで起動できるHTTPサーバーAPIも提供します。また、独自のクライアント、サーバー、RPCシステムを構築するためのユーザー定義プロトコルに対応し、マイクロサービス環境向けのサービスガバナンスとロードバランシングもサポートしています。
Linux、macOS、Windows(IOCPを使用する別ブランチ経由)、Androidを対象としています。masterブランチではC++11とOpenSSL 1.1以降が必要ですが、boostやasioには依存しません。Kafkaプロトコルを利用する場合は、さらにlz4、zstd、snappyが必要です。
主な機能
- 01直列、並列、任意のDAGタスクグラフを構築できます。
- 02HTTP、Redis、MySQL、Kafka向けの非同期クライアントを備えています。
- 03短いコードでHTTPサーバーを構築できます。
- 04独自のクライアント、サーバー、RPC向けのユーザー定義プロトコルをサポートしています。
- 05ネットワーク処理、計算処理、ファイルIOのタスクを同じワークフローで実行できます。
- 06サービスガバナンスとロードバランシング機能を提供します。
ユースケース
- ネットワーク呼び出しとCPU負荷の高い処理を組み合わせた、高並行バックエンドサービスの構築。
- 依存関係のある複数の非同期API呼び出しやデータベース呼び出しのオーケストレーション。
- ユーザー定義プロトコルをベースにした独自RPCシステムの作成。
- ロードバランシング機能を備えたC++製マイクロサービスコンポーネントの開発。
クイックスタート
- 1
リポジトリをクローンする
git clone https://github.com/sogou/workflow - 2
プロジェクトディレクトリに移動してライブラリをビルドする
cd workflow make - 3
チュートリアルのサンプルをビルドする
cd tutorial make
使う前に知っておきたいこと
- nosslブランチを使用しない場合、masterブランチにはOpenSSL 1.1以降が必要です。
- Kafkaのサポートには、追加の圧縮ライブラリ(lz4、zstd、snappy)のインストールが必要です。
- Windowsのサポートはメインのコードベースではなく、別のブランチにあります。
収録されている特集
トピック
よくある質問
- workflow とは?
- Sogouのバックエンドサービスで使われているC++11並列計算・非同期ネットワークフレームワーク。DAGベースのタスクワークフローを構築できます。 Sogou C++ Workflowは、非同期ネットワーク処理と並列計算を組み合わせたバックエンドサービス向けのC++エンジンです。タスクを直列、並列、または任意のDAG構造に組み合わせることで、ネットワークリクエスト、計算処理、ファイルIOをすべて同じフローで実行できます。
- workflow は無料で使えますか?ライセンスは?
- workflow は Apache-2.0 ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- workflow は今もメンテナンスされていますか?
- 活発にメンテナンス中。workflow の最終コミットは 2026年10月22日 です。
- 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 をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
HTTP/WebSocketサービスを構築するための、高速で使いやすいFlask風C++マイクロフレームワーク。ヘッダーオンリーで利用できます。
goroutine風コルーチン、ネットワーク、ロギング、フラグ解析、JSON、ユニットテスト、ベンチマークをまとめた軽量C++基盤ライブラリ。
concurrent.futuresを使ってHTTPリクエストを非同期に送信する、Pythonのrequestsライブラリ向け小型アドオンです。
信頼性の高いネットワークアプリケーションの構築に役立つ、タスクスケジューリング、ノンブロッキングI/O、ネットワーク、タイマーを提供するRust向け非同期ランタイムです。
Node.jsを支えるイベントループを提供する、クロスプラットフォーム対応の非同期I/O用Cライブラリ。