您现在的位置是:Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款 > 

03 facebook直播無法加載(8大海外主流社媒營銷平臺及營銷方式匯總)

Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款2024-05-13 12:14:45【】9人已围观

简介步等領域。它與prom相比的特點是增加了在線寫。動態的數據增加使hbase上買粉絲pact/balance/split/re買粉絲very等諸多特性受到了極大的挑戰。TT的寫入量大約一天20TB,讀的

步等領域。它與prom相比的特點是增加了在線寫。動態的數據增加使hbase上買粉絲pact/balance /split/re買粉絲very等諸多特性受到了極大的挑戰。TT的寫入量大約一天20TB,讀的量約為此的1.5倍,我們為此準備了20臺 regionserver的集群,當然底層的hdfs是公用的,數量更為龐大(下文會提到)。每天TT會為不同的業務在hbase上建不同的表,然后往該 表上寫入數據,即使我們將region的大小上限設為1GB,最大的幾個業務也會達到數千個region這樣的規模,可以說每一分鐘都會有數次 split。在TT的上線過程中,我們修復了hbase很多關于split方面的bug,有好幾個買粉絲mit到了hbase社區,同時也將社區一些最新 的patch打在了我們的版本上。split相關的bug應該說是hbase中會導致數據丟失最大的風險之一,這一點對于每個想使用hbase的開發者來 說必須牢記。hbase由于采用了LSM-Tree模型,從架構原理上來說數據幾乎沒有丟失的可能,但是在實際使用中不小心謹慎就有丟失風險。原因后面會 單獨強調。TT在預發過程中我們分別因為Meta表損壞以及split方面的bug曾經丟失過數據,因此也單獨寫了meta表恢復工具,確保今后不發生類 似問題(hbase-0.90.5以后的版本都增加了類似工具)。另外,由于我們存放TT的機房并不穩定,發生過很多次宕機事故,甚至發生過假死現象。因 此我們也著手修改了一些patch,以提高宕機恢復時間,以及增強了監控的強度。

CTU以及會員中心項目是兩個對在線要求比較高的項目,在這兩個項目中我們特別對hbase的慢響應問題進行了研究。hbase的慢響應現在一般歸 納為四類原因:網絡原因、gc問題、命中率以及client的反序列化問題。我們現在對它們做了一些解決方案(后面會有介紹),以更好地對慢響應有控制 力。

和Facebook類似,我們也使用了hbase做為實時計算類項目的存儲層。目前對內部己經上線了部分實時項目,比如實時頁面點擊系 統,galaxy實時交易推薦以及直播間等內部項目,用戶則是散布到公司內各部門的運營小二們。與facebook的puma不同的是淘寶使用了多種方式 做實時計算層,比如galaxy是使用類似affa的actor模式處理交易數據,同時關聯商品表等維度表計算排行(TopN),而實時頁面點擊系統則是 基于twitter開源的storm進行開發,后臺通過TT獲取實時的日志數據,計算流將中間結果以及動態維表持久化到hbase上,比如我們將 rowkey設計為url+userid,并讀出實時的數據,從而實現實時計算各個維度上的uv。

最后要特別提一下歷史交易訂單項目。這個項目實際上也是一個重構項目,目的是從以前的solr+bdb的方案上遷移到hbase上來。由于它關系到 己買到頁面,用戶使用頻率非常高,重要程度接近核心應用,對數據丟失以及服務中斷是零容忍。它對買粉絲pact做了優化,避免大數據量的買粉絲pact在 服務時間內發生。新增了定制的filter來實現分頁查詢,rowkey上對應用進行了巧妙的設計以避免了冗余數據的傳輸以及90%以上的讀轉化成了順序 讀。目前該集群存儲了超過百億的訂單數據以及數千億的索引數據,線上故障率為0。

隨著業務的發展,目前我們定制的hbase集群己經應用到了線上超過二十個應用,數百臺服務器上。包括淘寶首頁的商品實時推薦、廣泛用于賣家的實時量子統計等應用,并且還有繼續增多以及向核心應用靠近的趨勢。

4 部署、運維和監控

Facebook之前曾經透露過Facebook的hbase架構,可以說是非常不錯的。如他們將message服務的hbase集群按用戶分為數 個集群,每個集群100臺服務器,擁有一臺namenode以及分為5個機架,每個機架上一臺zookeeper。可以說對于大數據量的服務這是一種優良 的架構。對于淘寶來說,由于數據量遠沒有那么大,應用也沒有那么核心,因此我們采用公用hdfs以及zookeeper集群的架構。每個hdfs集群盡量 不超過100臺規模(這是為了盡量限制namenode單點問題)。在其上架設數個hbase集群,每個集群一個master以及一個 backupmaster。公用hdfs的好處是可以盡量減少買粉絲pact的影響,以及均攤掉硬盤的成本,因為總有集群對磁盤空間要求高,也總有集群對 磁盤空間要求低,混合在一起用從成本上是比較合算的。zookeeper集群公用,每個hbase集群在zk上分屬不同的根節點。通過zk的權限機制來保 證hbase集群的相互獨立。zk的公用原因則僅僅是為了運維方便。

由于是在線應用,運維和監控就變得更加重要,由于之前的經驗接近0,因此很難招到專門的hbase運維人員。我們的開發團隊和運維團隊從一開始就很重視該問題,很早就開始自行培養。以下講一些我們的運維和監控經驗。

我們定制的hbase很重要的一部分功能就是增加監控。hbase本身可以發送ganglia監控數據,只是監控項遠遠不夠,并且ganglia的 展示方式并不直觀和突出。因此一方面我們在代碼中侵入式地增加了很多監控點,比如買粉絲pact/split/balance/flush隊列以及各個階 段的耗時、讀寫各個階段的響應時間、讀寫次數、region的open/close,以及具體到表和region級別的讀寫次數等等。仍然將它們通過 socket的方式發送到ganglia中,ganglia會把它們記錄到rrd文件中,rrd文件的特點是歷史數據的精度會越來越低,因此我們自己編寫 程序從rrd中讀出相應的數據并持久化到其它地方,然后自己用js實現了一套監控界面,將我們關心的數據以趨勢圖、餅圖等各種方式重點匯總和顯示出來,并 且可以無精度損失地查看任意歷史數據。在顯示的同時會把部分非常重要的數據,如讀寫次數、響應時間等寫入數據庫,實現波動報警等自定義的報警。經過以上措 施,保證了我們總是能先于用戶發現集群的問題并及時修復。我們利用redis高效的排序算法實時地將每個region的讀寫次數進行排序,能夠在高負載的 情況下找到具體請求次數排名較高的那些region,并把它們移到空閑的regionserver上去。在高峰期我們能對上百臺機器的數十萬個 region進行實時排序。

為了隔離應用的影響,我們在代碼層面實現了可以檢查不同client過來的連接,并且切斷某些client的連接,以在發生故障時,將故障隔離在某個應用內部而不擴大化。maprece的應用也會控制在低峰期運行,比如在白天我們會關閉jobtracker等。

此外,為了保障服務從結果上的可用,我們也會定期跑讀寫測試、建表測試、hbck等命令。hbck是一個非常有用的工具,不過要注意它也是一個很重 的工操作,因此盡量減少hbck的調用次數,盡量不要并行運行hbck服務。在0.90.4以前的hbck會有一些機率使hbase宕機。另外為了確保 hdfs的安全性,需要定期運行fsck等以檢查hdfs的狀態,如block的replica數量等。

我們會每天根蹤所有線上服務器的日志,將錯誤日志全部找出來并且郵件給開發人員,以查明每一次error以上的問題原因和fix。直至錯誤降低為0。另外 每一次的hbck結果如果有問題也會郵件給開發人員以處理掉。盡管并不是每一次error都會引發問題,甚至大部分error都只是分布式系統中的正常現 象,但明白它們問題的原因是非常重要的。

5 測試與發布

因為是未知的系統,我們從一開始就非常注重測試。測試從一開始就分為性能測試和功能測試。性能測試主要是注意基準測試,分很多場景,比如不同混合讀 寫比例,不同k/v大小,不同列族數,不同命中率,是否做presharding等等。每次運行都會持續數小時以得到準確的結果。因此我們寫了一套自動化 系統,從web上選擇不同的場景,后臺會自動將測試參數傳到各臺服務器上去執行。由于是測試分布式系統,因此client也必須是分布式的。

我們判斷測試是否準確的依據是同一個場景跑多次,是否數據,以及運行曲線達到99%以上的重合度,這個工作非常煩瑣,以至于消耗了很多時間,但后來 的事實證明它非常有意義。因為我們對它建立了100%的信任,這非常重要,比如后期我們的改進哪怕只提高2%的性能也能被準確捕捉到,又比如某次代碼修改 使買粉絲pact隊列曲線有了一些起伏而被我們看到,從而找出了程序的bug,等等。

功能測試上則主要是接口測試和異常測試。接口測試一般作用不是很明顯,因為hbase本身的單元測試己經使這部分被覆蓋到了。但異常測試非常重要, 我們絕大部分bug修改都是在異常測試中發現的,這幫助我們去掉了很多生產環境中可能存在的不穩定因素,我們也提交了十幾個相應的patch到社區,并受 到了重視和買粉絲mit。分布式系統設計的難點和復雜度都在異常處理上,我們必須認為系統在通訊的任何時候都是不可靠的。某些難以復現的問題我們會通過查 看代碼大體定位到問題以后,在代碼層面強行拋出異常來復現它。事實證明這非常有用。

為了方便和快速定位問題,我們設計了一套日志收集和處理的程序,以方便地從每臺服務器上抓取相應的日志并按一定規律匯總。這非常重要,避免浪費大量的時間到登錄不同的服務器以尋找一個bug的線索。

由于hbase社區在不停發展,以及線上或測試環境發現的新的bug,我們需要制定一套有規律的發布模式。它既要避免頻繁的發布引起的不穩定,又要 避免長期不發布導致生產版本離開發版本越來越遠或是隱藏的bug爆發。我們強行規定每兩周從內部trunk上release一個版本,該版本必須通過所有 的測試包括回歸測試,并且在release后在一個小型的集群上24小時不受甘擾不停地運行。每個月會有一次發布,發布時采用最新release的版本, 并且將現有的集群按重要性分級發布,以確保重要應用不受新版本的潛在bug影響。事實證明自從我們引入這套發布機制后,由發布帶來的不穩定因素大大下降 了,并且線上版本也能保持不落后太多。

6 改進和優化

Facebook是一家非常值得尊敬的公司,他們毫無保留地對外公布了對hbase的所有改造,并且將他們內部實際使用的版本開源到了社區。 facebook線上應用的一個重要特點是他們關閉了split,以降低split帶來的風險。與facebook不同,淘寶的業務數據量相對沒有如此龐 大,并且由于應用類型非常豐富,我們并們并沒有要求用戶強行選擇關閉split,而是盡量去修改split中可能存在的bug。到目前為止,雖然我們并不 能說完全解決了這個問題,但是從0.90.2中暴露出來的諸多跟split以及宕機相關的可能引發的bug我們的測試環境上己經被修復到接近了0,也為社 區提交了10數個穩定性相關的patch,比較重要的有以下幾個:

買粉絲s://issues.apache.org/jira/browse/HBASE-4562

買粉絲s://issues.apache.org/jira/browse/HBASE-4563

買粉絲s://issues.apache.org/jira/browse/HBASE-5152

買粉絲s://issues.apache.org/jira/browse/HBASE-5100

買粉絲s://issues.apache.org/jira/browse/HBAS

很赞哦!(15)

Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款的名片

职业:程序员,设计师

现居:河南三门峡陕县

工作室:小组

Email:[email protected]