在HPTS大會上,Randy
Shoup放出的eBay的PPT有所改變,在原有的5個Architectural Lessons上又增加了5個lesson,從這也可以一定程度的看出當訪問量、數據量、功能不斷上漲后,碰到的技術問題也將繼續發展,想必這也是eBay增加5個lessons的原因,eBay在技術方面的發展對很多互聯網公司都有一些參考意義,畢竟它已經經歷過了國內很多網站目前的階段甚至是幾年后的階段,在本篇blog中就完整的來看看eBay的這10個lessons、eBay的應對策略以及我個人的一些推測。
1、 Partition Everything
這點是現在各家互聯網都使用的招,說白了也很正常,畢竟一個網站通常要提供很多功能,如果都部署在同一臺機器上,隨著水平伸縮,后端的資源肯定會呈現不夠用的現象,這個時候能采用的方法自然是分,分開后自然一臺能夠支撐的量也會更高,同時后端資源的壓力也會減小。
當然,要做到這點其實并不容易,eBay應對的策略為:按功能水平劃分應用、按功能水平劃分數據庫、按其他原則垂直劃分表,涉及到的技術有:劃分之后應用的交互的解決以及數據訪問層(DAL)。
這點基本是現在互聯網公司的必備技能。
2、 Asynchrony Everywhere
同步的交互會帶來強耦合,可用性方面保障就比較困難了,因此盡可能的采用異步。
在這點上,eBay的應對策略為:事件驅動和pipeline、多播消息,涉及的技術為:消息中間件(無序、至少一次到達)、基于SRM技術的可靠多播。
這點基本也是現在互聯網公司的必備技能。
3、 Automate Everything
這點eBay比較強,中國的互聯網公司不知道有幾家能做到,J,其中有一點和twitter那個PPT提到的差不多,就是配置信息的動態化,這個確實非常重要。
要做到這些方面,會涉及的技術有:配置發布/訂閱機制的實現、機器學習。
有些其他強大的東西eBay在這里也沒提,例如部署系統。
4、 Remember Everything Fails
這點很多公司都做,但從PPT來看,估計很少有公司能做到eBay這個地步,J,尤其是eBay的優雅降級,twitter公布的PPT中也有類似的內容,國內公司還得努力,呵呵。
eBay的應對策略為:異常后發消息、有相應的消息訂閱者接收這些報警信息、按功能實現降級,保障核心功能的可用性,涉及的技術有:消息中間件、如何實現按功能降級。
5、 Embrace Inconsistency
這點對于互聯網公司來說非常重要,事務過多,性能就狂降了,尤其是Partition everything后,分布式事務需求產生,就更要注意了,因此eBay的應對策略為最終一致,涉及的技術有:消息中間件、CAP等。
以上5個lesson是很早以前eBay PPT中就一直有的,而以下5點則是第一次出現在eBay的PPT中,從中也可以一窺隨著網站的發展帶來的技術挑戰。
6、 Expect (R)evolution
這里eBay講到的主要是如何更好的應對變化,這包括了功能演變、架構演變,eBay的應對策略為:靈活的schema、可插拔的處理流程以及增量的系統發布,這方面的技術還是相當復雜的,eBay采用的是:配置化處理流程、系統發布過程支持多版本共存。
這點要做到真的不容易,看來eBay已經碰到了發布必須增量發的問題了。
7、 Dependencies Matter
這點隨著Partition
everything和Asynchrony everywhere執行,以及功能的不斷增加后,就會變得比較明顯,想必eBay也是如此。
他們的應對策略:服務拓撲管理、設計上的控制(只允許依賴…)、客戶端承擔責任。
說到這點,不得不說下,客戶端承擔責任這點其實真的很重要,現在很多架構都喜歡放在服務端上解決N多問題,但很多場合確實有必要放到客戶端去做,當然,這也會帶來一些問題,例如升級等。
8、 Be Authoritative
這點沒看明白。
9、 Never Enough Data
看的也不是很明白,我理解下來意思也許是數據肯定是會一直增長的,因此要考慮可伸縮的內存保存以及持久存儲產品,英文寫的就是large-scale distributed storage。
10、
Custom Infrastructure
同樣沒看明白,感覺就是要做到充分發揮機器資源,從eBay有SLA來看,莫非是要開始做云計算了,J
總結來說,eBay也是首先解決如何做到基于水平伸縮支撐大訪問量、大數據量的問題,然后則是開始步入如何管理以及保障好如此大的應用的關系、可用性等。
ps:
之前那篇《旁觀者看eBay技術發展》的blog:http://www.aygfsteel.com/BlueDavy/archive/2009/07/24/288055.html