問題背景:網聯項目,兩臺服務器,F5負債均衡。每次生產上線,總會造成一兩筆交易超時。
操作過程:週四7點,增量上線響應代碼,編譯,停止其中一臺,馬上重啓。(停止重啓的操作,大概2到3秒)另一臺服務器同樣如此
問題記錄:每次生產上線。總會造成一兩筆交易超時。
問題分析:當我停止其中一臺服務器時,F5,就不會將新的交易請求發到已停止的服務器來。可是爲什麼會有超時的交易。是因爲,我在停止的過程中,還有正在處理的請求嘛。(系統qps不高,平常一秒大概兩三個請求)
問題備註:如果加上隊列服務器,是否能解決。問題先放這兒,還在思考
後續思考:
網聯對同步性要求很高,所有請求都是同步的。所以如果加上隊列,響應時間會延長。
後續問題結果及解決方案:
通過了解。F5的策略是,基於端口監測。並且發現端口不能使用,到切換路由,間隔爲5秒。
生產上線,只會關閉進程,不會關閉端口。目前系統qps,大概兩三筆。所有單臺服務器收不到請求,導致網聯繫統那邊超時,是正常的現象。如果要解決的話,F5那邊,可以更改策略爲,基於進程監測。通過請求響應報文的方式,判斷系統,是否正常使用。
後後續思考:
之前的想法有點問題,和同事討論。又查了些資料。瞭解到,每個端口都有對應的服務,端口不是獨立存在的,他是依附於進程的。所以,F5策略是沒有問題,只是間隔時間太長
2019-07-18 補充
書上看到一個能完美出現這樣問題的解決方案--版本管理
通過分佈式框架,服務提供者先升級接口發佈新版本的服務,並同時提供舊版本的服務供請求者調用,當請求者調用接口升級後,再關閉舊版本服務(摘自 大型網站技術架構)