網站載入中

YayJun

LOADING

↖ 返回首頁
CASE 01大型遊戲文字客服系統
CASE 01主導開發

大型遊戲
文字客服派發後台

客訴分散、人力消化不及 高併發即時派案,多節點服務水平擴展。

SignalRRedis BackplaneAI 輔助客服業績統計

我的角色|主導開發後端架構設計、即時通訊與派案機制實作、AI 推薦回覆整合,並帶領團隊持續改善這套上線中的系統。

SCROLL

THE PROBLEM / 問題與情境

尖峰時段客訴湧入,單機 WebSocket 撐不住,而客服看不到誰該接。

3 款遊戲

三款遊戲、多個進線管道各有各的規則,卻共用同一套客服後台。

1 台

連線與案件狀態全在單機記憶體:加機器、重啟、部署都等於斷線重連。

輪流派

只能依在手案件數輪流,VIP、熟客、語系一律分不出來。

0 報表

誰接了多少、平均多久結案,全靠人工翻紀錄,主管無從調度人力。

THE SOLUTION / 解決方案

把連線狀態搬出應用程式,機器就能無痛加。

01 進線

統一案件模型

三個管道收斂成同一組 API 與案件模型,各平台差異只留在設定檔。

02 連線

SignalR Hub

玩家與客服雙向即時訊息,以群組推播取代逐一維護連線。

03 關鍵

狀態外部化到 Redis

連線、案件與客服負載全搬進 Redis,節點退化成可隨時汰換的無狀態程序。

04 派案

四階優先階梯

VIP、熟客、語系、最低負載逐階往下試,全數滿載才進等待佇列。

業績統計
每小時預聚合彙總成日統計自然語言查詢平均處理時長排除閒置自動結案的案件,避免玩家不回話的時間灌水。

ARCHITECTURE / 系統架構

一則訊息從進線到落地,經過哪些節點。

進線層・多款遊戲

遊戲內客服
第三方 SDK・TCP 常駐連線
官網/App 表單
HTTPS・收斂為同一案件模型
社群與監頻
關鍵字命中轉案件

接入層

API Gateway
JWT 驗證・每平台設定隔離
派案服務
四階優先階梯・見下方 Data Flow
等待佇列
VIP / 一般雙佇列・滿載回覆等待訊息
業績統計服務
讀預聚合結果・不掃原始事件

即時通訊層・可水平擴展

Hub #1
Hub #2
Hub #3

Redis Backplane

連線狀態外部化・跨節點廣播
分散式鎖・案件與客服負載計數

資料與外部服務

gRPC 資料服務
案件與訊息落地・用戶端負載平衡
MSSQL / 案件紀錄
主備 Failover
Elasticsearch / 檢索
社群互動活動資料查詢
LLM API / 回覆草稿
帶對話歷程・不直接對玩家發話

橫切機制・每個節點都跑,靠 REDIS 協調

背景排程
小時與日統計預聚合・分散式鎖確保每輪只有一台執行
連線健康檢查
以最後收包時間判定,不信 SDK 自報狀態・分級重連
集中式日誌與告警
結構化日誌・可線上調整層級・異常推播值班群組
青色=水平擴展關鍵路徑 虛線框=橫跨所有節點的橫切機制去識別化示意,非實際部署拓樸

INTERACTIVE DEMO / 互動演示

可互動

選一則玩家提問,看派案階梯停在第幾階。

01
VIP 專屬客服
02
24 小時熟客
03
語系相符
04
最低負載
05
排入等待佇列

玩家提問 / 合成資料

派案結果

待機中

從左邊選一則提問,派案階梯會由左往右逐階試,停在命中的那一階並產出回覆草稿。

本頁為去識別化整理,不含前雇主原始碼或資料;互動演示皆為前端合成資料。

TECHNOLOGY & DESIGN DECISIONS / 技術選型與設計決策

每個技術都對應一個要解的問題

ASP.NET CoreWeb API、Hub 承載與案件領域邏輯主體
SignalR玩家/客服雙向即時訊息與群組推播
RedisBackplane、案件與客服狀態外部化、分散式鎖、等待佇列、負載計數與統計預聚合
gRPC案件與訊息落地的資料服務通訊,用戶端負載平衡掛多節點
Elasticsearch社群互動活動資料查詢
LLM API帶對話歷程產生回覆草稿;統計查詢則負責解析語意與撰寫摘要,數字一律由程式算

ALTERNATIVE CONSIDERED

為何不用 Sticky Session,而選 Redis Backplane?

Sticky Session 改動最小,但連線與節點綁定:單一節點故障時該批連線一起中斷,流量也無法平均,活動日仍會壓垮同一台。改為 Redis Backplane 多付一份維運成本,換到任意節點可接手、活動前直接加機器、單節點故障不影響服務。

CHALLENGES & RESULTS / 挑戰與成果

上線後最難的不是流量,是狀態不能說謊。

挑戰 01

SDK 說連線正常,實際早已收不到封包

改以最後收包時間為準判定連線,分警告與強制重連兩級閾值,並依各遊戲流量差異各自設定,異常同步推播值班群組。

挑戰 02

多節點下客服負載計數會漂移

以 Redis 計數器為單一真相,節點記憶體僅作快取;派案前對帳、不一致就記錄,並在指派前複查上限,避免秒差造成超派。

擴展

單機常駐,重啟即斷線

加節點不中斷服務

派案

主管逐案分配

階梯自動指派,只看例外

績效檢視

人工翻紀錄估算

預聚合報表+自然語言查詢

回覆草稿

客服從零打字

AI 草稿,改動幅度可追蹤