記一次”高可用“分佈式服務環境搭建

背景

前不久開發了一款文檔相關的服務,服務設計文檔的生成以及顯示,上線一段時間後,有人居然反映處理能力達不到他們的要求!!根據我們的測試結果,滿足50人同時使用是沒有問題的,客戶就是上帝,趕緊提升服務能力。

方案構思

如何提高生成能力以及如何實現高可用的生成與展示是個問題!首先對現有的過程進行分析。

現有的流程分析

文檔的生成流程:

  • 用戶在B端上傳指定的材料
  • S段處理請求,把結果save 到server本地
  • B端發送展示請求,S端把相關材料返回到B
    簡單的流程如下圖所示:
    在這裏插入圖片描述
    用戶說服務能力不夠,也就是說有很多的用戶在同一時間發送轉化請求,我的server處理不過來了。我需要做的是增加服務節點,讓多個server 處理請求,這就是需要分佈式的方法。但是這樣會存在一個問題
  • 爲了展示的時候能夠快速響應,我把數據存在了server本地,分佈式方法如何保證我可以從生成文件的地方訪問生成的文件?
  • 如果一臺生成的機器掛了,還可以訪問到它生成的文件嗎?
  • 如何做到高可用,有一臺活着就能提供正常服務
方案

整體的方案:
啓動多個server ,採用負載均衡方式連接這些服務,掛一個統一數據庫

  • 微服務方案
  • nginx 方案
    客戶的緊急需求決定了我只能採取nginx 方案,代碼修改少,交付快。整體的結構圖如下所示:
    在這裏插入圖片描述
    客戶端通過代理訪問對服務進行輪詢,服務轉完後把數據在統一數據庫中進行備份,如果訪問的時候,會加上服務的id 號碼,如果在顯示的時候健康檢測沒通過,則會把請求轉發到其他服務,其他服務如果沒有這個文件,則會從統一數據庫中拉去,這樣的話就基本做到了高可用,數據庫的方式也是採用了集羣部署的對象存儲。實現起來也比較快
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章