中小企業阿里雲服務架構漫談(三)-發展期

項目發展期(100<併發<1000)

前文鏈接:

中小企業阿里雲服務架構漫談(一)

中小企業阿里雲服務架構漫談(二)

 

當業務正常上線後,隨着線上業務的成長,初期的架構到達一定的瓶頸,應用產生越來越多的訪問量、併發慢慢增加,服務器的CPU、磁盤存儲空間壓力都會隨之增加,這個時候我們就會考慮做一些服務器擴容的工作。

對於網站的入口壓力最大的問題就是併發量的負載均衡,通常的QPS的計算方式爲二八定律,這個定律適用於一般的所有的業務場景,但實際業務中會有一定出入。例如在股票行業中,每天9.30左右前後15分鐘是訪問最高點,電商類行業在爆品活動搶購,或者廣告高投入時爲最高點,而12306在春運時放票特定時間時也是最高點。

當然,如果在業務能力達到春運火車票的體量時,本文也就不再適用了。

先上系統結構圖,再進行說明吧!如下圖所示:

 

架構圖
標題

在負載部分,前文簡單提到過ssl證書綁定阿里雲SLB服務時會產生訪問低效問題,本文建議使用Nginx進行負載和反向代理的處理,對於負載服務器的要求是滿足併發要求,CPU和內存較爲重要。初期可以將負載均衡部署在主應用服務器,減少服務器成本。https是現有網站的標準配置,在前期可以使用阿里雲的免費證書,無費用增加項,如何配置證書現在網上資料較多,本文中不再敘述。

結構圖中涉及到的一些組件我將一一進行說明:

日誌服務,阿里雲的日誌服務是相當強大的,同步的方式也有很多,一般的日誌存放會習慣性放於日誌文件或者緩存當中。曾經在12年時做過一個項目,當初爲了做一個廣告數據分析系統,採用lua進行日誌收集,並存放到redis當中,再按分鐘級進行數據讀取寫入到db中,這樣對硬件資源配置非常之高,而且效率其實並不高。在Elasticsearch應用更廣之後,大家開始習慣將日誌推送到其中,一是便於保存,二是便於查詢。並可以搭配Kibana進行日誌的查詢搜索和二次分析,有興趣的可進行研究一下。但是在雲服務中更推薦使用阿里雲的日誌服務,成熟的控件,強大的分析機制,數據保存機制,其實都會比elk更加強大和穩定。並且在大數據分析上,日誌存放到OSS中後,更是可以接入MaxComputer進行二次分析。

OSS作爲日誌存放,比傳統的雲磁盤儲存在費用和訪問速度上更快,相比於一般的圖片服務器,我較爲推薦。在後期配合CDN加速上也是神器之一。

MaxCompute是一項大數據計算服務,它能提供快速、完全託管的PB級數據倉庫解決方案,使您可以經濟並高效的分析處理海量數據。這塊內容相當多,如果有興趣可以去阿里雲產品官網查詢,後面如果有時間我可以考慮出一套此類的學習教程。

在業務應用最大的壓力來源於數據庫的讀取,這也是服務壓力的主因之一,拿PHP開發語言來說,查詢mysql的瓶頸尤爲嚴重,併發數一旦過高數據量過大時,查詢效率就不能再得到保證。按二八原則,80%應用的業務的訪問集中在20%的數據上。比如淘寶買家瀏覽的商品集中在少部分成交多、評價良好的商品上;百度搜索關鍵詞集中在少部分熱門詞彙上。既然大部分的業務訪問集中在一小部分的數據上,那麼如果把這小部分數據緩存在內存中,是不是就可以減少數據庫的訪問壓力了,提升整個網站的數據訪問速度,改善數據庫的讀寫性能了呢?答案肯定是的!

網站使用緩存可以分爲兩種:緩存在應用服務器上的本地緩存和緩存在分佈式緩存服務器上的遠程緩存。本地緩存的訪問速度更快一些但是受應用服務器的內存限制,其緩存的數據量有限,而且會出現和應用程序掙用內存的現象,影響應用程序運行速度,甚至造成服務器死機。遠程分佈式緩存可以使用集羣的方式,

阿里雲Redis中其實已經包含了各種節點,主從集羣等等。這一步的升級只用將原來雲服務器中的redis進行遷移切換到阿里雲Redis中,再根據實際儲存大小進行選取配置就可以了,所以阿里雲Redis適用於遠程集羣緩存。

如果涉及本地化數據緩存其實也可以在應用服務器搭建應用服務器中搭建本地化緩存,加快緩存讀取速度,減小集羣緩存壓力。

Ps:阿里雲多節點會在使用PHP-laravel-Queue中出現問題,請注意避免,原因應該是數據同步的問題。

常見的NoSql緩存有memcache,redis等。PHP的緩存也有Cpcode等等。其它緩存可以根據實際需求開啓。

數據庫這一部分只用根據應用場景升級配置就行了,可選多節點、集羣、儲存服務器CPU和硬件,這裏就不再囉嗦。

也許有些人會問,爲什麼在初發展階段將業務結構設計得如此複雜?

項目在初始階段是最乾淨的階段,很多公司在業務後期進行架構規劃,包含數據維護,數據遷移,服務運維,後期如果進行大調整的話所要付出的代價將會非常之大。圖中所演示的內容是隻提供了一個思路,在實際應用中,只用做到應用與業務分離,組件與組件分離,功能上解耦就能大大降低後期重構或者擴展的成本。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章