百萬并發(fā)場景下,微服務(wù)架構(gòu)如何支撐?
百萬并發(fā)場景
微服務(wù)拆分,是高并發(fā)架構(gòu)的基石。
首先,將業(yè)務(wù)拆分為粒度適當(dāng)?shù)奈⒎?wù),盡量設(shè)計(jì)為無狀態(tài)或?qū)顟B(tài)外置。
拆分應(yīng)以業(yè)務(wù)邊界、和數(shù)據(jù)自治為依據(jù),確保單一服務(wù)職責(zé)明確、耦合度低且便于獨(dú)立擴(kuò)展。
粒度既不能過粗以致成為新的單體瓶頸,也不能過細(xì)導(dǎo)致分布式復(fù)雜性與通信開銷激增。
通常采用領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)(DDD)識(shí)別邊界上下文,結(jié)合訪問頻次、擴(kuò)展需求及團(tuán)隊(duì)組織結(jié)構(gòu)。
百萬并發(fā)場景下,微服務(wù)架構(gòu)如何支撐?-mikechen
比如:按領(lǐng)域邊界拆(DDD:Bounded Context)。
每個(gè)服務(wù)代表一個(gè)獨(dú)立業(yè)務(wù)域(訂單、庫存、支付、用戶、搜索等)。
確定服務(wù)邊界,并確保服務(wù)之間通過輕量、可靠的 API 或消息隊(duì)列進(jìn)行通信。
對(duì)外網(wǎng)關(guān)(API Gateway)做認(rèn)證、限流、灰度、熔斷。
跨服務(wù)調(diào)用用短超時(shí)、斷路器、重試(指數(shù)退避)并實(shí)現(xiàn)冪等。
數(shù)據(jù)拆分
垂直拆分(按業(yè)務(wù)/表):不同功能放不同庫(比如把日志/審計(jì)/統(tǒng)計(jì)放獨(dú)立庫)。
百萬并發(fā)場景下,微服務(wù)架構(gòu)如何支撐?-mikechen
適合:不同表之間無強(qiáng)事務(wù)、容量差異大。
水平分表(sharding):把某張大表按某個(gè)維度切分為多張表,多庫多表。
shard = hash(user_id)% N
db = dbs[shard]
table ="orders_"+(user_id % M)
db.execute("INSERT INTO "+ table +" (...) VALUES (...)")切分鍵常見:user_id、order_id、地域、時(shí)間(按月/按日)。
目錄表 + 時(shí)間分區(qū):日志、審計(jì)類按時(shí)間自動(dòng)分表/分區(qū)(MySQL partition 或分表)。
分片路由策略:范圍分片、哈希分片(一致性哈希)或復(fù)合策略(hash+range)。
服務(wù)限流
限流,防止流量超出系統(tǒng)承受閾值(令牌桶、滑動(dòng)窗口、漏桶)。
百萬并發(fā)場景下,微服務(wù)架構(gòu)如何支撐?-mikechen
常見算法:
令牌桶(Token Bucket):允許突發(fā)流量,平滑長期速率。
漏桶(Leaky Bucket):平滑輸出速率,限制峰值。
固定窗口 / 滑動(dòng)窗口(計(jì)數(shù)):簡單實(shí)現(xiàn),滑動(dòng)窗口更平滑。
分布式限流:Redis + Lua 腳本(原子操作)、Guava RateLimiter(單節(jié)點(diǎn))。
-- keys: bucket_key, timestamp_key
-- ARGV: rate, capacity, now
--返回是否允許服務(wù)熔斷
當(dāng)下游服務(wù)失敗或延遲升高時(shí),快速斷開對(duì)下游的調(diào)用,避免級(jí)聯(lián)故障并給下游恢復(fù)時(shí)間。
百萬并發(fā)場景下,微服務(wù)架構(gòu)如何支撐?-mikechen
常見實(shí)現(xiàn)(Hystrix/Resilience4j/Sentinel)
狀態(tài)機(jī):CLOSED(open calls), OPEN(tripped, short-circuit), HALF-OPEN(testing).
觸發(fā)條件:失敗率閾值(例如 50%)且最小請求數(shù)(例如 20 請求/窗口)或延遲閾值。
恢復(fù)策略:等待時(shí)間后進(jìn)入 HALF-OPEN,允許少量探測請求,成功則關(guān)閉。
服務(wù)降級(jí)
某些功能依賴不可用或延遲高時(shí),提供降級(jí)結(jié)果(簡化功能、緩存數(shù)據(jù)或友好提示),保證系統(tǒng)核心可用。

常見降級(jí)策略
功能降級(jí):關(guān)閉非關(guān)鍵功能(推薦/個(gè)性化、統(tǒng)計(jì)、日志寫入等)。
數(shù)據(jù)降級(jí):返回緩存數(shù)據(jù)或舊數(shù)據(jù)(接受最終一致性)。
響應(yīng)降級(jí):返回默認(rèn)值/簡化頁面或“服務(wù)暫不可用”的友好提示。
限速降級(jí):對(duì)低優(yōu)先級(jí)用戶限流或延遲處理。
比如:訂單查詢遇到庫存服務(wù)不可用:返回緩存訂單狀態(tài) + 顯示“庫存處理中”提示,而不是拋 500。































