如何實現服務動態擴容
阿新 • • 發佈:2022-03-11
擴容的含義
該擴容針對的是服務,通常情況下,隨著業務的發展,使用者數量的增加,原本的服務,受限於硬體基礎有限,無法滿足增加的使用者請求,或者受限與軟體能力,需要重新程式設計或修改資料結構,以便擴大服務的支撐能力。
例如,原本的單機應用受限於單機的網路頻寬,磁碟IO,所能夠支撐的使用者量是有限的,當響應速度慢到一定程度時,就需要對服務進行擴容,擴大頻寬也好,增加磁碟IO也好。又比如,原本的使用者資料使用mysql單表儲存,當用戶量達到一定程度,單表讀取
擴容的難點
擴容的難點在於擴容的便捷性與服務能否宕機與宕機時間,能否做到很方便的從服務支撐100使用者擴容到服務支援1000使用者甚至1萬用戶,擴容的成本,擴容操作所耗費的整體時間,以及擴容時是否可以保證服務的可用性。
常見的服務擴容方法
nginx服務分發
nginx是一個高效能的HTTP web伺服器,同時也是一個反向代理伺服器,通過配置nginx可以實現將API請求按照指定規則分發到多型伺服器上,我們可以通過nginx的配置檔案來很簡單的實現單機專案多伺服器部署。
upstream my_server {
server ip1 weight=12;
server ip2 weight=15;
}
微服務化
另外,目前比較火熱的開發方式,微服務,天然的支援服務多部署,通過服務註冊中心註冊服務,可以簡單的實現將服務分發到指定的服務上,這方面的資料可以檢索SpringCloud,重點關注其中的服務發現Eureka,Zookeeper,通過註冊同一個服務,可以實現服務分發。
上雲服務
換句話說,將擴容的任務交付出去,購買彈性雲端計算伺服器,彈性資料庫服務等等。例如資料庫成為瓶頸了就擴容雲資料庫,當然這是針對不差錢的企業來說的,對技術人員也沒什麼要求。但是我相信這會是未來的普遍趨勢。
分庫分表
針對資料庫擴容來說,如果是個人服務,而又收到資金等等限制,當資料庫達到瓶頸時,需要考慮做分庫分表來拆分資料庫壓力。