- Apache ShardingSphere權威指南
- 潘娟 張亮 (阿爾及利亞)亞幸·西·塔伊布
- 894字
- 2024-10-25 14:08:45
2.2 基于SQL的負載均衡層
當前,網絡負載均衡層已足夠成熟,能夠基于協議頭標識、加權計算和限流設置對請求進行分發和處理。然而,在數據庫行業中,依然沒有適用于SQL的負載均衡層,不能對SQL進行解析,這意味著無法滿足數據庫系統對請求分發粒度的要求。為彌補數據庫行業負載均衡層存在的缺陷,解決之道是開發出能夠理解SQL的智能SQL負載均衡器。
除了常見的負載均衡器功能(如高性能、流量治理、服務發現和高可用性),智能SQL負載均衡器還具有分析SQL和計算查詢開銷的功能。
在清楚SQL的特征和查詢到開銷后,智能SQL負載均衡器接下來采取的措施是給計算節點乃至存儲節點指定標簽。當然,可使用自定義標簽,如SELECT && $cost<3、UPDATE && $transaction=true && $cost<10和(SELECT && GROUP) || $cost>300。
智能SQL負載均衡器可將要執行的SQL同預定義的標簽相關聯,進而將請求分發給正確的計算節點或存儲節點。圖2.2展示了智能SQL負載均衡器的部署架構。

圖2.2 智能SQL負載均衡器的部署架構
在圖2.2中,中間部分是使用智能SQL負載均衡器的分布式數據庫集群架構,其中復雜的負載均衡層確保高可用性,這是通過存活(keepalived)消息和虛擬互聯網協議(virtual internet protocol,VIP)等組織和管理方法實現的。
右側部分是智能SQL負載均衡器的內核設計。通過模擬目標數據庫協議,智能SQL負載均衡器實現了負載均衡層代理,使得訪問智能SQL負載均衡器的方式與直接訪問目標數據庫(MySQL、PostgreSQL等)的方式是一致的。除了上述理解SQL的功能,節點管理部分還包含其他基本功能,如動態配置、心跳監視器、數據庫發現和負載均衡器。
左側部分是一個標簽配置示例,包含計算節點和存儲節點的用戶定義標簽。標簽存儲在智能SQL負載均衡器的注冊中心中,因此計算層和存儲層只需負責處理請求。另外,這兩層無須為負載均衡功能費心,因此預期的SQL請求返回時間相當接近將請求發送給相應計算節點或存儲節點所需的時間。這種改進解決了大規模數據庫集群中存在的痛點,具體作用如下:
● 極大地改善了系統的QoS,讓整個集群能夠更平穩地運行,并最大程度地降低了出現單節點性能消耗器的可能性;
● 以更細致的方式有效地隔離了事務計算、分析計算和其他操作,從而讓集群資源分配更為合理,用戶可方便地根據標簽描述定制節點的硬件資源。
接下來將介紹如何使用邊車模式來集成負載均衡器,以改善性能和可用性。