web-dev-qa-db-ja.com

MySQLデータベースにメッセージを保存するリアルタイムチャットアプリを構築する

ユーザーメッセージをMySQLデータベースに保存できるリアルタイムチャットアプリの作成を考えています。これまでのところ、これらは私が持っている2つのアイデアです。

1)メッセージが送信され、データベースに保存されるAPIを作成します。メッセージがデータベースに保存された後、メッセージを受信する人にプッシュ通知が送信され、データベースからメッセージをダウンロードするスクリプトがバックグラウンドで実行されます。

2)websocketsまたはXMPPを使用してサーバーによるメッセージの送受信を許可し、サーバーに到達したときにメッセージをMySQLデータベースに保存します。

リアルタイムチャットアプリケーションの実装とスケーリングに最適な方法はどれですか。方法1はかなり良いようですが、一定のSQLトランザクションがサーバーに適しているかどうかはわかりませんが、ペイロードが多すぎる可能性があります。

編集!

したがって、さらに掘り下げてみると、WebソケットまたはHTTPでXMPPを使用して、リアルタイムチャットアプリを作成できることがわかります。私の質問は、これらのメッセージをMySQLデータベースに保存する簡単で効果的な方法は何でしょうか。

1

リアルタイムチャットアプリケーションの実装とスケーリングに最適な方法はどれですか。方法1はかなり良いようですが、一定のSQLトランザクションがサーバーに適しているかどうかはわかりませんが、ペイロードが多すぎる可能性があります。

主な要件の1つは、システムのテクノロジーをスケーラブルにすることです。

そのような場合は、Apache Kafka、Apache flume、RabbitMQなどのビッグデータプラットフォームに移行することをお勧めします。

その場合、Apache Kafkaを見て、次のようなスケーラブルなパイプラインを作成することをお勧めします。

  1. プロセスは、モバイルデバイスからSQLクエリを受信します。 (カフカプロデューサー)
  2. サーバーのグループがSQLトランザクションを実行し、モバイルデバイスに応答します。 (カフカ消費者)

Kafka APIを使用すると、このパイプラインを簡単にセットアップできます。より洗練されたものになる可能性はありますが、サービスをどのように拡張できるかについてお話ししたいと思います。

Apache Kafkaを使い始める: https://kafka.Apache.org/documentation/#gettingStarted

1
Vicente Bolea

Firebaseをご覧ください。それはあなたの問題の多くを解決します。チャットアプリケーションはすぐに使用できます。 1〜2時間でカスタマイズできます。

https://firebase.google.com/use-cases/ ---> 'アプリにチャットを追加'または https://github.com/firebase/quickstart-js /blob/master/messaging/README.md

IOSおよびAndroidのSDKもあります。

0
Tomas Dermisek