天天看點

基于阿裡雲建構可靠懶豬行IT運維平台

以阿裡雲為代表的雲計算平台的出現,給it系統的運維帶來了巨大的便利,我們的項目在14年創立之處就在使用阿裡雲的ecs。2016年度,我們借助單台ecs執行個體和精心設計的軟體系統,跑出了接近1個億的銷售額,但随着業務規模的快速擴充和it系統的演進,運維架構也做出了較大的調整。

将業務分拆為一般重要、關鍵和既重要又關鍵的子產品

搭建持續內建環境和預釋出環境

敲除單點故障,為保證sla對關鍵服務做備援處理

對未來資料規模的預估,并定期歸檔冷資料

用好記憶體型nosql,例如redis

業務分拆的方法有很多,微服務架構是其中一種不錯的思路之一。但分拆的原則,是先分拆一般但資料量較大的業務子產品,其次才會對核心業務子產品分拆。

懶豬行s2b系統中的一個比較典型的例子,是消息盒子。最初的設計思路是将其與主體系統耦合在一起,并且把資料與業務資料一起放到mysql中。但後續評估資料量時,發現消息盒子産生的巨大資料量,占用業務系統的資料庫io開銷,對業務穩定性存在潛在的威脅。于是我們決定将其分拆到單台獨立的ecs執行個體中運作,資料庫改用redis,與主業務系統之間通過api接口互動資料。

作為一個面向b端商家的跨境旅遊項目,要優先保障國内分銷商家的通路,同時也要保障境外地接社和遊客的通路。

在早期的方案中,我們将伺服器放在香港,同時對大陸和境外通路。但随着業務的增長,大陸與香港之前的公網狀況已經不允許我們這麼做,于是我們把資料遷回大陸,在香港和大陸之間架設專線,然後通過香港的nginx反向代理把境内伺服器轉發出去,這樣同時滿足了境内和境外的通路要求。

基于阿裡雲建構可靠懶豬行IT運維平台

對曆史資料的處理

懶豬行系統目前的資料規模還不算太大,基于對未來資料量發展的預估和後期維護的靈活性,我們會定期歸檔一年前的曆史交易資料到mongodb中長期存儲,這樣對系統整體性能提升有顯著幫助,同時以獨立的服務子產品維護,向主業務系統提供資料查詢接口。

資料庫讀寫分離

讀寫分離是通路量較大的it系統都會采用的技術方案,但基于業務系統的特殊性(頻繁的資料導出)和對資料分析挖掘(産品銷售的關聯性分析)的需求,我們采用一主多從的方案。

使用redis緩存高頻資料

操作人員頻繁的檢視和修改訂單,消費、退款等操作,雖然實作了資料庫讀寫分離,但仍然有不小的壓力;另外,諸多同行對接api,可能會存在集中式的訂單建立。使用記憶體型redis緩存,可以減少90%以上的資料庫讀取操作,并且對較集中的訂單建立(例如雙11這樣的場景)和修改操作“削峰”,提升系統的整體性能和健壯性。

作者資訊:劉遠端,杭州懶豬行co-founder兼cto。知名資訊安全企業産品經理出身,曾多次創業并擔任技術總監和cto,具有豐富的網際網路産品設計、開發和團隊管理經驗。