天天看點

塗鴉科技:支撐從零暴增數十億資料的背後,竟無專職運維!

<b>直播視訊</b>

塗鴉科技:支撐從零暴增數十億資料的背後,竟無專職運維!

(點選圖檔檢視視訊)

幻燈下載下傳位址: https://oss.aliyuncs.com/yqfiles/76d3bb80d4a9da17ababada8f56ecd8b.pdf

3月23日雲栖社群線上實時分享順利結束,本次由塗鴉科技技術總監柯都敏分享了塗鴉科技雲上架構設計和借助阿裡雲實作輕運維高可用性監控的實戰經驗,同時也介紹了網絡安全、權限控制等特定場景下如何利用阿裡雲産品解決特定的問題題。本次視訊直播的整理文章、視訊、幻燈片整理完畢,如下内容。

<b>架構演變曆程</b>

<b>

</b>

初創公司的團隊剛起步時一般規模都不是很大,并且成員能力各異,而且為了公司的長遠發展,初始的架構需要設計的盡可能優秀。是以在設計時需要考慮到架構性能、擴充、代碼安全、測試等等問題。

塗鴉科技:支撐從零暴增數十億資料的背後,竟無專職運維!

<b>圖一 第一代輕架構</b>

在塗鴉科技設計第一代架構時,業務量并不是很大。在設計之初,對整個架構進行了簡單的拆分,基礎服務層記憶體放的是公共的資源,為以後的其他業務作支撐;為了保障網絡接口的安全性,同時為了縮短開發周期,在架構上封裝了atop網關層,在網關層内完成接口配置、接口的通路控制、資料轉換、統一日志等操作。開發人員隻需要将精力集中于業務層開發,業務層向上提供服務。網關層通過配置化來調用業務接口。當接受到外部請求時,通過網關層進行協定轉換、資料轉換,再通過配置中心來對業務接口進行排程,業務層傳回的資料再通過網關層轉換,傳回給原請求者。第一代架構僅僅使用一個庫和一台主機,并且該架構是分布式架構,但在最初時整合到一個工程使用本地調用。

第一代架構實作了前後端的完全分離,使得前端的效率大大提升;同時業務通過網關暴露,後端的效率也随着提升;此外公共的技術模型的統一封裝,降低了上手成本;在安全風險方面,通過網關的統一授權和使用者模型特征驗證,降低了安全風險;接口配置化部署實作上午提需求,下午就可以聯調,滿足産品的要求。

塗鴉科技:支撐從零暴增數十億資料的背後,竟無專職運維!

<b>圖二 第二代平行架構</b>

第一代輕架構幾乎沒有做性能評估,也沒有對資料庫做分表。随着業務量的增加,資料庫壓力逐漸增大。第二代架構中,同樣進行了拆分分層,,相對于第一代架構,網關層幾乎不存在改動,實作風險可控。中間層進行子產品化拆分,服務化治理方面采用阿裡的dubbo,同時也進行了一些對應的改進,使其更加适應用于網關層,通過配置中心動态配置生效。同時使用dubbo monitor對服務進行監控,同時自行開發了服務化治理的調用依賴等。目前,塗鴉科技内部服務已經有十幾種之多。資料庫方面,通過塗鴉科技自行開發資料庫中間件,實作路由、分庫分表、主從備份等操作。

通過對架構的優化,第二代架構對業務有了更好的支撐。資料方面,目前可以處理日峰值30t資料上傳;可以運作幾十億使用者核心資料;支援實時日志搜尋和分析報警以及支援離線和實時資料處理。子產品化方面,對業務服務子產品化拆分,做到可獨立釋出部署;同時服務治理工具可分析服務調用情況按需擴容;通過性能和可用性監控,及時發現技術瓶頸,同時支援服務熱釋出。網關方面,通過網關隔離内外資料;同時采用網關服務組裝業務場景,使得子產品顆粒更細化;除此之外,網關提供了多種安全機制支援多業務場景;網關可以進行平行擴充,并且沒有性能瓶頸;網關作為統一的資料出入口,可以友善進行日志分析跟蹤。中間件方面,通過自主開發資料元件支援分庫分表、主從讀寫等操作;同時對mq等中間服務封裝,便于架構選型;此外架構中盡量多的使用阿裡雲來減少維護成本。同時通過配置中心,滿足了網關接口的實時更新的需求。

<b>塗鴉在雲上</b>

塗鴉科技:支撐從零暴增數十億資料的背後,竟無專職運維!

<b>圖三 塗鴉科技雲上架構</b>

上圖是塗鴉科技在雲上的架構場景。從圖上可看,該架構幾乎采用了所有的阿裡雲産品。前端通過slb将流量引入,根據業務不同對slb進行拆分,根據業務流量不同,調用不同的slb,盡可能使得不同的業務各自可進行擴容。同時,流量入口可動态配置,當一個slb無法承受流量壓力時,後續的流量會轉移到其他slb上,做到動态擴充。通過ecs搭建的網關叢集和業務叢集可實作平行擴充和熱擴充。在整個架構的高可用方面,流量入口通過slb實作高可用;網關層通過對多組機器的slb監控和自主監控,當有業務釋出時,通過slb對腳本的監控,對一些機器做下線操作,當服務上線再将流量導通到這些機器上,做到流量熱遷移;業務層通過服務子產品化,當業務量壓力增加時,可以采用動态加機做到高可用性。資料庫容災備份方面,核心資料庫采用主從配置,無需将大流量的資料放在主庫上,主庫上主要處理寫操作,備份主要采用阿裡雲的rds的預設定時備份機制,同時在資料量方面做了大量的異步處理,通過cache和隊列将資料進行異步化處理。

塗鴉科技:支撐從零暴增數十億資料的背後,竟無專職運維!

<b>圖四 雲産品使用場景</b>

上圖是阿裡雲産品在塗鴉科技的一個使用場景。由于業務資料增加較快,單rds接近瓶頸,同時iops高資料庫io高,峰值突然出現服務慢,必須進行資料遷移。當時的選擇可以使自行開發進行遷移,但時間成本較高,至少需要一個人一周才能完成。當時恰逢阿裡雲資料遷移服務dts對外公測,如果僅對資料進行讀寫操作時,風險很小,通過dts對資料的遷移,增加了資料存儲空間,同時iops也急速下降,平穩度過了風險。

塗鴉科技:支撐從零暴增數十億資料的背後,竟無專職運維!

<b>圖五 雲産品使用經驗</b>

塗鴉科技通過使用阿裡雲服務,有很多的收獲經驗。首先在ram權限,從最初使用阿裡雲時的五個具有全部權限的超級key到現在不同的用戶端使用不同的key,隐藏超級key,采用ram自定義權限細化到每個使用者,通過對業務拆分減少了安全風險。其次在雲監控技巧,通過對ecs、rds、ocs等正常監控,如何出現報警時,可以做到及時的修改。通過自定義監控服務的存活情況,由于自定義監控的資訊量有限,後期又開發了自主監控,監控資訊内加上日志分析出來的連結位址,如果有報警情況出現時,可用過該連結位址準确找到問題所在。通過slb進行内部服務管理,首先slb内網免費使用,十分靈活。前端nodejs伺服器調用後端api時,通過slb搭建内網,避免内網伺服器更換、下線時帶來的不可用性。此外,還通過slb管理zookeeper叢集,無需對代碼進行變更,避免了風險。oss方面,通過oss的圖檔服務降低了成本,還可以通過oss管理内部的運維小工具,通過oss的python的client自主化運維一些伺服器。

<b>經驗分享</b>

塗鴉科技:支撐從零暴增數十億資料的背後,竟無專職運維!

<b>圖六 基于ecs安全組的權限控制</b>

塗鴉科技不僅在架構中使用阿裡雲服務,同時在很多的項目中也使用了阿裡雲服務。例如基于ecs安全組的權限控制,在ecs安全組沒有上市前,采用的是在每台機器上部署防火牆方式,在不同的伺服器上部署的防火牆規則也不同,當需要修改防火牆時,需要上機處理,十分繁瑣,通過ecs安全組,将相應的防火牆規則進行梳理,比如可以将所有的日志分析伺服器添加到日志分析服務安全組内,十分靈活。另外安全組内可進行内網通信,阿裡雲自帶的安全組和自定義的安全組之間也進行了打通。

塗鴉科技:支撐從零暴增數十億資料的背後,竟無專職運維!

<b>圖七 基于ecs api的主機管理和高可用監控</b>

上圖是基于ecs api的主機管理和高可用監控流程圖,目前ram權限還是比較廣,很多服務還不支援。塗鴉科技基于ecs api自行開發一套工具。這套工具可以擷取機器清單和資訊(ram權限),然後通過主機tag管理給每台機器打上tag,不同的開發人員隻能接觸與之對應的機器。通過tag标記,可以使得主機按需管理,批量運維,同時還可以根據tag類型做對應的可用性監控。

通過對所有資料的實時分析,利用tag的标記來明确服務的類型,基于服務類型來調用分析結果。比如可以分析出網關在一定時間内的錯誤量,以及網絡的響應時間等資訊。如果錯誤量或響應時間超過一定的閥值,可以進行自動化報警,無需人工,開發人員通過報警提供的url位址快速定位問題的所在。

相對于亞馬遜,阿裡雲在網絡通路時間、穩定性、使用成本、技術支援更有優勢。

<b>qa環節:</b>

1、作為技術人員,可以分享下這幾年的創業經驗嗎?

<b>答:</b>創業這一段時間感觸頗大,在公司時更專注于做自己的事情,對其他知識了解不多,比較安分。創業時,不僅要着重提高自己的技術,同時還需要關注團隊的發展,将整個鍊路連接配接起來,成長很大。

2、一個完美的架構應該經曆哪些發展過程的?

<b>答:</b>個人認為沒有最完美的架構,最适合業務的架構就是最好的,比如說剛開始處于一台機器上的架構,成本最低,對當時來說,就是最完美的架構。

3、圖檔處理方面是自行開發處理還是采用oss的相應功能?

<b>答:</b>圖檔處理方面走過很多彎路,最初圖檔處理是自行開發,當資料量增加時,伺服器的io和内網速率等瓶頸逐漸暴露,當時将近有20多台伺服器用于圖檔處理。後來通過oss提供的内網圖檔處理服務,對圖檔處理服務做了改進,節省了近十台伺服器,有效節省了成本。

4、目前你的團隊内有多少運維人員?

<b>答:</b>目前團隊中沒有專職運維人員,運維是我自己在兼職做。

5、odps和emr的差別?

<b>答:</b>從使用者的角度來說,兩者的差別是一個是開源的一個是閉源的。emr在開源方面做得好一些,odps在閉源方面更加優秀。但從整體來看,odps會內建一些條件引擎、推薦引擎的産品,使用者可以在odps執行個體上寫mysql,輸入資料就可以達到想要的結果;emr可将企業的hadoop、spark等大資料系統無縫的遷移。

<b>關于分享者</b>

柯都敏,塗鴉科技技術總監。近10年網際網路從業經曆,曾任職阿裡巴巴,2014年9月加入塗鴉科技,5個月完成塗鴉科技第一二代技術架構,平穩支撐塗鴉一年從零到幾十億資料快速發展。

塗鴉科技,一家專業的智能硬體解決方案提供商,以雲平台為核心、軟硬體結合的方式提供智能生活服務,安全快速穩定地推進中國制造業轉型更新,促進傳統産業“網際網路+”有效深入的融合,“中國制造”轉型為“中國智造”。基于塗鴉智能的一站式硬體智能化解決方案,廠商隻需要專注于自己最擅長的領域,最大化提升硬體品質,讓産品更具競争力,給使用者更好的體驗。目前塗鴉科技旗下擁有塗鴉智能硬體平台和自有軟硬體産品。2015年獲得了nea千萬美元a輪投資。

<b>相關系列文章:</b>

第九期:《微網誌:一億通路量背後的分鐘級伺服器擴容》

第八期:《有貨:六層混合雲架構打造中國最潮生态圈》

第七期:《美柚:最懂女性app背後的混合雲架構與大資料服務》

第五期:《千萬級使用者app小咖秀:服務端架構設計分享》

第四期:《空格app億元a輪融資背後:雲上多場景技術架構實踐與經驗》

第三期:《國内線上預訂模式開創者驢媽媽旅遊網:如何在混合雲上搭建産品資料分析系統》

第二期:《遊族網絡:如何運維千台以上遊戲雲伺服器》

第一期:《淘寶丁奇:如何解決影響mysql使用的9大問題》