[C ++ Advanced Tutorial]ゼロからサーバーフレームワークを開発する(Sylar)
ストリーミングログスタイルとフォーマットログライティングスタイルをサポートし、ログのカスタマイズ、マルチログの分離、その他の機能をサポートします、ログレベル、ログ名、ファイル名、行番号など。
構成により、慣習のアイデアを採用します。定義が利用可能です。別々に解析する必要はありません。変更通知機能をサポートします。 YAMLファイルを構成コンテンツとして使用します。レベル形式のデータ型をサポートし、STLコンテナ(ベクトル、リスト、セット、マップなど)をサポートし、次のようにカスタマイズされたタイプ(シリアル化と脱派化方法が必要)をサポートします。
static sylar::ConfigVar< int >::ptr g_tcp_connect_timeout =
sylar::Config::Lookup ( " tcp.connect.timeout " , 5000 , " tcp connect timeout " );TCP接続タイムアウトパラメーターは、g_tcp_connect_timeout-> getValue()を使用して、構成の値を取得すると、次のように上記の構成形式を自動的に更新できます。
tcp:
connect:
timeout: 10000スレッドモジュールは、スレッド、セマフォ、Mutex、Rwmutex、Spinlockなどの一般的に使用される関数をカプセル化します。さらに、C ++ 11は読み取りおよび書き込みMutex、RWMutex、SpinLockなどを提供しておらず、高い並行性シナリオでは、これらのオブジェクトがよく使用されます。だから私は自分でpthreadをカプセル化することを選んだ
Coroutine:スレッド内のスレッドに相当するユーザーモードスレッドは軽量です。ソケットフックは後続の構成で構成されており、複雑な非同期コールを同期操作にカプセル化できます。ビジネスロジックを書くことの複雑さを軽減します。 現在、Coroutineはucontext_tに基づいて実装されており、boost.contextでfcontext_tを使用して、後に実装されます。
Coroutineスケジューラは、Coroutinesのスケジューリングを管理し、スレッドプールとして内部的に実装されています。これにより、Coroutinesをサポートして複数のスレッドを切り替え、Coroutinesを固定スレッドで実行することも指定できます。これは、NスレッドとMコロウチンを備えたNMコルーチンスケジューリングモデルです。各スレッドを再利用します。
継承およびコルーチンスケジューラ、epoll(Linux)をカプセル化し、タイマー関数(Epollを使用してタイマー、ミリ秒レベルを実装)をサポートし、ソケットの読み取りおよび書き込み時間の追加、削除、キャンセルをサポートします。 1回限りのタイマー、サイクルタイマー、コンディションタイマー、その他の機能をサポートします
基礎となるフックシステムとソケット関連API、ソケットIO関連API、および睡眠シリーズAPI。フックのターンオンコントロールは糸状粒子です。自由な選択。フックモジュールを介して、非同期関数のない一部のAPIを使用して、非同期性能を示すことができます。たとえば(mysql)
ソケットクラスをカプセル化し、すべてのソケットAPI機能を提供し、アドレスクラスを統合し、IPv4、IPv6、およびUNIXアドレスを統合します。また、ドメイン名とIP解像度関数も提供します。
BYTEARRAYバイナリシリアル化モジュールは、バイナリデータの共通操作を提供します。基本タイプの読み取りと書き込みint8_t、int16_t、int32_t、int64_tなど、varint、std :: stringサポートサポート、サポートバイト変換、ファイルへのシリアル化のサポート、およびファイルからの偏りをサポートします。
ソケットクラスに基づいて、一般的なTCPServerサーバークラスをカプセル化し、簡単なAPIを提供し、使いやすく、1つ以上のアドレスをすばやくバインドし、サービスを開始し、ポートを聴き、接続を受け入れ、ソケット接続を処理し、その他の機能を処理できます。特定のビジネス機能のサーバー実装は、このクラスを継承することにより迅速に実装できます。
カプセル化されたストリーミング統合インターフェイス。ファイルとソケットを統一されたインターフェイスにカプセル化します。それを使用するときは、統一されたスタイルを使用します。統一されたスタイルに基づいて、より柔軟な拡張を提供できます。 SocketStreamは現在実装されています
Ragel(有限状態マシン、アセンブリに匹敵する性能)は、HTTP/1.1の簡単なプロトコル実装とURIの解析を実装します。 SocketStreamに基づいて、HTTPConnection(HTTPクライアント)およびHTTPSESSION(HTTPサーバーリンク)が実装されています。 httpserverはtcpserverに基づいて実装されています。完全なHTTPクライアントAPIリクエスト関数とHTTP Basic API Server機能を提供します
Javaのサーブレットに続いて、サーブレットインターフェイスのセットが実装されています。ServletDispatch、およびfunctionservletが実装されています。 NotFoundServlet。 URIの正確なマッチング、ファジーマッチング、その他の機能をサポートします。 HTTPモジュールとともに、HTTPサーバー機能を提供します
連絡先情報:QQ:564628276メール:[email protected] Wechat:Sylar-Yin QQ Group:8151915(Sylar Technology Group)Personal Homepage:www.sylar.top Github:https://github.com/sylar-yin/sylar