ホームページ バックエンド開発 PHPチュートリアル Douban アーキテクチャ変更共有セッションの概要_PHP チュートリアル

Douban アーキテクチャ変更共有セッションの概要_PHP チュートリアル

Jul 13, 2016 pm 05:17 PM
server 共有 変化 について 要約する 建築 登録する ユーザー 現在のところ 要点 豆板

重要なポイントは次のとおりです:


現在PCサーバーは23台あります


1日あたりのPV数は約2,000万です。登録ユーザー数は300万人。
ほとんどのテーブル データには数千万行があります。

5 人のアルゴリズム チーム。さらに、フルタイムとパートタイムを含む合計 11 人の開発者がいます (以前、Bai Xing.com がテクノロジーを共有していたとき、開発者はわずか 10 人でした)。2006 年には、毎年約 120 万件の動的リクエストがありました。日。現時点での主なボトルネックはディスク i/0 です。ベンチャーキャピタルを獲得し、ハードウェア機器を購入する資金を用意してください。 2 台の iu サーバー (デュアルコア、4g メモリ) を購入します
1 台はアプリケーション サーバーとして使用され、もう 1 台はデータベース サーバーとして使用されます。デュアルライン IP コンピューター ルームに移行し、DNS を使用して異なるネットワーク セグメントの IP アドレスを解決します。どのネットワーク セグメントがテレコムに属しているかを確認します) セグメントは Netcom であり、自分で分析できます)。講演の最後に述べられたコンピューター室の調整を読んだ後、これは実際には回り道であると感じました。DNS 分析の側面を解決するには、適切なコンピューター室を選択することができます (後で、データ分散に IP セグメントに依存するのは信頼できないと結論付けました)。 )

具体的にはどうすればいいですか? 複数回線対応のコンピューター室(教育ネットワーク、Tietongなど)に置きます
そうするとその必要はありません。複数の IP セグメントを自分で割り当てる (つまり、アクセスするユーザーが Telecom か China Netcom かなどを判断する)。

メモリ キャッシュを使用するための 2 つの原則 (Douban は memcached を使用します):
1. より多くのリソースを消費する必要があるデータの場合
2. 再利用する必要があるデータ。 1 回だけ使用する必要がある場合、たとえリソースを消費しても、キャッシュにスローする意味はあまりありません

理解してください: メモリ キャッシュにもメモリが必要であり、無駄にする必要はありません。再利用する必要がない場合は、メモリに放り込むのは無駄です (結局のところ、メモリは安くはなく、Douban のメカニック ヒット率は非常に高いのです)。これもかなりのストレスから解放されます。



innodb は行レベルのストレージをサポートしているため、優れた同時アクセスのサポートを備えています。 myisam を使用するか innodb を使用するかに関係なく、そのビジネス特性は次のとおりです: 読み取りを多くして書き込みを少なく、myisam を使用、書き込みを多くし読み取りを少なく、innodb を使用します

データベースのセグメント化に関して: 現在は機能に従って分割されています (著者は説明していません)詳細には、機能モジュールに応じて分割する必要があります) 機能モジュールに関連するテーブルはライブラリに配置されます)、前述したように、古典的な mysql マスター/スレーブ アーキテクチャが使用されます。したがって、各ライブラリは実際には 3 回繰り返されます (メイン ライブラリと補助ライブラリだと彼は言いました)。 mysqlスレーブサーバーは3台になるはずです

データベースを分割した後、複数のライブラリを操作し、カーソルを使用して特定のライブラリと特定のテーブルを取得します。パラメータを渡します(詳細はわかりません)

データベースのマスター/スレーブレプリケーションの遅延の問題は、常に一般的な問題です。

ハードドライブの購入は教訓です。最初は、ディスクをアップグレードすることは不可能なので、より良いディスクを購入するためにより多くのお金を投資するほうがよいでしょう。それまでにウェブサイトはそれを保持できなくなります。まだ変わらなければなりません。そうですね、最初は、ビジネスが急速に発展すると交換する必要があるため、より多くのお金を出して高速ディスクを購入することをお勧めします。たとえ高価であっても、ディスクは無駄にはなりません。



1 日あたり 200 万件の動的リクエストに関して、Douban 氏は、静的な小さなファイル サービス (ユーザー アバター、カバー写真) がディスク i/0 をボトルネックにしていると述べました。以前は、私が愚かですべての写真を保存していました。このディレクトリの下には数十万の小さなファイルがあります(これは ls コマンドを使用できなくなる直接的な原因となり、使用するとすぐにサーバーが停止します)。ディレクトリ。各ディレクトリを 10,000 個のファイルに分割します。



専任のデータマイニングチームを擁します。アルゴリズム チームは行列計算を実行し、その結果をフロントエンドのクエリと表示のために mysql に入力します。


Douban の fs は、画像ストレージ用に特別に開発されました。実はこの仕組みはAmazonのものをベースにしており、書き込み時にはデータのコピーが3つ書き込まれます。


ディスクのランダム シークはスループットよりも重要です。当時のパフォーマンスのボトルネックはディスクのシーク速度でした (これは、大量の画像アクセスによって引き起こされるディスク ヘッドの位置決めによって引き起こされる遅延に似ています)。タオバオの画像ファイル システムの以前の分析と同様)


その後、すべての myisam テーブルが innodb テーブルに変更されました。

Innodb のキャッシュ: プロセス内 (つまりメモリ内) で自己管理されますが、myisam のキャッシュはファイルに基づいています (オペレーティング システムによって制御されます)。以前は、myisam テーブルと innodb テーブルの両方が使用されていたため、2 種類のテーブルがメモリをめぐって互いに競合し、効率的ではありませんでした。すべてのインデックスは innodb ストレージ エンジンによって置き換えられます (これについてはよく理解していませんが、メモリをより有効に活用するための考慮事項であることだけは理解しています)



アプリケーション サーバーの障害: nginx には独自の機能が付属しています。


写真のトラフィックは大きなコストになっています。天津コンピューター室に移行する方が安いからです。キャビネットは比較的安価で、すべてのデータ マイニング データと画像データをそこに移動できます。

北京と天津に2つのコンピュータールーム。それぞれが mysql のマスター/スレーブ構造を構築します。



検索: 以前は mysql の全文インデックスを使用していました。その後、sphinxを使うように移行され(これはmysqlのストレージエンジンとしてmysqlと組み合わせて使われていました)、その後xapinになりました

なぜsphinxを使わなかったのでしょうか?詳しい説明はありません


MogileFS を使用して画像を保存し、その後開発された doubanfs ストレージを使用します。移行の理由: Mogilefs にはパフォーマンスのボトルネックがあります。mogilefs はメタデータ (名前空間およびファイルの場所) を mysql に保存するため、データベースの行数が増加するにつれて速度が低下します。多数の小さなファイルをデータベースから読み取る必要があるため、速度にも影響します。当時の行数は非常に急速に増加しており、当時のボトルネックは mysql データベースでした。



大きなフィールドはデータベースのパフォーマンスに影響します。実際、データテーブルの行数はそれほど多くありません。それは広大なフィールドの影響です。大きなテキストフィールドは削除され、私が開発したdoubanDBに保存されます(Amazonのdymamoを参考にして簡略化されたキーバリューデータベースです)。基盤となるストレージは tokyocabinet に基づいています。その後、doubanfs が doubandb に基づいて書き換えられ、画像を保存するために実装されました。


デュアルマスターソリューションを使用してください。これにより、書き込みと読み取りの両方が同じマスターに対して行われ、読み取られたデータが最新であるため、レプリケーション遅延の問題が解決されます。以前は、マスターから書き込んでからスレーブから読み取ると、lvs のデプロイでデータ遅延が発生しました。

以前はメッセージキューとしてspreadを使用していましたが、その後代わりにrabbitMQを使用しました


============================= ==== =======================


要約: そのアーキテクチャと技術的ソリューションをコピーすることは現実的ではありません。彼の間違いとその背後にある設計思想から学ぶことによってのみ、私たちは本質を学ぶことができます(主に、なぜそのようになっているのか、そしてそれがどのような考慮事項に基づいているのかを理解することができます)。

レッスン: ディスクの選択とコンピューター室の選択。回転速度の速いディスクを選択すると、初期コストが高くなります。


サブライブラリは、まず機能的な観点から領域を分割します。まだ水平分割を行う必要はありません。関数関連のテーブルをライブラリまたは別のサーバーに配置するために必要な段階です。

マシンがメモリを過剰に消費することはありませんが、一般的なメモリがボトルネックになることがよくあります (多数の接続と計算データがメモリ不足につながる可能性があります)。 Memcached は安くありません (ネットワーク i/0、CPU を消費します)。 memcached に何を入れるか注意してください。

データベースの結合操作を避ける (これは、以前 Shi Zhan が共有した観点と似ています。結合操作を減らし、データの複数の取得に分割することを好みます。Facebook のアーキテクチャでは、JOIN 操作を行わないことにも言及しています)



全体的な印象としては、Douban から学んだデータベース体験はサブデータベースに関するものであると言えます。訪問レベルは水平方向に分割する必要はなく、データベースに分割したり、ビジネス機能に応じて分割したりできます。ビジネス関数モジュールに関連するテーブルは同じライブラリに分割されます。次に、データベース サーバー上でマスターとスレーブの同期を実行して、データのホット バックアップを維持します。

業界におけるシャーディングのアプリケーションシナリオは、基本的に読み取りアプリケーションが比較的重く、トランザクションのセキュリティ要件が高くない状況です。

sata*3 を確認したところ、450G は 1 つあたり 1,000 元以上かかります。

SATAハードドライブは故障率が比較的高いため、SCSIハードドライブに交換しました。

画像ストレージまたは小さなファイルストレージの場合、大容量(トラフィックコスト、ストレージコスト)のため、独自のファイルシステムを開発しました

画像ストレージがストレージにデータベースに依存している場合、データ量が大きい場合、確かにボトルネックになるでしょう(タオバオの画像ファイルシステムが画像の保存ファイル名にメタデータの一部を隠すのも不思議ではありません)


質問: 北京と天津はコンピュータルームを越えて、両側のmysql、またはデータマイニングプログラム間でデータを同期します。天津から北京へ データ書き込みの速度はどれくらいですか?

情報を確認したところ、一般に専用の光ファイバーネットワークチャネルの使用が必要であることがわかりました。





http://www.bkjia.com/PHPjc/626607.html

www.bkjia.com

http://www.bkjia.com/PHPjc/626607.html技術記事重要な点は次のとおりです。 現在、PC サーバーは 23 台あり、1 日の pv 数は約 20,000 です。登録ユーザー数は300万人。 テーブル内のほとんどのデータには数千万行があります。 5人からなるアルゴリズムチーム。さらに、開発者は常に...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Xiaohonshu アカウントを使用してユーザーを見つけるにはどうすればよいですか?私の携帯電話番号を見つけることはできますか? Xiaohonshu アカウントを使用してユーザーを見つけるにはどうすればよいですか?私の携帯電話番号を見つけることはできますか? Mar 22, 2024 am 08:40 AM

ソーシャルメディアの急速な発展に伴い、Xiaohongshuは最も人気のあるソーシャルプラットフォームの1つになりました。ユーザーは、Xiaohongshu アカウントを作成して自分の個人情報を示し、他のユーザーと通信し、対話することができます。ユーザーの小紅樹番号を見つける必要がある場合は、次の簡単な手順に従ってください。 1. Xiaohonshu アカウントを使用してユーザーを見つけるにはどうすればよいですか? 1. 小紅書アプリを開き、右下隅の「検出」ボタンをクリックして、「メモ」オプションを選択します。 2. ノート一覧で、探したいユーザーが投稿したノートを見つけます。クリックしてノートの詳細ページに入ります。 3. ノートの詳細ページで、ユーザーのアバターの下にある「フォロー」ボタンをクリックして、ユーザーの個人ホームページに入ります。 4. ユーザーの個人ホームページの右上隅にある三点ボタンをクリックし、「個人情報」を選択します。

小紅書に複数のアカウントを登録するにはどうすればよいですか?複数のアカウントを登録するとバレてしまうのでしょうか? 小紅書に複数のアカウントを登録するにはどうすればよいですか?複数のアカウントを登録するとバレてしまうのでしょうか? Mar 25, 2024 am 09:41 AM

ソーシャルネットワーキングと電子商取引を統合したプラットフォームとして、Xiaohongshu にはますます多くのユーザーが参加しています。ユーザーの中には、Xiaohongshu とのやり取りをより良くするために複数のアカウントを登録したいと考えている人もいます。では、小紅書に複数のアカウントを登録するにはどうすればよいでしょうか? 1.小紅書に複数のアカウントを登録するにはどうすればよいですか? 1. 別の携帯電話番号を使用して登録する 現在、Xiaohongshu は主に携帯電話番号を使用してアカウントを登録します。ユーザーは複数の携帯電話番号カードを購入し、それを使用して複数の小紅書アカウントを登録しようとすることがあります。ただし、複数の携帯電話番号カードを購入するのは面倒でコストがかかるため、このアプローチにはいくつかの制限があります。 2. 電子メールを使用して登録する 携帯電話番号に加えて、電子メールを使用して小紅書アカウントを登録することもできます。ユーザーは複数のメールアドレスを用意し、それらのメールアドレスを使用してアカウントを登録できます。しかし

小紅書アカウントを登録するにはどうすればよいですか?小紅書アカウントを登録するには何が必要ですか? 小紅書アカウントを登録するにはどうすればよいですか?小紅書アカウントを登録するには何が必要ですか? Mar 22, 2024 am 10:16 AM

小紅書は、生活、エンターテイメント、ショッピング、共有を統合したソーシャル プラットフォームであり、多くの若者の日常生活に欠かせないものとなっています。では、Xiaohongshu アカウントを登録するにはどうすればよいでしょうか? 1.小紅書アカウントを登録するにはどうすればよいですか? 1. 小紅書公式ウェブサイトを開くか、小紅書アプリをダウンロードします。下の「登録」ボタンをクリックすると、さまざまな登録方法を選択できます。現在、Xiaohongshu は、携帯電話番号、電子メール アドレス、サードパーティ アカウント (WeChat、QQ、Weibo など) による登録をサポートしています。 3. 関連情報を入力します。選択した登録方法に応じて、対応する携帯電話番号、電子メール アドレス、またはサードパーティのアカウント情報を入力します。 4. パスワードを設定します。アカウントを安全に保つために強力なパスワードを設定してください。 5. 検証を完了します。プロンプトに従って、携帯電話認証または電子メール認証を完了します。 6. 個人を完璧にする

スーパーユーザーとして Ubuntu にログインします スーパーユーザーとして Ubuntu にログインします Mar 20, 2024 am 10:55 AM

Ubuntu システムでは、通常、root ユーザーは無効になっています。 root ユーザーをアクティブにするには、passwd コマンドを使用してパスワードを設定し、su-コマンドを使用して root としてログインします。 root ユーザーは、無制限のシステム管理権限を持つユーザーです。彼は、ファイルへのアクセスと変更、ユーザー管理、ソフトウェアのインストールと削除、およびシステム構成の変更を行う権限を持っています。 root ユーザーと一般ユーザーの間には明らかな違いがあり、root ユーザーはシステム内で最高の権限とより広範な制御権限を持ちます。 root ユーザーは、一般のユーザーでは実行できない重要なシステム コマンドを実行したり、システム ファイルを編集したりできます。このガイドでは、Ubuntu の root ユーザー、root としてログインする方法、および通常のユーザーとの違いについて説明します。知らせ

小紅書アカウントを登録するにはどうすればよいですか?アカウントが異常な場合はどうやって回復しますか? 小紅書アカウントを登録するにはどうすればよいですか?アカウントが異常な場合はどうやって回復しますか? Mar 21, 2024 pm 04:57 PM

Xiaohongshu は、世界で最も人気のあるライフスタイル共有プラットフォームの 1 つとして、多くのユーザーを魅了しています。では、Xiaohongshu アカウントを登録するにはどうすればよいでしょうか?この記事では、Xiaohongshuアカウントの登録プロセスを詳しく紹介し、Xiaohongshuアカウントの異常を回復する方法の質問に答えます。 1.小紅書アカウントを登録するにはどうすればよいですか? 1. 小紅書 APP をダウンロードします。モバイル アプリ ストアで小紅書 APP を検索してダウンロードし、インストールが完了したら開きます。 2. アカウントの登録:Xiaohongshu APPを開いた後、ホームページの右下隅にある「Me」ボタンをクリックし、「登録」を選択します。 3. 登録情報を入力します。画面の指示に従って、携帯電話番号、設定パスワード、確認コード、その他の登録情報を入力します。 4. 個人情報の入力: 登録が成功したら、プロンプトに従って名前、性別、誕生日などの個人情報を入力します。 5. 設定

qooappアカウントの登録方法 qooappアカウントの登録方法 Mar 19, 2024 pm 08:58 PM

qooapp は多くのゲームをダウンロードできるソフトウェアですが、アカウントを登録するにはどうすればよいですか? ユーザーがまだパスを持っていない場合は、「登録」ボタンをクリックし、登録方法を選択する必要があります。操作方法はこのアカウント登録方法の紹介だけで十分ですが、以下で詳しく紹介しますので、ぜひご覧ください。 qooapp アカウントの登録方法? 回答: クリックして登録し、登録方法を選択してください. 具体的な方法: 1. ログイン インターフェースに入った後、以下をクリックしてください. まだパスをお持ちでない場合は、今すぐお申し込みください。 2. 次に、必要なログイン方法を選択します。 3. その後すぐに使用できます。公式 Web サイトの登録: 1. Web サイト https://apps.ppaooq.com/ を開き、右上隅をクリックして登録します。 2. 登録を選択

NetEase Cloud Music を WeChat Moments に共有する方法_NetEase Cloud Music を WeChat Moments に共有するチュートリアル NetEase Cloud Music を WeChat Moments に共有する方法_NetEase Cloud Music を WeChat Moments に共有するチュートリアル Mar 25, 2024 am 11:41 AM

1. まず、NetEase Cloud Music に入り、ソフトウェアのホームページ インターフェイスをクリックして、曲の再生インターフェイスに入ります。 2. 次に、曲の再生インターフェイスで、下の図の赤いボックスに示すように、右上隅にある共有機能ボタンを見つけて、クリックして共有チャンネルを選択し、共有チャンネルで「共有先」オプションをクリックします。下部にある [WeChat Moments] を選択すると、コンテンツを WeChat Moments に共有できます。

Spring Data JPA のアーキテクチャと動作原理は何ですか? Spring Data JPA のアーキテクチャと動作原理は何ですか? Apr 17, 2024 pm 02:48 PM

SpringDataJPA は JPA アーキテクチャに基づいており、マッピング、ORM、トランザクション管理を通じてデータベースと対話します。そのリポジトリは CRUD 操作を提供し、派生クエリによりデータベース アクセスが簡素化されます。さらに、遅延読み込みを使用して必要な場合にのみデータを取得するため、パフォーマンスが向上します。

See all articles