要約: 一般的なフィードストリーミングシステムの概念、アーキテクチャ、課題、およびGaussRedisを使用してフィードストリーミングシステムを設計する方法について説明します。
1.背景
m.fenfaw.cnを無料で受け取るクーポンGaussDB(Redis用)(以下、Gauss Redisと呼びます)は、Huaweiによって開発された強力な一貫性と永続性のあるNoSQLデータベースであり、Redis5.0プロトコルと互換性があります。
インターネット時代では、私たちの日常生活はフィードストリームで溢れています。WeChatMoments、Weibo、Douyin、Toutiaoなどはすべてフィードストリームを使用して、フォローしている友達や興味のあるコンテンツを時間内にプッシュし、私たちを沈めさせていますそれ。自分自身を解放することができず、商業的価値の向上をもたらします。次に、一般的なフィードストリーミングシステムの概念、アーキテクチャ、課題、およびGaussRedisを使用してフィードストリーミングシステムを設計する方法について説明します。
第二に、コンセプト
飼料ストリームシステムの形で、飼料生産者は、生産された飼料を貯蔵および流通システムを介して飼料消費者に渡し、最後に特定の形態の表示で渡す。
- フィード:シングルプッシュのコンテンツ。Weiboはフィードです。
- フィードストリーム:連続フィードで構成される情報のストリーム。
- 表示フォーム:現在、メインの表示フォームにはタイムラインとランクが含まれています。たとえば、Weiboはタイムラインに表示されます。Toutiaoクライアントは、主に推奨ランクを表示に使用します。
- フィードプロデューサー: Weiboの場合はユーザーごと、Toutiaoの場合は推奨アルゴリズムです。
- フィードコンシューマー:フィード通知を受信するサブジェクト。
- 同期ストレージシステム:この部分は一般に3つの部分に分けることができます(特定の実装はわずかに異なります)。
6.1コンテンツストレージモジュール:この部分は、フィードの元のコンテンツがどのように保存されるかに関係しています。あなたが投稿したWeiboのように。
6.2アソシエーション関係ストレージモジュール:Weiboの場合、ユーザーのフォロワーとフォロワーが保存され、ヘッドラインの場合、ユーザーが保存されます(ユーザーのポートレートによるすべてのユーザーの分類)
。6.3メールボックスモジュール:一般にメッセージ配信モジュールとも呼ばれ、フィードメッセージはメールボックスに保存され、最終的にフィードストリームを形成します。
三、建築設計
上記のコンセプトの紹介を通して、フィードが最終的にフィードプロデューサーからフィードコンシューマーにどのように流れるかを見てみましょう。
フィードプロデューサーはコンテンツを作成してサーバーに送信します。サーバーは最初にメッセージコンテンツをメッセージストレージモジュールに格納し、次にメールボックスモジュールの設計に従ってリレーショナルストレージデータベースにクエリを実行して、通知情報をに書き込みます。メールボックスモジュール、およびフィードコンシューマーは、メールボックスニュースをクエリすることによってタイムリーな情報を取得します。
メッセージストレージモジュール:
フィードコンテンツは通常、大量のデータを含む半構造化データであり、永続的なコンテンツを必要とします。論理的には、IDとコンテンツの間にマッピング関係を持つKVシステムです。
リレーションストレージモジュール:
アソシエーションリレーションが追加および削除されます。これは可変長のコレクションであり、迅速な追加、削除、およびチェックアクションをサポートできる必要があり、通常、結合などの複雑な操作をサポートする必要はありません。したがって、NoSQLデータベースは、このタイプのデータの保存に適しています。
メールボックスモジュール:
メールボックスモジュールに関しては、一般的に、プッシュモード、プルモード、またはプッシュモードとプルモードの組み合わせのいずれを使用するかについて全員が話し合います。Huawei Cloud PBレベルデータベースGaussDB(Redis用)の謎解き問題5:IMシナリオでのGaussRedisのアプリケーションについても説明しました。
プッシュモードでは、関連付けの関係を照会した後、フィード通知が各フィードコンシューマーの受信ボックスに書き込まれます。フィードコンシューマーは、受信ボックスを照会することで完全なフィードストリームを取得でき、通知は個人の各受信ボックスに書き込まれます。通知が必要な人は拡大されます。
プルモードでは、フィード通知が送信トレイに書き込まれます。フィードコンシューマーは、最初にリレーショナルデータベースにクエリを実行し、次にすべてのフォロワーの送信トレイからフィードメッセージを取得し、それらを組み合わせて表示します。したがって、受信トレイが読み取られた回数とフォローしている人の数プロジェクトが関連しているので、読みが拡大されます。
プッシュプルモードの組み合わせ:ほとんどのユーザーの書き込みプッシュモードでは、特定のユーザーがプルモードを採用します。フィードコンシューマーは、読み取り時にそれぞれ自分の受信トレイと特定のユーザーの送信トレイを読み取り、マージ後に表示します。
どのモードを選択するかは、特定のビジネスシナリオと要件によって異なります。
多くのサービスが実装されると、最初にメッセージキューにメッセージが書き込まれます。一方では、トラフィックのピーク削減に役割を果たすことができます。他方では、次のように判断するなど、特定のプッシュ最適化ロジックを実装できます。スパムまたは機密性の高い単語。プッシュ。
4つの技術的課題
まず、WeChatMomentsによって公開されたデータの感触をつかみましょう。2021年1月19日、WeChatの創設者であるZhang Xiaolongは、WeChat Open Class ProでWeChatに関する最新データを公開しました。WeChatの7億8000万人のユーザーが毎日モーメントを入力し、1億2000万人のユーザーがモーメントを公開しています。平均して、1人あたりの閲覧回数は12回以上で、1日あたりの再生回数は100億回です。同様のフィードストリームシステムを実装したい場合、どのような課題がありますか。ストレージ容量の観点から、ユーザーが1日あたり平均3モーメントを送信すると、各コンテンツは1kB、年間約1,000億レコード、ストレージ容量は100TBに近くなります。アクセス要求の数の観点から、1日あたりの書き込みと読み取りのOPSピーク値は少なくとも100万レベルであり、ユーザーの書き込みと読み取りの遅延はリアルタイムである必要があり、応答時間は少なくとも数秒以内である必要があります。ユーザーは毎分APPを閉じます。したがって、永続性、大容量ストレージ、高スループット、簡単な拡張、低遅延、低ストレージコストを備えた分散ストレージシステムが必要です。
5つ目は、GaussRedisの利点です。
5.1 GaussRedisの概要
Gauss Redisは、Huawei Cloudデータベースチームによって独自に開発されたクラウドネイティブデータベースであり、Redis 5.0プロトコルと互換性があり、個別のコンピューティングおよびストレージアーキテクチャを採用しています。ストレージ側は、無制限の容量拡張、強力な一貫性、および高い信頼性を備えた自社開発のストレージシステムDFVを使用しています。コンピューティング側は、優れた書き込みパフォーマンスと読み取りパフォーマンスを備えたLSMストレージエンジンに基づいて実装されています。コンピューティングアーキテクチャの分離を利用して、Gauss Redis拡張はデータのコピーを必要とせず、第2レベルの拡張を実現し、クラウドネイティブのエラスティックスケーリングとリソース共有の利点を十分に活用します。
5.2フィードストリームシナリオでGaussianRedisを利用する方法
フィードストリーミングシナリオの場合、GaussianRedisは次のように使用できます。
- メッセージコンテンツストレージ
は、Gauss RedisのKV構造を使用して実現できます。GaussRedisは、大容量のデータストレージと低遅延のアクセスレイテンシを簡単にサポートできるストレージと計算の分離アーキテクチャを採用しています。 - 連想関係ストレージ
GaussRedisコレクション構造または辞書構造は、連想関係の追加、削除、変更、およびクエリを簡単に実現できます。 - メールボックスストレージ
メールボックスは実装中のキューであり、指定された場所から消費する機能をサポートします。Gauss Redisのストリーム構造は、キュー機能を実現し、フィードストリームメッセージを簡単に読み取ることができます。
5.3 GaussRedisフィードストリームの実践
以下では、Gauss Redisを使用して単純なWeiboサンプルを実装し、書き込み拡散モデルを使用して実現可能性を示しています。
システムには、Jay、Jolin、ZhangSan、LiSiの4人のユーザーがいます。その中で、ZhangSanとLiSiはJayに続き、LiSiもJolinに続きました。
上記は単純なWeiboシステムを実装していますが、実際のシステムはこれよりも複雑であり、ビジネスシナリオ用の特定の処理ロジックが含まれます。Gauss Redisをフィードストリームストレージベースとして使用することは、理想的なテクノロジーの選択です。
6、まとめ
Gauss Redisには、永続性、大容量ストレージ、高スループット、簡単な拡張、低レイテンシ、低ストレージコストという利点があり、フィードストリームストレージベースとして非常に適しています。優れた読み取りおよび書き込みパフォーマンスと高度な機能により、アプリケーション開発が大幅に簡素化されます。 。同時に、Gauss Redisは、パフォーマンスとコストのバランスが取れたオープンソースのRedisに基づいており、スマート医療、トラフィックピーククリッピング、カウンターなどの分野で広く使用できます。
セブン、終わり
著者:HuaweiクラウドGaussRedisチーム。
その他の技術記事については、Gauss Redisの公式ブログをフォローしてください:https://bbs.huaweicloud.com/community/usersnew/id_1614151726110813
8.参考資料
- 「GaussDB(Redis用)公式ホームページ」
https://www.huaweicloud.com/product/gaussdbforredis.html - 「HuaweiCloudGaussDB(Redis用)と自作のオープンソースRedisのコスト比較」
https://www.modb.pro/db/42739 - 「HuaweiCloudPBレベルデータベースGaussDB(Redis用)秘密の問題1:ストレージとコンピューティングからのRedisの分離」
https://bbs.huaweicloud.com/blogs/238584 - 「HuaweiCloudPBレベルデータベースGaussDB(Redis用)で明らかになった問題2:Redisメッセージキューストリームのアプリケーションに関する議論」
https://bbs.huaweicloud.com/blogs/245623 - 「HuaweiCloudPBレベルデータベースGaussDB(Redis用)で明らかになった問題5:IMシナリオでのGaussRedisの適用」
https://bbs.huaweicloud.com/blogs/249247 - 「フィードプル、リード増殖、それは正確には何ですか?」》
Https://cloud.tencent.com/developer/article/1168948 - 「Weiboフィード、プッシュおよびプルの練習」
https://cloud.tencent.com/developer/article/1168946
Huaweiクラウドコミュニティからのこの記事を共有してください「HuaweiクラウドPBレベルデータベースGaussDB(Redis用)第6の秘密:フィードストリームシーン」、原作者:GaussianRedis公式ブログ。
Huawei Cloudの新しいテクノロジーについて初めて学ぶには、クリックしてフォローしてください〜