客戶端 ——> 任務服務器 ——> 應用服務器
任務服務器,需有兩台或兩台以上的任務服務器,心跳機制校驗。
應用服務器的負載均衡:
1.任務服務器暴露一個HTTP接口給應用服務器,當應用服務器空閑的時候就到任務服務器里取任務。
2.應用服務器可以暴露一個HTTP協議的接口給任務服務器,任務服務器使用該接口獲取應用服務器的CPU,內存,IO等負載相關量是否高,從而決定把任務分配給當前負載低的應用服務器
應用服務器可以根據業務等進行分割
應用服務器 ——> DAL層,數據庫服務器 ——> 數據庫
應用服務器 ——> Cache層,多個redis
緩存層:
1.為了減輕數據庫壓力,一些熱點數據可以存在緩存數據庫中,減少數據庫的訪問量
2.當修改數據的時候,應用服務器通過DAL層直接修改數據庫,然后DAL層會把數據同步到緩存數據庫,應用服務器只從緩存數據庫中取數據,而不會直接修改它
數據庫:
1.當讀寫操作很多的時候,數據庫分為主從數據庫,由於業務中很多時候都是讀操作比寫操作多,因此寫功能的數據庫比讀功能的數據庫要少
2.當主數據庫被改寫之后,需要對從數據進行同步,這時候可以主流數據庫的replication機制進行同步。這個機制通過日志文件來工作的
3.當數據庫大到一定程度的時候,為了改善數據庫並發,需要對數據庫進行分區
垂直分庫:按照一定的邏輯,把表分散到不同的庫中,如用戶表一個庫,業務表一個庫等等
水平分庫:把一個庫分成N個,每個庫都有其他中所有的表,數據平分
服務器性能四大殺手:
1.數據拷貝,可用緩存避免
2.環境切換,主要是線程之間的切換
3.內存分配,可用內存池改進
4.鎖競爭,盡量避免