私は現在、一緒に働いている会社の小さな社内ソーシャル メディア プラットフォームを書いています。大したことはありません。40,000 人以上のユーザー。基本的には Facebook や Google+ のようなものですが、機能はかなり少ないです。
このプラットフォームには、電子メール通知システム (オンライン ユーザー向けの Ajax 通知に加えて) もあります。
ここに私の問題があります-それは単にスケーリングしていません。
送信されるすべての電子メール通知を保持する mySQL テーブルがあります。そのため、誰かがグループで記事を書くとすぐに、システムは自動的にそのテーブルに行を挿入し、email_send 関数 (cronjob) がそれらのメールをユーザーに送信します (ユーザーは、即時、毎日、または毎週の通知メールから選択できます)。
これまでのところ、グループのメンバー数が少ない場合は問題ありません。
しかし、今では 5,000 人以上のメンバーを持つグループを想像してください。ユーザーがそのグループにストーリーを投稿するとすぐに、通知テーブルへの 5,000 の SQL 挿入がトリガーされます。
これをどのように解決しますか?新しいストーリー/コメント/ものをスキャンし、バックグラウンドで email_send 関数をトリガーするサーバー上のバックグラウンド ワーカーについて考えました。このスケールの方が良いでしょうか?それとも、これには標準的な方法があり、間違った方向に考えているだけですか?
正しい方向への任意のポイントは非常に高く評価されます, ありがとう、メリークリスマス:)
// マーカス。