傳統idc跟雲服務的關係
傳統idc作為網際網路的基礎平台為其服務了幾十年,可是對idc的使用從來沒有像今天這樣使用了網際網路思維。雲時代,服務商賣給企業的不只是場地,機櫃,電。。還有一整套採用網際網路思維來使用它們的解決方案,所以通常我們會覺得雲服務「哪兒哪兒都要花錢「,所以有實力的公司會搞「私有雲「。
混合it架構的尷尬地位
隨著雲服務的逐漸完善,如果我要做乙個產品,必然會去選擇雲服務提供商,因此也就不會有混合it架構這個概念了,因為這個概念通常存在於使用傳統 idc的公司向雲服務過度的乙個中間狀態。也對運維部門是乙個極大的考驗,因為要在乙個新的環境建立產品執行環境,還要保障產品速度,各種轉換率不會因此降低。
資料一致性
混合架構有兩種方式,一種是備份機房,機主機房出現比較大的故障,可以將流量切至備用機房,一種則是雙活,即兩個機房同時為使用者提供服務。無論是哪種方案,都需要兩個機房之間的網路延遲在可以接受的範圍內,一般通過專有光纖來解決,雲服務商通常會提供這種專有光纖的接入(比如aws的direct connect服務)來打通實體機房與雲服務的網路環境,我們可以利用它來做到資料的同步。
有了良好的網路環境,如何實現資料同步同樣是一件及其困難的事情,比如資料庫,就需要使用者寫資料的時候往兩個機房各寫乙份,比較普遍的做法是採用訊息佇列,將使用者寫的資料先排進佇列,然後在開啟兩個佇列對不同機房的資料庫進行寫操作。 另外是快取,如果使用者訪問新的機房,由於新的機房沒有快取,則會出現新的機房資料庫被打爆的風險,比較簡單的做法是通過在請求包設定cookie用以標記是否是老使用者然後負載均衡層判斷,含有次cookie的**至老機房,沒有此cookie的新使用者則**至新機房,然後再將老使用者按照逐漸遞增的方式將流量遷移至新機房,直到新機房快取完全建立。
做到敏捷
使用雲服務的一大優勢便是資源到位速度快,一般情況下,我們可認為雲的資源時無限大的(如需求特別的,需要跟雲服務商單獨談),許多的雲服務商(比如aws)都會給使用者提供api介面用於開啟資源,並配合cloud-int服務實現資源的初始化,比如我們可以通過指令碼的方式呼叫api快速開啟一台 webserver,一台memcache,一台mysql,並使他們處於不同的集群以及不同的監控組中。
盡可能多的使用服務
雲服務商提供的服務不僅僅有虛擬伺服器,也會提供諸如負載均衡,分布式儲存,cache,訊息佇列等其他的公共服務,將他們恰當的運用到自己的專案中是很有必要的,因為你將在短期內不用擔心他們的擴容問題,比如可以使用aws的elb作為負載均衡器對外提供服務,使用s3儲存靜態資源以及log檔案 (有個叫s3fuse的專案可以實現將s3作為檔案系統掛載到伺服器上,可以向訪問本地檔案一樣訪問s3上的檔案)。
監控一切
在企業架構還處於混合架構的狀態中,我們要對產品的效能做兩套監控系統,另外乙個用來專門監控處在雲服務上的產品的效能資料,包括效能指標以及業務指標。我們可以通過在前端分流層對流向idc以及雲服務的流量打上cookie或者標記etag,然後再log分析的時候便可以出兩套資料,用於對比,隨時對雲服務進行優化或者技術決策,可以採用grafana做成類似如下的圖示用來實時觀測資料。
CSS 最佳實踐 套路(十) 混合篇
本文章主要就是將之前幾篇文章中沒有提到的,但是個人認為比較重要的 css 的最佳實踐和套路 水平居中 垂直居中 定位居中法 彈出層或者 loading 定位居中 123456 position absolute 此種方法需要配合定寬定高 top 0 bottom 0 left 0 right 0 m...
最佳實踐 Flutter 最佳實踐
最佳實踐是乙個領域可以接受的專業標準,對於任何程式語言來說,提高 質量 可讀性 可維護性和健壯性都非常重要。讓我們探索一些設計和開發flutter應用程式的最佳實踐。class enum typedef和extension應採用駝峰命名uppercamelcase規則。class mainscree...
架構設計最佳實踐之DRY
大多數的開發人員在講dry don t repeat yourself 的時候大多認為dry是功能和 的重複,也就是oaoo once and only once 其實不盡然。物件導向設計提倡的oaoo,強調的是利用物件導向的繼承 組合等特性盡量讓乙個功能點只存在乙個地方,所以oaoo強調的是物件導...