简体中文
Turms は、世界中の 10 万~1,000 万人の同時ユーザーを対象とした、最も先進的なオープンソース インスタント メッセージング エンジンです。詳細については、Turms のドキュメントを参照してください。
(デモサーバーのバージョン: ghcr.io/turms-im/turms-admin:latest
、 ghcr.io/turms-im/turms-gateway:latest
-im/turms-gateway:latest 、 ghcr.io/turms-im/turms-service:latest
/turms-im/turms-service:latest )
turms-admin: http://playground.turms.im:6510
アカウントとパスワードは両方ともguest
です。 (アカウントはデータのクエリと追加を許可されていますが、データの更新と削除は許可されていません。)
turms-gateway: http://playground.turms.im:10510 (WebSocket アクセス用のポート) および http://playground.turms.im:11510 (TCP アクセス用のポート)
turms-service (偽のデータがサポートされている開発環境の管理 API): http://playground.turms.im:8510
プロメテウス: http://playground.turms.im:9090;グラファナ: http://playground.turms.im:3000
任意の turms-client-(java/js/swift) 実装を使用して、turms-gateway にリクエストを送信し、他のユーザーと対話することができます。
さらに、Playground は 1 つのコマンドだけで自動的にセットアップされます: ENV=dev,demo docker compose -f docker-compose.standalone.yml --profile monitoring up --force-recreate -d
次のコマンドを実行して、実行可能な最小限のクラスター (turms-gateway、turms-service、turms-admin を含む) とその依存サーバー (MongoDB シャード クラスターと Redis) を自動的にセットアップします。
git clone --depth 1 https://github.com/turms-im/turms.git
cd turms
docker plugin install grafana/loki-docker-driver:latest --alias loki --grant-all-permissions
docker compose -f docker-compose.standalone.yml up --force-recreate
クラスターがセットアップされたら、http://localhost:6510 で turms-admin にアクセスし、アカウントとパスワード (デフォルトではturms
) を入力します。ログインに成功すると、Turms のクラスターが正常にセットアップされたことになります。
また、Turms が提供する Terraform モジュールを適用して、クラウド サービスをすぐに購入し、Turms クラスターをセットアップすることもできます (デフォルトではスポット インスタンスを使用します)。 terraform apply
を実行した後、約 3 ~ 15 分待ってから (Alibaba Cloud ECS は ghcr イメージのプルに時間がかかります)、 http://<public IP>:6510
にアクセスします。turms-admin にアクセスできる場合は、 turms クラスターは正常にセットアップされました。
(注: 次のコマンドにより、クラウド サービスが自動的に購入され、対応する料金がアカウントから差し引かれます)
git clone --depth 1 https://github.com/turms-im/turms.git
cd turms/terraform/alicloud/playground
export ALICLOUD_ACCESS_KEY= < your_access_key >
export ALICLOUD_SECRET_KEY= < your_secret_key >
terraform init
terraform apply
Turms のアーキテクチャは、受信トレイ (またはメッセージ タイムライン) を作成するためのファンアウト読み取り設計に依存しており、Turms はビジネス データの変更を認識するためにプッシュ モデル、プル モデル、およびプッシュプル モデルをサポートしています (詳細については、ビジネス データ変更認識を参照) )。他の設計詳細のほとんども商用 IM プロジェクトから来ています。
また、時代遅れのテクノロジー スタックを使用した多くのプロジェクトと比較して、Turms は、最新のアーキテクチャと最新のテクノロジーに基づいており、中規模から大規模のアプリケーションに適した唯一のオープンソース IM ソリューションでもあります。
さらに、アーキテクチャ設計はトレードオフの技術です。一部の IM 製品は、中規模から大規模のアプリケーションをサポートしない代わりに、豊富な機能をスローガンにしています (チームのコミュニケーションにのみ適しています)。ただし、Turms は最高のパフォーマンスを最優先にしており、中規模および大規模なアプリケーションをサポートするために (豊富ではなく) 完全な IM 機能をサポートしています。詳細については、「Turms スキーマの設計と可観測性」を参照してください。
Turms と他のオープン ソース IM プロジェクトの機能を比較する必要がある場合は、まず、Turms の次の機能に基づいて、Turms を他のオープン ソース IM プロジェクトと比較できます。通常、プロの IM プロジェクトとアマチュアの IM プロジェクトの違いを見つけることができます。さらに、 Product Comparison
の章では、参考までに Turms プロジェクトの欠点についても言及しました。
注: 現在の Turms プロジェクトの主な欠点は、リビング/チャット ルームのサポートが提供されていないことです。リビング/チャット ルームの技術的な実装は難しくありませんが、製品要件、品質属性要件、制限条件が一般的なソーシャル アプリケーションのシナリオとは大きく異なるため、Turms の最初のバージョンではサポートが提供されていません。さらに、Turms は小規模企業の通信シナリオにも適していません。エンタープライズ コミュニケーション シナリオに Turms を使用することは、ナットを割るために大ハンマーを使用することと同じです。エンタープライズ コミュニケーションでは、極端なパフォーマンスよりも豊富な機能が重視され、これは Turms の目標と矛盾するため、設計も異なります。エンタープライズ通信シナリオをサポートしたい場合は、Turms に基づいて自分で開発する必要があります。
可観測システム (詳細は可観測性を参照)
ログ(イベント用):Turmsでは監視ログ、業務ログ、統計ログの3種類のログを提供しています。
メトリクス (集計可能なデータの場合)。システムやビジネスデータのリアルタイムのステータスを反映します。
トレース
Turms サーバーは、可能な限り効率的に実装できる追加の監視機能を提供しますが、パフォーマンスに大きな影響を及ぼし、サードパーティのサービス (DAU など) が提供するのに適したいくつかの共通機能は提供しないことに注意してください。 。この種の拡張機能は、Turms サーバーのログやメトリクスをオフラインまたはリアルタイムで分析することで実装できます。
極端なパフォーマンス 私たちは、すべてのビジネス ワークフローの実装において、常に極端なパフォーマンスをアーカイブするよう努めています。詳細についてはソースコードを参照してください。
名前 | まとめ |
---|---|
タームズゲートウェイ | クライアントと対話し、ユーザー認証、セッション管理、プッシュ通知、turms-service サーバーの負荷分散を担当するゲートウェイ (プッシュ サーバー) |
ターンズサービス | IM ビジネス ロジックを実装し、管理者にビジネス データ管理、RBAC、クラスター管理を提供します。 |
ターンズ管理者 | ビジネスデータ管理やTurmsサーバークラスタのクラスタ管理などの機能を提供します |
turms-client-js | Turms サーバーと対話して IM 機能、基礎となるドライバー ロジック (ハートビートなど) を実装し、タブ間の WebSocket 接続を共有するための API を公開します。開発者にとって透過的であるため、その実装を知る必要はありません |
ターンクライアントKotlin | Turms サーバーと対話して IM 機能と基礎となるドライバー ロジック (ハートビートなど) を実装するための API を公開します。開発者にとって透過的であるため、その実装を知る必要はありません |
クライアントを迅速に変える | 同上 |
ターンクライアントダーツ | 同上 |
ターンズプラグイン | イベント (ユーザーのオンライン/オフライン化、メッセージの受信と転送など) が発生すると、turms-gateway と turms-service が対応するカスタム プラグインをトリガーして、開発者がカスタム機能を実装しやすくします。 |
turms-プラグイン-アンチスパム | 二重配列トライを持つ Aho-Corasick オートマトンを使用したスパム対策保護のための turms-plugin に基づくプラグイン (検出の時間計算量は O(n)、n はターゲット文字列コード ポイントの長さ) |
turms-プラグイン-minio | ストレージ サービス用の turms-plugin に基づくプラグインで、MinIO サーバーとの対話に使用されます。 |
turms-プラグイン-rasa | チャットボット用の turms-plugin に基づくプラグインで、Rasa サーバーとの対話に使用されます。 |
ターンデータ (TODO) | まだ公開されていません。 Flink エコシステムに基づく独立したデータ分析システムがビジネス データ分析を担当し、管理者向けの turms の統計 API と turms-admin の運用レポートの基礎となるデータ サポートを提供します。 |
Turms のアーキテクチャ設計は、商用インスタント メッセージング アーキテクチャから派生しています。次の図は、Turms のリファレンス アーキテクチャを示しています。点線枠のサービスはオプションサービス、実線枠のサービスは必須サービスです。詳細については、Turms アーキテクチャ設計を参照してください。
世界中にはオープン ソース IM プロジェクトが数多くありますが、中規模および大規模な IM アプリケーション シナリオ向けに設計されたオープン ソース IM プロジェクトは 1 つだけです。Turms です。
ロケットチャット | クローズドソースのIMクラウド | トゥルムス | |
---|---|---|---|
アプリケーションシナリオ | チームコミュニケーション | 一般的な IM シナリオ | 一般的な中~大規模IMシナリオ(Turmsの再開発を可能にする) (注: Turms の最初のバージョンはリビング/チャット ルームをサポートしていません) |
利点 | 1. マウスをクリックするだけでクラスタを起動し、サービスを提供するクラウドサービスを提供します 2. クライアントの実装はクロスプラットフォームであり、ユーザーはすぐに使用できます 3. 完全で統合された UI スイートをサポートする 4. 音声およびビデオ会議、ファイル共有、画面共有など、豊富で高度なインスタント メッセージング機能をサポートします。 5. 商用ユーザーに技術サポートを提供する | 1. マウスをクリックするだけでクラスタを起動し、サービスを提供するクラウドサービスを提供します 2. クライアントの実装はクロスプラットフォームであり、ユーザーはすぐに使用できます 3. 完全で統合された UI スイートをサポートする 4. 音声およびビデオ会議、ファイル共有、画面共有など、豊富で高度なインスタント メッセージング機能をサポートします。 5. 商用ユーザーに技術サポートを提供する | 利点は上記の機能です |
短所 | 1. 小規模なアプリケーションにのみ適しています 2. 適用シナリオが狭く、カスタマイズが難しい | 1. クローズドソースなのでカスタマイズできません。どのようなプロジェクトでも、ビジネスの成長後には必然的に新しいビジネス要件が発生し、カスタマイズする必要があります。ただし、IM クラウドはカスタマイズされたサービスを提供していないか、高額なカスタマイズ料金が必要なため、お客様の要件を誤解して、カスタマイズされた機能がビジネス ニーズに十分に対応できない可能性があります。彼らとうまくやっていくには長期的な協力が必要だ。 しかし、Turms に基づいて、要件を迅速に実装して提供することができ、コストも低くなります。 注: IM の複雑さの詳細については、「スキーマ設計」を参照してください。 2. データプライバシー。すべてのユーザー情報とメッセージ データは IM クラウドに保存され、データを覗き見したり使用したりする可能性があります。 特に一部の小規模な IM 会社では、データのセキュリティがまったく保証されておらず、回復不能なデータ損失のリスクさえ負わなければなりません。 3. IM クラウドを使えば使うほど、その依存度は高くなり、料金も高くなります。ほとんどの IM クラウドには、一定の無料割り当てや試用期間が設けられていますが、製品のユーザー規模が拡大した後、独自の IM サーバーの開発を開始するには、高額な使用料を支払うか、使用を断念する必要があります。 4. テクニカルサポートがタイムリーではありません。 IM クラウドは多くの顧客に同時に技術サポートを提供する必要があり、製品のサポートが遅れる可能性があります。 | 1. 一般的なインスタント メッセージングのニーズのみを満たし、一部の高度な機能は提供しません (たとえば、音声会議やビデオ会議はサポートされません)。 2. Turms の最初のバージョンはリビング/チャット ルームをサポートしていません 3. Turmsサーバーはメトリクス/ログの生データのみを提供し、分析やアラームなどの機能は提供しません。 4. Web ベースのシステム管理 turms-admin 現在高度な操作機能を提供していません。5. 特定のビジネス ロジックと UI はサポートされません 6. サーバーはリアクティブであるため、一部の開発者にとっては困難です |
コメント | チームのコミュニケーションには Rocket.Chat を使用することを強くお勧めします | 製品の IM ビジネス シナリオが非常に一般的で、カスタム要件がなく、IM ビジネスが製品の主要なビジネスではない場合は、IM クラウドを使用することをお勧めします。 ただし、特別な要件がない場合は、中小企業が提供する IM クラウドは使用しないでください。そうしないと、データのセキュリティが保証されません。 | どちらもオープンソースの IM プロジェクトですが、アプリケーション シナリオはまったく異なります。 Turms は、中規模から大規模なインスタント メッセージング アプリケーション向けの一般的なインスタント メッセージング エンジンです。 Turms をそのまま顧客に渡すことはできません (ほとんどの製品では、顧客がデータベース内のビジネス データをクエリするための SQL ステートメントを作成できないのと同じです)。 ただし、Turms に基づいて、GitHub 上のすべてのオープンソース インスタント メッセージング プロジェクトをより効率的、包括的、広範囲に実装できます。 |
Turms の位置付けを考慮し、UI と特定のビジネス ロジックを備えたクライアント デモを近い将来提供する予定はありません。
開発者は、Turms がサポートするビジネス機能を簡単に検証できます。 Turms のビジネス機能をテストしたいだけの場合は、コードを 1 行も入力せずに Turms サーバーを実行できます。わずか 10 行のコードで、ログイン、メッセージの送信、友達リクエストの送信、その他のビジネス機能を実現したり、プロパティを変更してさまざまな要件をカスタマイズしたりできます。
デモの設計と実装は、特定のビジネス シナリオ、特定のプログラミング言語、特定の技術アーキテクチャ、および特定の OS と密接に関連していますが、Turms はさまざまな複雑で困難なインスタント メッセージング シナリオに効率的に対応することに注力してきました。開発者の想像力を制限するデモを公開します。また、デモの開発と保守にも非常に時間がかかり、Turms の開発の進行が遅くなります。
現在、GPT-3.5 および GPT-4 と「チャット」するだけで、カスタムの技術ソリューションと UI デザインを実現できます。入力例としてテキストを取り上げます (さらに、GPT-4 は画像入力をサポートしており、UI のデザイン方法を提案する UI ワイヤーフレームを描画することもできます)。
Vue3、Vite、Eslint などのテクノロジーに基づいて、Web エンドで実行されるカスタマー サービス チャット ウィンドウを実装してください。特定の要件。
- UI デザイン スタイルは、Ant Design を参照する必要があります。
- チャット ウィンドウは 3 つの部分に分割する必要があります。上部にはカスタマー サービス名が表示されます。中央には、ユーザーとカスタマーサービス間のチャットメッセージが表示されます。そして下部には、ユーザーがテキストを入力してメッセージを送信できるように、テキスト入力ボックスと送信ボタンを提供する必要があります。
- チャット ウィンドウは常にページの右上隅に表示される必要があります。
- チャット ウィンドウが WebSocket プロトコルに基づいてバックエンド サーバーと通信し、ログイン、メッセージの送信、メッセージの受信などを行うことを前提とする必要があります。
- UI コンポーネント化された設計ソリューションに基づいて、プロジェクト構造とプロジェクト内のすべての特定のコード実装を指定する必要があります。
GPT は対応するコード実装をすぐに提供でき、さまざまなシナリオに基づいて GPT と「チャット」を続けて (GPT に複数のシナリオを提供して比較させることができます)、UI デザインとコード実装を調整して最終的な実装に近づけることができます。あなたのアイデアに。
Turms プロジェクトはApache License 2.0
ライセンスに基づいてライセンスされているため、ユーザーが Turms プロジェクトから利益を上げる計画があるかどうかは気にしません。ユーザーが文書、ビデオ、コードなどの著作物でApache License 2.0
ライセンスに準拠することを要求するのは、次のような Turms プロジェクトの情報に言及する場合のみです。
Original Project Name:turms-im/turms
Original Project:https://github.com/turms-im/turms
Original Project Documentation:https://turms-im.github.io/docs
Turms プロジェクトはどのように収益を上げていますか?
現時点で利益を上げる必要はありません。もちろん、利益を排除するものではありませんが、コンサルティング、研修、その他の費用を稼ぐために、意図的に悪い書類を書いたり、悪い仕事をしたりすることはありません。もう 1 つ言及しておきたいのは、意図的に悪い文書を書き、悪い仕事をすることでサービス サポート料を稼ぐ (非公開の) オープンソース プロジェクトが実際にたくさんあるということです。
研修機関や企業などの営利組織が Turms のドキュメントを引用したり、Turms プロジェクトを SaaS サービスとして販売したりする場合、これらの営利組織は何か注意する必要がありますか?
あなたのチームが Turms プロジェクトから利益を上げる計画があるかどうかは関係ありません。チームは、 Apache License 2.0
ライセンスに準拠し、前述のように Turms プロジェクト情報に言及するだけで済みます。
Turms プロジェクトは SaaS サービスの作成に適していますが、なぜ Turms プロジェクトは AGPL または SSPL ライセンスを採用しないのでしょうか?
現時点では利益を上げる必要はなく、また利益を上げる予定もありません。ユーザーにApache License 2.0
ライセンスに準拠することのみを要求します。
Turms プロジェクトが利益を生まない場合、そのプロジェクトの品質はどのようなものでしょうか?
私たちのドキュメントとソース コードがこの質問に答えてくれました。オープン ソース コミュニティでは、中規模および大規模な IM アプリケーション シナリオで Turms プロジェクトと競合できるオープンソース IM プロジェクトは存在しません。もう 1 つ言及しておきたいのは、商用プロジェクトは高品質を意味するわけではなく、多くの商用プロジェクトのドキュメントやコードの品質ですら衝撃的であるということです。
Turms は二重ライセンス契約を使用していますか? それとも隠れた料金が発生していますか?
いいえ。プロジェクトによっては、個人使用は無料ですが、二重ライセンス契約を使用して商用使用すると有料になったり、多くの隠れた料金が発生したりすることがあります。 Turms プロジェクトはApache License 2.0
ライセンスに基づいてライセンスされており、料金はかかりません。一部のプロジェクトはオープンソース ソフトウェアであると主張していますが、実際はそうではありません。詳細については、「オープンソースの定義」を参照してください。
主にIntelliJ IDEAとCLionで開発されています。
ライセンスは JetBrains コミュニティ サポート チームのご厚意により提供されました。