[51CTO.com からのオリジナル記事] この記事では、特定のプロジェクト例から始まり、迅速にスケーラブルなマイクロサービス アーキテクチャをゼロから構築する方法について説明します。 2017年12月1日から2日にかけて、51CTO主催のWOTDグローバルソフトウェア開発技術サミットが深セン中州マリオットホテルで盛大に開催されました。 このサミットのテーマはソフトウェア開発でした。 Sina Weibo R&D Centerのプラットフォームのシニアシステム開発エンジニアであるWen Qing氏は、マイクロサービスとコンテナテクノロジーのセッションで「Dockerに基づくWeiboライブインタラクティブマイクロサービスアーキテクチャ」をテーマに素晴らしい講演を行いました。 この記事では、次のトピックを中心に、ライブ インタラクティブ ブロードキャストのマイクロサービス アーキテクチャ設計について説明します。
Weiboライブインタラクティブプラットフォームの背景と課題 2017年はライブストリーミングにとって大きな年でした。 Sina Weiboは独自のアプリでライブストリーミングサービスを開始し、Taobao、Yizhibo、Hongdouなどのプラットフォームとのやり取りも開始しました。 技術的に言えば、ライブ放送は一般的に 2 つの部分に分かれています。
ライブ ブロードキャストの特徴は、室内に多数の人がいるため、ライブ ブロードキャスト プラットフォームは、数百万のユーザーが同時にオンラインになるシナリオをサポートできる必要があることです。 Weiboライブプラットフォームの特徴 ライブインタラクティブシステムの基本モデルはメッセージ転送システムです。つまり、ユーザーがメッセージを送信し、他のユーザーがそのメッセージを受信し、対応する保存を実行します。 メッセージング システムには一般に、リアルタイム性、信頼性、一貫性という 3 つの基本的な評価基準があります。ライブ ブロードキャストのようなメッセージング システムの場合、信頼性と一貫性に対する要件は高くありませんが、リアルタイム パフォーマンスに対する要件は非常に高くなります。 ユーザーがアンカーにギフトを送信すると、アンカーは 10 秒後または 1 分後に受信して返信します。これは受け入れられません。したがって、「第 2 レベル」でのリアルタイム パフォーマンスが必要になります。 Weiboライブストリーミングインタラクションの特徴:
ライブインタラクティブシナリオは異なります。ユーザーがルームに参加した後、何も操作をしなくても、多くのプッシュ通知が届きます。この非常にリアルタイムなプッシュ方式は、サーバーに継続的な負荷をかけます。 Weiboライブストリーミングプラットフォームが直面する課題 ライブ放送の需要が大きく、ゲームプレイも多様化しているため、私たちは次の 3 つの側面から課題に直面しています。
Weiboライブインタラクティブプラットフォームのマイクロサービスアーキテクチャの進化 上記 3 つの課題に対応するため、私たちはライブインタラクティブ放送用の独自のマイクロサービス アーキテクチャを構築しました。上の図はライブインタラクティブのアーキテクチャ図です。ビジネス層を、ディスカバリー サービス、サードパーティ プラットフォーム サービス、プッシュ サービスなどのさまざまなマイクロサービスを含むモジュール部分に分割しました。 アーキテクチャの選択 アーキテクチャの選択に関しては、まず従来のモノリシック モデルを見てみましょう。モノリスは多くのシナリオに適しており、特にアジャイル開発に適しています。 Weibo のやり取りのトラフィックが膨大で、システムが比較的複雑なため、次のような問題が発生します。
堅牢性が低い。システムにバグがあると、他のサービス、あるいはサービス全体が麻痺してしまいます。 マイクロサービスとモノリスの違いは、マイクロサービスではいくつかの共通機能を分割し、その分割に基づいて各モジュールが独自の DB とリソースを維持できることです。 したがって、マイクロサービスの利点は次のように反映されます。
マイクロサービスの問題 マイクロサービスの導入により、いくつかの新たな問題も生じます。
問題1: サービスの分割 マイクロサービスの分割に関して、誰もが最も懸念する問題は、分割の強度です。私たちは次のようなシンプルなアプローチを採用しました。これは、皆さんのプロジェクトでも参考にしていただけます。
たとえば、サーバーが足りない場合、コア サービスのみが保護され、コア以外のサービスはコア サービスに影響を与えません。そのため、事業の重要度に応じて分割する方法です。
基本的な分割が完了したら、ビジネス シナリオに応じてコア サービスをさらに分割できます。
プッシュ サービスを分割した理由は次のとおりです。
同様に、部屋に 100 万人がいれば、プッシュは 1,000 万回発生します。メッセージ量の大きさが非常に大きいため、プッシュサービスは頻繁に拡張する必要があるサービスであることがわかります。
ビジネスの観点から、非コア サービスを次のように単純に分割します。
Barrage サービスを分割する理由を見てみましょう。このサービスは、履歴メッセージを一括で取得するために使用される外部に公開されたサービスであるため、履歴メッセージを一括で取得すると、必然的に大量の帯域幅が消費されます。 したがって、次の最適化手法を採用する必要があります。
上の図に示すように、マイクロサービスに分割する前は、サービスが無秩序に混在しており、まとめてデプロイする必要がありました。そのため、さまざまな戦略に基づいて、上記の方法に従ってサービスを分割します。 問題2: サービス通信 同時に、同期と非同期の観点からサービス間の通信も分割します。
コアサービスと非コアサービス間の通信の相互作用に関するシナリオ分析を実施しました。上図に示すように、サードパーティサービス(サードサービス)には次の 2 つの側面が含まれます。
Barrage サービスでは、共有データベース アプローチを採用しています。メッセージのバッチ再生は大量のメッセージ帯域幅を消費するサービスであるため、システム リソースの提供を確実にするために、データベースを共有し、データベースから直接読み込みます。 問題3: サービス検出 プッシュ サービス タイプのサービス検出では、DNS に依存して DNS にサービス検出を行わせるという従来の方法を廃止し、代わりに独自に作成したディスパッチ サービスを採用しました。 その動作メカニズムは次のとおりです。
RPC タイプのサービス検出では、レジストリが利用可能なサービスのリストを提供し、サーバーがサービスを提供し、クライアントがサービスを検出して使用するという、一般的な SOA アーキテクチャを使用します。そのため、Motan RPC を使用して、さまざまなニーズに迅速に対応し、検出を完了します。 マイクロサービスの概要 要約すると、マイクロサービスは次の 4 つの問題を解決します。
急速な拡大に対応できる体制をとっているため、運用・保守要員の参加・配置が必要です。次に、ライブインタラクティブ放送の弾性スケーリング戦略について説明します。 Weibo ライブインタラクティブプラットフォームの弾力的なスケーリング Docker ベースのハイブリッド クラウド アーキテクチャ Weibo の使用は典型的なトラフィック急増のシナリオであるため、盲目的にサーバーを購入するという従来のソリューションを採用すると、全体的な負荷飽和の不均衡が発生します。 たとえば、人々は通常、日中や深夜にWeiboをチェックしないため、サーバーとネットワークの利用率は比較的低くなります。爆発的な負荷は夕方のピーク時にのみ生成されます。 そのため、当社は、パブリック クラウド上のさまざまな高速かつ弾力性のあるスケーラブルなリソース サービスを利用するという、急速で弾力性のある拡張と縮小の戦略を採用しました。 しかし、これまでのプライベートクラウド環境は完全に弊社の管理下にあったため、パブリッククラウドの導入により環境の違いが生じています。そこで、業界で一般的なソリューションを参考にして、Docker を採用しました。 Docker のネットワーク モデルの選択には、通常、ブリッジ、コンテナ、ホストの実装が含まれます。
そのため、私たちはホストモードを採用しました。 ホスト モードでは同じ eth0 を共有できるため、両者はホストのネットワーク名前空間を共有できます。 同時に、さまざまなルーティングのオーバーヘッドが節約されるため、ブリッジ モードよりも高速になります。 Dockerの利点はシンプルで軽量であり、Weiboのアプリケーションシナリオに非常に適していることがわかります。さらに、パブリック クラウドのリソースと組み合わせて、Docker ベースのハイブリッド クラウド アーキテクチャが形成されます。これを DockerDCP と呼びます。 DCP がオープンソース化されていることは注目に値します。 GitHub に Open DCP のサービス図があり、検索することができます。 DCPの役割は、「三大祭り」期間中のトラフィックの急増に対応するために、容量を拡張し、10分以内に1,000台のマシンを展開できるようにすることです。 その結果、毎日 6,000 億回の API 呼び出しと数兆回の RPC 呼び出しが発生します。 ライブインタラクションやDCPの自動運用保守展開や拡張・縮小を実現するため、SLB(負荷分散)にメッセージを都度プッシュし、Push Serviceのプッシュサービスを通じてネットワーク間サービス展開を実施します。 容量拡張を実現するには、まず機器の供給元を知る必要があります。 DCP は、イントラネットとエクストラネット (パブリック クラウド) 上のさまざまなマシンを区別するのに役立ちます。 たとえば、イントラネット内の 3 つのビジネス パーティ (A、B、C) はそれぞれ独自のサーバーを所有しており、それらを「共有プール」として設定しています。 ビジネス C は、トラフィックのピーク時にプール内の 3 つのサーバーを申請し、ビジネスがアイドル状態のときにリソースをプールに戻します。これにより、プライベートクラウドとパブリッククラウド上での急速な容量拡張を自由に実現することができ、これを「デュアルクラウド拡張」と呼びます。 自動スケーリングプロセス 私たちのライブインタラクティブ自動スケーリングプロセスは、おおまかに次のように分かれています。
容量を縮小するプロセスは、前述の容量を拡大するプロセスと似ているため、ここでは詳細には触れません。 上記の監視指標は、次の 2 つのカテゴリに分類されます。
同様に、監視指標を指定するためのプロセスは、パフォーマンス システムに対して対応するストレス テストを実行する > サービスのボトルネック ポイントを検出する > ボトルネック ポイントを分析する > 監視指標を策定する、というものです。 現在、機械学習による自動監視の実現にも取り組んでいます。当社では通常、さまざまなサービスに対して毎週または定期的にストレス テストを実行し、サービスのボトルネックをタイムリーに特定します。 新しく導入されたマシンによって全体的なパフォーマンスに不一致が生じる可能性があり、サービス需要とコード量が増加すると、サービス全体のボトルネックもそれに応じて他の場所に移動する可能性があります。そこで、ストレステストの進化版により、ボトルネックのリアルタイム把握を実現しました。 プッシュ サービス指標の監視に関しては、ストレス テスト中に監視するビジネス パフォーマンスには次のものが含まれます。
マシンのパフォーマンス指標には、帯域幅、PPS、CPU、メモリ、IOPS なども含まれます。 監視指標の収集に関しては、次の 2 つの側面に分けられます。
弾性膨張と収縮の概要 まとめると、弾性膨張と収縮に関しては、次の 3 つの点を達成しました。
典型的なケースの共有 以下は、スケーリング アーキテクチャを実装する前と実装した後の 2 つのライブ ブロードキャスト ケースの比較です。 自動膨張・収縮を実現する前に、神舟宇宙船の回収の様子を生中継しました。午前 3 時頃に発生し、ネットワーク上の誰にも通知されていなかったため、トラフィックがどの程度表示されるか分からないまま、メッセージ全体をプッシュしました。 翌日の事後分析により、サービストラフィックがボトルネックポイントに達し、多くのアラームが表示されたことがわかりました。幸いにも、勤務員がいたので、故障は起きませんでした。 メンテナンスチームの疲弊とサービス保証の観点から、自動スケーリングの実装を開始することにしました。 上図の通り、自動スケーリングを実装した後のライブ放送です。左図の青い線の各谷は、容量拡張操作を表します。 谷が最小の長い接続数にある場合、多数のマシンが自動的に拡張されるため、その時点ではトラフィックは流入せず、接続数は基本的にゼロになります。 その後、接続数が急増し、サービスは 30 分以内に 4 回の急速な自動拡張を実行しました。これらの自動容量拡張は、容量の拡張または縮小時に電子メールによるリマインダーが送信されることを除き、運用および保守担当者には透過的です。
Wen Qing 氏は Sina Weibo のシニア システム開発エンジニアであり、Weibo のビデオおよびコミュニケーション関連システムの開発に従事しています。現在、Weibo ライブメッセージインタラクションシステムの研究開発を担当し、高可用性、弾力的なスケーラビリティ、低結合のマイクロサービスアーキテクチャ設計を提唱しています。技術的には、メッセージ通信に長けており、システムがトラフィックの急増や高い同時実行性に対処する方法について豊富な実践経験を持っています。 [51CTO オリジナル記事、パートナーサイトに転載する場合は、元の著者とソースを 51CTO.com として明記してください] |
<<: クラウド ストレージの価格: 主要プロバイダーの比較
>>: ハイブリッドクラウド セキュリティの 5 つの主要戦略
多くの企業製品のホームページ上のロングテールワードやキーワードランキングは、すべて分類情報プラットフ...
7 月 1 日から 7 月 7 日まで、世界最大のプライベート エクイティ ファンド ホスティング事...
誰もがオンラインマーケティングにおけるソフト記事の重要性を知っています。私がダイエット薬を販売してい...
2019年9月24日、DiptechのDEEPEXI 2.0新製品発表会およびシリーズA資金調達戦略...
現在、映画、テレビ、ビデオのウェブサイトは数多く存在します。長年運営されている有名なサイトとしては、...
趙南徐潔雲価格競争は電子商取引企業に「消化不良」を引き起こしたが、上流のサプライヤーに支払いを強制す...
実は、私はよく「ウェブサイトの運営は会社の運営レベル次第」と言います。会社の運営や発展の方向性は、ウ...
banwagonhost(私たちは「banwagonhost」と呼んでいます)は、IT7傘下のVPS...
数日前、見知らぬ人からの思いがけないメールとブログのメッセージに心を動かされ、深い考えに陥りました。...
先週更新されたスーパーコンピューター上位500位のリストでは、中国が引き続き上位2位を占め、システム...
URL、または Uniform Resource Locator (URL、英語の Uniform ...
分散ストレージといえば、ソフトウェア定義ストレージ (SDS) を思い浮かべるかもしれません。世界中...
オンラインストアBabaは、Alimamaから、2014年5月15日午後2時頃、Alimamaが正式...
序文:インターネットの急速な発展と再編は、中国の何億人ものインターネットユーザーにさらなる利便性をも...
DA International Group Ltd. 傘下の alphavps.bg ではバレンタ...