簡體中文
Turms是全球最先進的開源即時通訊引擎,支援100K~10M並髮用戶。詳細資訊請參閱 Turms 文件。
(示範伺服器版本: ghcr.io/turms-im/turms-admin:latest
、 ghcr.io/turms-im/turms-gateway:latest
、 ghcr.io/turms-im/turms-service:latest
)
turms 管理員: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 只需一個指令即可自動設定: 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
叢集搭建完成後,可以存取turms-admin(http://localhost:6510),輸入帳號和密碼(預設為turms
)。如果登入成功,則表示Turms叢集已經搭建成功。
您也可以套用Tums提供的Terraform模組快速購買雲端服務並建置turms叢集(預設使用現貨實例)。運行terraform apply
後,等待約 3~15 分鐘(阿里雲 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的架構依賴於建立收件匣(或訊息時間軸)的扇出讀設計,Tums支援推送模型、拉取模型、推拉模型來感知業務資料的變化(詳情請參閱業務資料變更感知) )。大多數其他設計細節也來自商業 IM 專案。
而且比起許多技術棧過時的項目,Tums也是唯一一個基於現代架構和現代技術、適合中大型應用的開源IM解決方案。
另外,架構設計是一門權衡的藝術。有些IM產品以豐富的功能為口號,但代價是不支援中大型應用(只適合團隊通訊)。然而,Tums以極致性能為第一,支援完整(而不是豐富)的IM功能來支援中大型應用。詳細資訊請參閱 Turms 架構設計和可觀測性。
當您需要將 Turms 與其他開源 IM 專案進行功能比較時,您可以先根據 Turms 的以下功能將 Turms 與其他開源 IM 專案進行比較。通常,您可以發現專業 IM 專案和業餘 IM 專案之間的差異。另外,在Product Comparison
章節下,我們也提到了Tums專案的不足之處,供大家參考。
注意:目前 Turms 專案的主要缺點是它不提供對客廳/聊天室的支援。客廳/聊天室的技術實現並不困難,但其產品要求、品質屬性要求、限制條件與一般社交應用的場景有較大差異,因此Tums第一版並沒有提供對其的支援。另外,Tums也不太適合小型企業通訊場景。將Turms用於企業通訊場景就是拿大槌砸爛堅果,因為企業通訊強調的是功能豐富而不是極致性能,這與Tums的目標不符,所以他們的設計也不同。如果要支援企業通訊場景,就需要自己基於Tums進行開發。
可觀察系統(詳情請參閱可觀察性)
日誌(針對事件):Tums提供三種類型的日誌:監控日誌、業務日誌、統計日誌
指標(用於可聚合資料)。反映系統即時狀態和業務數據
追蹤
需要注意的是,Tums伺服器會盡可能提供更多可以高效實現的監控功能,但不會提供一些對效能影響較大、更適合第三方服務提供的常用功能(如DAU) 。對於這種擴充功能,您可以透過離線或即時分析 Turms 伺服器的日誌或指標來實現。
極致效能 我們始終努力在所有業務工作流程的實施中實現極致效能。詳細請參考原始碼。
姓名 | 概括 |
---|---|
turms網關 | 與客戶端互動的網關(推播伺服器),負責使用者驗證、會話管理、推播通知和 turms-service 伺服器的負載平衡 |
渦輪服務 | 實作IM業務邏輯,為管理者提供業務資料管理、RBAC、叢集管理 |
turms管理 | 提供Tums伺服器叢集的業務資料管理、叢集管理等功能 |
turms-客戶端-js | 公開 API 與 Turms 伺服器交互,以實現 IM 功能、底層驅動程式邏輯(例如心跳)以及在選項卡之間共用 WebSocket 連線。您不需要了解它的實現,因為它對開發人員來說是透明的 |
轉客戶端 kotlin | 公開 API 與 Turms 伺服器交互,以實現 IM 功能和底層驅動程式邏輯(例如心跳)。您不需要了解它的實現,因為它對開發人員來說是透明的 |
轉客戶端-swift | 同上 |
轉客戶端 dart | 同上 |
turms 插件 | 當事件(如用戶上線、訊息接收轉發等)觸發時,turms-gateway和turms-service會觸發對應的自訂插件,方便開發者實現自訂功能 |
turms-插件-反垃圾郵件 | 一個基於 turms-plugin 的插件,用於使用具有雙數組 trie 的 Aho-Corasick 自動機進行反垃圾郵件保護(檢測時間複雜度為 O(n),n 為目標字串碼點的長度) |
turms-插件-minio | 基於turms-plugin的儲存服務插件,用於與MinIO伺服器交互 |
turms 插件 rasa | 一個基於 turms-plugin 的聊天機器人插件,用於與 Rasa 伺服器交互 |
turms 資料 (TODO) | 尚未發布。基於Flink生態的獨立資料分析系統負責業務資料分析,為turms for admins的統計API和turms-admin的營運報表提供底層資料支持 |
Turms的架構設計源自於商業即時通訊架構。下圖展示了Tums的參考架構。虛線框出的服務是可選服務,而實線框出的服務是必需服務。詳細請參考Tums架構設計。
雖然全球有許多開源 IM 項目,但針對中大型 IM 應用場景設計的開源 IM 專案只有一個:Tums。
火箭聊天 | 閉源IM雲 | 特魯姆斯 | |
---|---|---|---|
應用場景 | 團隊溝通 | 通用 IM 場景 | 一般中大型IM場景(讓Turms可以二次開發) (註:Tums的第一個版本不提供客廳/聊天室的支援) |
優點 | 1、提供雲端服務 只需點擊滑鼠即可啟動叢集並提供服務 2. 客戶端實作是跨平台的並且對使用者來說是開箱即用的 3. 支援完整統一的UI套件 4.支援豐富的進階即時通訊功能,如音訊視訊會議、檔案分享、螢幕分享 5.為商業用戶提供技術支持 | 1、提供雲端服務 只需點擊滑鼠即可啟動叢集並提供服務 2. 客戶端實作是跨平台的並且對使用者來說是開箱即用的 3. 支援完整統一的UI套件 4.支援豐富的進階即時通訊功能,如音訊視訊會議、檔案分享、螢幕分享 5.為商業用戶提供技術支持 | 優點就是上面描述的特點 |
缺點 | 1. 只適合小規模應用 2.應用場景狹窄,客製化難度高 | 1.閉源,無法自訂。任何專案在業務成長之後,都不可避免地會產生新的業務需求,需要進行客製化。但IM雲端要么不提供客製化服務,要么需要高昂的客製化費用,可能會誤解您的需求,導致客製化的功能無法很好地滿足您的業務需求。與他們的合作需要長期的合作。 但基於Tums,你的需求可以快速實現和提供,而且成本較低。 註:IM的複雜度細節可以參考Schema Design 2. 資料隱私。您所有的使用者資訊和訊息資料都儲存在IM雲端上,IM雲端可以窺視和使用您的資料。 尤其是對於一些小型IM公司來說,資料安全根本無法獲得保障,甚至需要承擔資料遺失且無法復原的風險。 3.使用IM雲越多,依賴越多,費用也越高。大多數IM雲都會提供一定的免費額度或試用期,但當你的產品用戶規模增長後,你需要支付高昂的使用費或放棄使用,開始開發自己的IM伺服器 4、技術支援不及時。 IM雲需要同時為許多客戶提供技術支持,對您的產品的支援可能會落後 | 1.僅滿足一般即時通訊需求,不提供一些進階功能(例如不支援音訊視訊會議) 2. Turms第一版不支援客廳/聊天室 3. Turms伺服器僅提供metrics/log的原始數據,不提供分析、警報等功能 4. 基於Web的系統管理 turms-admin 目前不提供進階操作功能5.不支援特定的業務邏輯和UI 6. 伺服器是反應性的,這對一些開發人員來說是一個挑戰 |
評論 | 強烈建議使用Rocket.Chat進行團隊溝通 | 如果您的產品中的IM業務場景很常見,且沒有自訂需求,且IM業務不是您產品的主要業務,建議使用IM雲端。 但如果沒有特殊要求,盡量不要使用小公司提供的IM雲,否則你的資料安全將無法保障 | 雖然都是開源的IM項目,但它們的應用場景卻完全不同。 Turms 是一個通用的即時訊息引擎,適用於中型即時訊息應用程式。你不能把 Turms 直接交給客戶(就像大多數產品不允許客戶編寫 SQL 語句來查詢資料庫中的業務資料一樣)。 但基於Tums,你可以更有效率、更全面、更廣泛地實現GitHub上的所有開源即時通訊項目 |
考慮到 Turms 的定位,我們近期不打算提供帶有 UI 和具體業務邏輯的客戶端 demo,因為。
開發者可以輕鬆驗證Tums支援的業務功能。如果您只是想測試 Turms 的業務功能,您甚至無需鍵入一行程式碼即可運行 Turms 伺服器。只需十行程式碼就可以實現登入、傳送訊息、發送好友請求等業務功能,或修改屬性自訂各種需求。
Demo的設計和實現與具體的業務場景、具體的程式語言、具體的技術架構、具體的作業系統密切相關,而Tums一直致力於高效滿足各種複雜且具有挑戰性的即時通訊場景,我們不想發布限制開發者想像力的演示。而且開發和維護一個demo也非常耗時,會減慢Tums的開發進度。
目前,您只需要與GPT-3.5和GPT-4「聊天」即可實現客製化技術方案和UI設計。以文字作為輸入範例(另外,GPT-4支援圖像輸入,你也可以繪製UI線框來建議它想要如何設計UI)。
請基於Vue3、Vite、Eslint等技術實作一個運行在Web端的客服聊天視窗。具體要求。
- UI設計風格需要參考:Ant Design
- 聊天視窗應該分為三個部分:頂部,應顯示客戶服務名稱;中間應該顯示使用者和客服之間的聊天訊息;底部應提供文字輸入框和發送按鈕,以允許使用者輸入文字和發送訊息。
- 聊天視窗應始終顯示在頁面的右上角
- 需要假設聊天視窗是基於WebSocket協定與後端伺服器通訊進行登入、傳送訊息、接收訊息等。
- 您需要給出基於UI組件化設計方案的專案結構以及專案中所有特定的程式碼實現
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專案如何獲利?
我們目前不需要獲利。當然,我們不排除獲利,但我們不會為了賺取諮詢、培訓等費用而刻意寫不好的文件或做不好的工作。另外要提的是,確實有很多(封閉的)開源專案透過故意寫壞文件、做不好工作來賺取服務支援費。
如果營利機構,例如培訓機構或公司,引用Turms的文檔,甚至將Turms專案作為SaaS服務出售,這些營利機構需要注意什麼嗎?
我們不關心你的團隊是否計劃從 Turms 專案中獲利。您的團隊只需遵守Apache License 2.0
許可證並提及上述 Turms 專案資訊即可。
Turms專案適合做SaaS服務,那為什麼Tums專案不採用AGPL或SSPL授權呢?
我們目前不需要獲利,也不打算獲利。我們只要求使用者遵守Apache License 2.0
許可證。
如果Tums專案不獲利,那麼它的專案品質如何?
我們的文件和原始碼已經為我們解答了這個問題,並且在開源社群中,還沒有一個開源IM專案可以在中大型IM應用場景中與Tums專案競爭。另外要提的是,商業項目並不意味著高品質,甚至許多商業項目的文檔和程式碼品質都令人震驚。
Turms 是否使用雙重授權協議或有隱藏費用?
不會。 Turms 專案根據Apache License 2.0
許可證獲得許可,並且不收取任何費用。有些專案聲稱是開源軟體,但事實並非如此。詳細資訊請參閱開源定義。
主要在IntelliJ IDEA和CLion中開發。
許可證由 JetBrains 社群支援團隊友情提供。