天天看點

虎嗅:四年覆寫9成網際網路企業中高層的網站架構演變

<b>直播視訊:</b>

虎嗅:四年覆寫9成網際網路企業中高層的網站架構演變

                                                               <b>(點選圖檔觀看)</b>

<b>虎嗅網架構演進</b>

<b> </b>

<b>技術架構演變</b><b>:從單機到多機,系統不斷解耦,架構不斷完善,阿裡雲一路相伴</b>

<b></b>

虎嗅:四年覆寫9成網際網路企業中高層的網站架構演變

在最開始的時候,虎嗅的業務形态不是十分确定,整體通路量也不是太大,最初隻使用單機,選擇了阿裡雲ecs的低配機器。但是随着業務發展,虎嗅發現注冊使用者和每天需要發送的郵件越來越多,發送郵件問題成為了瓶頸。是以後來開始将mail網關從原有系統中獨立出來,再到後來網站的通路量越來越大,業務的壓力也與日俱增,整體的産品邏輯也越來越複雜。導緻資料庫的壓力越來越大,于是虎嗅網從原本的單機中将資料庫獨立出來,後來又将圖檔的伺服器獨立出來。

<b>圖檔獨立兩個主要原因:</b>

第一:整個業務的壓力不斷變大,未來單機的ecs可能會變為多機,而多機則會存在靜态資源同步的問題,是以提前将圖檔業務剝離出來。

第二:就是随着業務的發展,虎嗅的各個平台對于所使用的圖檔資源的尺寸,大小,品質等都有不同的要求。

将圖檔伺服器獨立出來,可以解決這些問題。在韓老師分享了将圖檔伺服器獨立的一些經驗之後,又接着談一些虎嗅網關于圖檔存儲方面的觀點。

<b>圖檔存儲的主要幾個作用:</b>

虎嗅:四年覆寫9成網際網路企業中高層的網站架構演變

<b>裁剪</b>:将圖檔内容分發到web端和app端,同一張圖用到的尺寸,對品質的要求都不一樣,需要通過對圖檔等剪裁實作全能縮放、品質調整等功能,

<b>加速</b>:對于使用者而言,網頁的響應速度非常重要,将圖檔伺服器獨立出來能将cdn直接挂到圖檔上,這樣客戶通路就會非常快。

<b>分發</b>:當cdn發生故障或者線路發生故障時榮造成網站通路都到影響。虎嗅選擇了使用多個cdn,當一個線路出現問題,将會快速切換線路,保證使用者無感覺。當使用者或者編輯想向圖檔存儲伺服器上傳圖檔時,伺服器會自動同步到幾個cdn上去,同步可以保證快速切換,并且起到資料備援的作用。

<b>外圖緩存</b>:對于虎嗅這樣的類似輕社群的公司而言,有時候不可避免要應用外部圖檔,而外部圖檔往往因為外部網站不希望占用其帶寬,而使用使用防盜鍊,這樣會導緻外部圖檔不穩定,導緻無圖或者加載緩慢。虎嗅網采取的政策是自動緩存下載下傳外圖到本地伺服器上。

因為當時虎嗅網開始研發圖檔存儲技術的時間比較早,是以并沒有使用阿裡雲的oss系統,當時的圖檔存儲系統屬于使用ecs自建系統。

主持人江南在這裡談到:不僅是對圖檔的使用,還有裁剪等一系列要求,是當時虎嗅自建圖檔存儲的原因。其實随着阿裡雲産品的不斷演進,從架構上更建議使用者将像圖檔這樣的靜态資源存儲到阿裡雲的開放存儲服務oss系統;另外從成本上看,自建的存儲往往是在雲端購買ecs 配套的雲盤,這個價格和oss的價格相比幾乎要相差一倍以上。韓老師也講到,虎嗅對圖檔的存儲還有一定的需求,這個對目前阿裡雲的很多使用者而言都是常見的一個場景,阿裡雲oss就針對于媒體提供了一些額外的服務,比如在圖檔這方面,阿裡雲oss系統就可以對上傳的圖檔進行像修圖,添加水印這一類的操作,而使用者在通路這些圖檔時隻需要在其url後加上一個樣式的字元串,這時得到的圖檔就是經過裁剪或者是添加水印之後的圖檔資源。阿裡雲oss不僅能将圖檔存儲到伺服器上,還能對圖檔進行一系列的處理。而且客戶在調用這些處理時和其他的方式不同,使用者隻需要像通路網頁那樣發送一個url,就可以得到處理後的圖檔。

除了對圖檔資源的存儲處理以外,江南還建議虎嗅網的視訊類資源也參考阿裡雲oss及相關的一些服務,因為oss上存儲視訊資源是可以和阿裡雲的媒體轉碼服務mps産品直接互通,互通之後就可以對上傳到oss的視訊自動調用使用者事先定義好的mts模闆對其進行媒體處理,包括轉碼、截圖、打水印、剪輯、按分辨率縮放,這些處理都能很友善地完成。這樣在雲上的使用者,在今後遇到類似場景時就不必自己搭建應用服務系統來處理這些媒體資料資源。

韓祖利老師也非常認同江南的觀點,韓老師認為當時虎嗅在自建圖檔存儲時還沒有這麼完善阿裡雲oss系統,如果當時能夠使用oss系統,虎嗅網的整個開發周期和成本将會降低很多。

圖檔伺服器獨立之後,虎嗅網又将像js,css這樣的靜态資源獨立出來,以便提高整體響應速度,業務量不斷上升 系統壓力也越來越大。于是虎嗅将單機ecs橫向擴充成為多機的ecs來做計算。多機計算采用阿裡的slb來做多機前端的負載均衡,但是這是虎嗅發現計算問題解決了,但是資料庫又面臨巨大壓力,于是采取在中間加入了緩存的政策,虎嗅在衆多的緩存方式中選擇了簡單的memcache。

<b>主動式緩存管理:</b>

虎嗅:四年覆寫9成網際網路企業中高層的網站架構演變

在緩存管理方面,主動式緩存管理分為了兩大部分,一部分是業務緩存,另一部分是基礎資料緩存。

所謂業務緩存是指将基礎資料經過業務處理緩存起來,舉個例子比方說使用者在通路虎嗅網的首頁,這時候其實使用者打開首頁的過程需要系統資料庫對十幾張表進行查詢,然後将整個資料處理整合之後再展現給使用者。由于這個過程先是通路資料庫,之後計算再去組合,導緻過程比較長。是以虎嗅網将使用者查詢的資料先緩存起來,當其他使用者再次通路相同内容時就無需等待過長的時間,這樣整體上減少了cpu的計算量,包括後端伺服器的查詢量,使用者等待的時間就比較短,使用者體驗上就會感覺非常快。

虎嗅網的緩存的管理還是采用了相對比較一般的方式,使用了map式的管理方式。其實對于緩存暫時沒有更好的實作方式,是以使用map式的管理做了關聯。當頁面涉及的資料發生變化時,緩存會主動去清理那些無效的資料。

緩存管理的另外一個方面就是基礎資料的緩存,基礎資料緩存從某些角度來講其實就是資料庫某些基礎資料的映射,當使用者去讀取某一個資料的時候,系統會将使用者讀取的資料全部緩存起來,當表中發生資料變化的時候,系統會主動清理掉之前對該資料查詢的緩存。這是通過把整個mvc的model層改造的方式實作的。這樣成本降低了,而且僅對于寫model部分的工程師來講會麻煩一點,而對于寫業務邏輯的工程師而言則是感覺不到的。這樣做的好處在于極大地降低了資料庫的壓力,提高了整個網站的響應速度。

在分享完關于緩存方面的經驗,韓老師又接着和大家分享虎嗅網的架構演變,随着業務的不斷發展,通路量越來越大,并且知名度也越來越高。虎嗅網也遇到了安全性問題,一個是最直接的攻擊,比如ddos,cc還有一些暴力破解,跟蹤掃描等。後來增加了防火牆并且使用的是阿裡的高防服務。虎嗅經常會用到高達為幾十個g的即時量,對于像虎嗅這樣的創業公司或者是以輕模式運作的公司來講,幾十個g帶寬的采購成本是非常高的,選用高防服務之後,整體的成本就會顯得非常低了。對于一些cc的攻擊,虎嗅的負載均衡使用了阿裡雲rds服務。使用了高防服務之後就無需太過關心這些問題,攻擊存不存在對網站而言影響不大。而且在受到攻擊時,使用者是感覺不到的。對于網站工程師來講則會收到通知,系統的壓力也會有所上升,但是不至于使系統崩潰。

除了安全問題以外,還有一個問題就是垃圾,大家都知道,當網站影響力越來越大的時候,一些惡意使用者就會希望發一些廣告和垃圾資訊。虎嗅網最初采用了一套非常嚴格的垃圾過濾系統,從内容到行為去過濾資訊。但是後來發現,當這樣的垃圾過濾規則越來越嚴格的時候,對使用者的友好性就越來越差。但是如果不嚴格就又過濾不掉,是以後來接入了阿裡雲的反欺詐系統。這樣當使用者着陸到虎嗅的網頁的時候,系統就可以得到目前使用者的一個評分,由此判斷使用者的信用等級是良好還是其他,如果信用等級是良好,系統在後端就會減少垃圾過濾系統對使用者的限制。但是對于信用評分特别低的使用者,也就是說存在風險的使用者,對于他們發的内容就會先進行審後發。再有就是對這樣使用者的行為進行判斷,如果使用者釋出很多内容是重複的,或者行為像一個機器人,系統就會去跟蹤其行為。如果說反映給系統的評分是風險,可能就會直接拒絕這樣的使用者。

主此人江南提到虎嗅也是反欺詐服務的典型使用者,如果使用者自己建構一個這樣的評分過濾系統的話,因為底層用來支援的資料可能不足而容易造成“誤殺”的情況,也會有很多“漏網”的情況。而阿裡在安全方面的優勢在于阿裡雲的安全産品包括其他的服務産品都是基于原有的海量資料資訊,這些資料資訊有的可能是來自阿裡集團内部的業務系統,因為阿裡集團本身内部的業務線也非常完整,非常龐大,我們十幾年來接了大量的終端使用者,對他們的行為可以說是心裡有數。另外我們當然也會從網際網路上利用我們的技術擷取到一些行為分析的結論,動用這些結論加在一起形成一個龐大的知識庫,支援我們像在垃圾過濾,反欺詐這樣的一些應用場景内的一些安全的服務。

現在阿裡的反欺詐産品現在已經成為阿裡雲雲盾産品的一部分,阿裡雲也以很多不同的模式輸出給使用者去使用反欺詐的能力,像剛才韓總介紹的拿到一個使用者之後,系統可以通過使用者的基礎資訊,對其風險進行核實,判斷其是否存在欺詐風險以及風險的程度,這就是雲盾的反欺詐産品提供的一項服務。在這個服務的過程中,伺服器端也就是業務端就可以根據傳回的使用者評分的結果去控制下一步業務執行應該往哪一個流程上走,在往流程上走的時候應該給與使用者多大的權限。

此外在反欺詐方面,還有一些針對于風險識别,風險攔截這兩個場景下的一些服務的模式。在風險識别這邊,可以根據使用者在用戶端頁面上送出上來的一些行為資料,通過反欺詐伺服器對其進行分析,最後得到一個經過分析的風險識别結果,當業務系統調用這個風險識别結果的時候,就會判斷出該使用者是可疑還是存在風險,進而指導後續的業務流程走向。像這樣的風險識别對于一些防營銷作弊,薅羊毛這種行為,包括在支付過程中給予的一些保護,還包括在論壇上進行一些類似灌水,發垃圾資訊,發違規資訊這些場景的處理來說,都能起到非常好的作用。

另外像剛才提到的像風險攔截,現在大家在登入淘寶的時候,可能發現,原來傳統的圖檔驗證碼的方式已經變成了滑塊的方式,這其實也是風險攔截提供的一種服務方式,它通過滑塊的這個過程對使用者進行一個簡單的判定,如果判定通路使用者可信的話,會頒發一個可信簽名的串,後續使用這個串進行登入等一系列操作,這樣配合前端有效地控制風險。這樣對于防止垃圾注冊、惡意登入,像刷庫撞庫這些行為也都是非常有好處的。是以整體上來看呢,阿裡雲基于龐大的資料資源和強大的安全體系的技術的能力為像虎嗅這樣的使用者提供反欺詐的服務。

實際上像這樣的服務使用由海量資料支援的雲服務的優勢還是比較明顯的,如果說自建的話還是非常困難的。

在搜尋方面,随着虎嗅網使用者量的不斷上升,搜尋的量也變得非常大。搜尋也會對系統造成非常大的壓力,之前虎嗅網維護着一套非常大的搜尋系統,但是發現不如使用阿裡雲的opensearch的服務,在使用之後發現,使用阿裡雲的opensearch服務能讓網站集中精力關注的自身業務,整個系統不用自己去維護,虎嗅在對系統進行不斷解耦的過程中也把評論系統,包括資料統計系統等都完全獨立出來。因為評論量比較大,将評論系統從原系統中解耦出來,使得評論的頁面的響應速度大大加快。

<b>架構思想</b>

虎嗅:四年覆寫9成網際網路企業中高層的網站架構演變

總結虎嗅整個架構思想,從一開始到現在始終貫穿的就是解耦的思想。當你的業務不是非常穩定時,系統一定會存在巨大的變化,可能今天是這樣,明天就會變一個樣子,變化速度非常快。如果整個系統全部耦合在一起,就容易造成混亂,是以盡量去解耦。

另外一點就是保持簡單的結構,簡單的結構給系統帶來的好處就是能夠使維護非常輕松。網站的維護成本以及開發人員的成本都會極大地降低。

第三個就是盡量使用雲服務,這樣可以整個地去減少維護成本。我們經常會遇到這樣的情況,比如在公司裡面,看到某些系統的維護成本比其開發成本要高很多,但是當使用雲服務這些非業務核心的服務或者系統的時候,幾乎不需要自己去維護,對成本的降低是非常可觀的。

<b>虎嗅為什麼選擇阿裡雲呢?</b>

虎嗅:四年覆寫9成網際網路企業中高層的網站架構演變

其實阿裡雲的優勢非常之多,第一是極大降低系統自建時間和人力成本。第二是系統內建非常的簡單和高效。阿裡雲的優勢之三在于健全的配套基礎服務,虎嗅網的專職運維人員基本為零,也就是說使用阿裡雲相當于擁有了一個有強大技術支援的大型外包的運維團隊。這樣可以使我們專注于研發部分,在需要的時候就去購買相應的雲服務。再一個優勢就是阿裡雲的服務的系統的資料是互通的。當你使用opensearch,你不需要自己同步資料,隻需要進行簡單的設定就可以将資料同步到rds上過去。

江南也談到其實在阿裡雲設計之初就認為在阿裡雲生态内部的所有産品之間應該存在天然的資料互通和協作,像前面談到oss上存儲的視訊服務能直接和阿裡雲上的一個視訊轉碼服務直接互通,這就是一個例子。除此這外,還有像韓老師剛才提到的opensearch和rds這兩個産品是天然互通的。其實更多的像阿裡雲有很多大資料類的産品或者資料倉庫類的産品,它和阿裡雲經典的雲産品之間也是存在着天然的互通性。因為我們現在看到,使用者使用阿裡雲的基礎雲資源搭建自身的業務系統,這些業務系統必然會産生日常營運的業務資料,這些日常營運資料就可以天然地通過阿裡雲内部的互通灌入到一些像大資料的資料倉庫裡面去。

如果像虎嗅有一些未來資料分析的業務需求的話,這個産品之間的互通将會變得非常簡單,幾乎可以一鍵式完成。我們也能看到,阿裡雲的一些使用者可能不是将全部的資料放在雲上,有一些資料是存儲到自己的一些idc或者自建的機房裡面,這樣如果他們的資料産生在雲端,那麼就需要每天将這些資料先下載下傳到本地再進行一定的處理,這個過程中不僅産生了大量的公網流量費用,而且對于網絡帶寬占用造成網絡延遲,将原本可以進行實時分析的系統變成了一個隻能夠離線進行資料分析的系統,這可能對業務層面造成影響。

從這個角度講,阿裡雲和其他雲服務廠商比較大的差別就是我們提供了一個非常完善的産品線,使用者想做的很多業務都可以在阿裡雲上找到合适的雲産品加以解決,并且這些雲産品之間擁有非常良好的互通性。這就比其他的一些雲服務提供商所謂的能在某一點上提供服務要更占據優勢。

韓老師表示,他們在網站開發運維過程中也有感受,虎嗅網也在進行一些大資料的嘗試,在内部建立系統時總結時發現最大的困難是資料的同步問題,後來發現阿裡雲的資料互通優勢就足以解決所遇到的問題。

<b>關于虎嗅</b>

<b>虎嗅網</b>是一個使用者可以參與的商業資訊與觀點交流平台,看起來更像是資訊與輕社群的結合,核心是關注網際網路與移動網際網路公司的起軌迹,産業潮汐的動力與趨勢,以及網際網路與移動網際網路如何改造傳統行業。虎嗅網對自己的定義是一家網際網路公司,目标是聚合幼稚的創新資訊人群。

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