在QCon SF 2009的SOA分會(huì)場(chǎng)上,eBay的架構(gòu)師講了一個(gè)SOA @
eBay的PPT,正好和我的工作有很多的交叉點(diǎn),于是比較認(rèn)真的看了下這個(gè)PPT,感興趣的同學(xué)可以從這里下載:http://qconsf.com/sf2009/file?path=/qcon-sanfran-2009/slides/SastryMalladi_SOAEBayHowIsItAHit.pdf,在這個(gè)PPT中可以看到eBay對(duì)于SOA的看法以及他們目前的做法,自己也是做這方面工作的,就在這篇blog中介紹下這個(gè)PPT以及自己對(duì)于SOA的一些看法。
先來(lái)介紹下這個(gè)PPT的內(nèi)容,PPT內(nèi)容主要分成以下幾部分:
1.
What is SOA
簡(jiǎn)單來(lái)說,就是一種架構(gòu)思想,有助于提升系統(tǒng)的重用性。
2.
SOA Benefits
提升業(yè)務(wù)的靈敏性,降低失敗需要付出的代價(jià)。
3.
SOA挑戰(zhàn)
l 由于服務(wù)多級(jí)調(diào)用帶來(lái)的延時(shí);
l 調(diào)試/跟蹤問題困難;
l 需要高效的請(qǐng)求/會(huì)話級(jí)別的cache;
l 更高的安全/監(jiān)測(cè)的要求;
l 現(xiàn)有應(yīng)用移植;
l 部署和回滾;
l 演變階段新老技術(shù)的共存;
l QoS和SLA的支持;
l 集成測(cè)試;
l 高可用和高度可伸縮性;
l 版本和依賴管理。
4.
應(yīng)對(duì)挑戰(zhàn)的措施
l 輕量、高性能的SOA平臺(tái)(自己寫+開源+商業(yè));
l 單元測(cè)試框架和服務(wù)虛擬化;
l 領(lǐng)域驅(qū)動(dòng)的服務(wù)劃分方式;
l 支持REST風(fēng)格;
l 服務(wù)生命周期管理;
l 增量的服務(wù)部署;
l 管理工具;
l 開發(fā)人員的培訓(xùn)。
5.
eBay的SOA平臺(tái)
l 高性能、可擴(kuò)展(pipeline方式)的輕量級(jí)框架;
l 監(jiān)測(cè)、安全控制、流量限制;
l 服務(wù)注冊(cè)和服務(wù)倉(cāng)庫(kù);
l ESB;
l 業(yè)務(wù)流程引擎;
l 開發(fā)工具和管理工具。
6.
SOA治理
l 設(shè)計(jì)階段,接口和類型的review、確認(rèn),從而遵循約束;
l 運(yùn)行階段,部署/安全/緩存/監(jiān)測(cè)/可用性策略,并根據(jù)運(yùn)行狀況和設(shè)計(jì)階段對(duì)比,看看是否符合設(shè)計(jì);
l 變更管理,做到依賴或版本的變更不影響現(xiàn)有應(yīng)用。
7.
eBay的SOA治理
l 服務(wù)倉(cāng)庫(kù),用于記錄服務(wù)元信息、生命周期信息以及消費(fèi)者信息以及進(jìn)行服務(wù)依賴的分析;
l 服務(wù)注冊(cè),支持通過UDDI方式,主要用于路由;
l 基本實(shí)現(xiàn)6中SOA治理的設(shè)計(jì)階段、運(yùn)行階段的要求。
8.
總結(jié)
最重要的為:服務(wù)層的規(guī)劃、版本和依賴的管理,目前eBay的SOA化正在進(jìn)展中。
看完PPT,可以看出,eBay負(fù)責(zé)這個(gè)部分的架構(gòu)師確實(shí)擁有不錯(cuò)的全局觀,考慮到的點(diǎn)已經(jīng)比較全面了,尤其是各種SOA平臺(tái)落地時(shí)會(huì)碰到的問題,按照這樣的控制讓eBay步入SOA化問題應(yīng)該不大,技術(shù)方面而言,eBay的SOA平臺(tái)應(yīng)該是基于http方式,實(shí)現(xiàn)同步和異步交互,另外就是有專門的開發(fā)工具和管理工具,這點(diǎn)是eBay的特色,平臺(tái)在發(fā)展初期就為開發(fā)人員的易用做出了充分的考慮,其他技術(shù)點(diǎn)看不太出來(lái),希望以后能看到更多eBay SOA平臺(tái)技術(shù)細(xì)節(jié)的介紹,例如如何實(shí)現(xiàn)QoS、部署等,不過SOA,確實(shí)是各人有各人的想法,因此做出來(lái)都會(huì)有些差別,下面就按照這個(gè)PPT的結(jié)構(gòu)講講自己的一些看法,J
1.
What is SOA
簡(jiǎn)單來(lái)說,我認(rèn)為SOA就是要做到系統(tǒng)內(nèi)或系統(tǒng)間以標(biāo)準(zhǔn)的service方式進(jìn)行交互。
2.
SOA Benefits
l 標(biāo)準(zhǔn)的交互方式
不管你需要的功能是以什么方式實(shí)現(xiàn)的、怎么部署的,都可以用一種統(tǒng)一的方式去發(fā)布服務(wù)、調(diào)用服務(wù),避免出現(xiàn)調(diào)這個(gè)功能要用webservice、調(diào)另外個(gè)功能需要用hessian這樣的現(xiàn)象。
l 屏蔽交互細(xì)節(jié)
功能交互時(shí)同步還是異步、通信方式(調(diào)用的服務(wù)在哪、通信協(xié)議、數(shù)據(jù)交互協(xié)議等)是怎么樣的,開發(fā)人員都可以不用考慮,這將使得開發(fā)人員能更加專注于業(yè)務(wù)功能的實(shí)現(xiàn)。
l 功能重用
一個(gè)應(yīng)用必然會(huì)有很多可公用的功能,如果沒有一種好的方式提供,搞不成就會(huì)折騰成這個(gè)系統(tǒng)里有一個(gè)類似的業(yè)務(wù)功能,另外個(gè)系統(tǒng)里也有一個(gè),最后要維護(hù)起來(lái)就痛苦了,這個(gè)時(shí)候功能的重用就顯得非常的重要了。
l 對(duì)互聯(lián)網(wǎng)應(yīng)用而言
性能、可用性、伸縮性問題可以更集中精力的去解決,同時(shí)也是在對(duì)應(yīng)用進(jìn)行劃分時(shí)產(chǎn)生的必須的基礎(chǔ)平臺(tái),現(xiàn)在外部很多聲音是SOA死了嗎,但其實(shí)N多家互聯(lián)網(wǎng)公司就是SOA平臺(tái)的實(shí)現(xiàn)以及實(shí)施者,J
3.
SOA挑戰(zhàn)
l 通信方面的性能、可用性以及可伸縮性的挑戰(zhàn),這是互聯(lián)網(wǎng)應(yīng)用必須的,沒太多可說的;
l 服務(wù)路由,這點(diǎn)其實(shí)看要實(shí)現(xiàn)到什么程度,簡(jiǎn)單的話就是個(gè)隨機(jī)或順序的地址選擇,復(fù)雜的話就是怎么樣才能選擇到最佳的服務(wù)目標(biāo)地址,這里面就有很多學(xué)問了,這點(diǎn)貌似目前eBay還沒重視,不過以后它強(qiáng)調(diào)QoS的時(shí)候自然要考慮的,J;
l 給開發(fā)階段帶來(lái)的挑戰(zhàn),主要是開發(fā)人員習(xí)慣的轉(zhuǎn)變,以及調(diào)試、查錯(cuò)的復(fù)雜,一出問題會(huì)很難查問題到底在哪,畢竟有可能一個(gè)功能是跳了好幾個(gè)系統(tǒng)的,這點(diǎn)說起來(lái)貌似eBay做的不錯(cuò),這個(gè)在實(shí)施SOA平臺(tái)時(shí)會(huì)碰到很多麻煩;
l 多版本共存的挑戰(zhàn),尤其是服務(wù)多了以后;
l 根據(jù)QoS有效分配服務(wù)資源,這個(gè)難度可想而知,之前貌似有看到過IBM的藍(lán)云的demo里貌似能做到;
l SOA平臺(tái)自身的可管理和升級(jí),這個(gè)問題也會(huì)不小,隨著SOA平臺(tái)部署到所有的應(yīng)用上,可想而知,要升級(jí)一次是什么概念;
l 服務(wù)粒度的掌控,這個(gè)是最難的,因?yàn)闆]標(biāo)準(zhǔn),eBay的那個(gè)領(lǐng)域驅(qū)動(dòng)劃分聽起來(lái)貌似還行,但沒細(xì)節(jié),也無(wú)法評(píng)判;
l 現(xiàn)有應(yīng)用移植,這個(gè)基本都是共同的頭疼點(diǎn),貌似基本上也沒什么好辦法,要的就是時(shí)間了。
4.
看重的SOA平臺(tái)的關(guān)鍵點(diǎn)
如果有一個(gè)現(xiàn)成的SOA平臺(tái)擺在我的面前,我想我最關(guān)注的是它在以下幾點(diǎn)的表現(xiàn):
l Service的定義
這不用說,SOA平臺(tái)必備,但服務(wù)的定義至少應(yīng)包括版本、擴(kuò)展的服務(wù)屬性聲明等。
l 支持多種交互方式以及可擴(kuò)展
這個(gè)基本也不用說,至少傳輸協(xié)議上多支持幾種、數(shù)據(jù)交互協(xié)議上也多支持幾種吧,還有就是交互方式,例如同步、異步等,不用說的就是還是要能擴(kuò)展的,這樣實(shí)在不行就自己上了。
l 高性能、高可用、高度可伸縮
互聯(lián)網(wǎng)應(yīng)用,沒什么說的,這三點(diǎn)是必須的,因此好歹要有個(gè)benchmark、有個(gè)網(wǎng)站應(yīng)用的例子最好了,高度可伸縮嘛,至少SOA平臺(tái)本身不能成為伸縮路上的攔路者。
l 服務(wù)路由
服務(wù)路由,我自己還是很看重的,因?yàn)檫@對(duì)于做到按QoS來(lái)分配服務(wù)資源非常重要,否則就得應(yīng)用自己折騰了。
l 強(qiáng)大的SOA治理
由于PPT上eBay把SOA治理單獨(dú)說了,我也單獨(dú)說吧,對(duì)我而言,強(qiáng)大的SOA治理也是重要的因素,主要是治理的很多基礎(chǔ)其實(shí)就是平臺(tái)要先做好的,否則平臺(tái)沒有,自己開發(fā)會(huì)發(fā)現(xiàn)根本沒法做,如果治理需要的基礎(chǔ)都有了,那難度是不大的。
5.
SOA治理
隨著服務(wù)的增多,治理會(huì)變得非常重要,簡(jiǎn)單說說我對(duì)SOA治理的一些需求,J
l 服務(wù)依賴關(guān)系分析,這個(gè)現(xiàn)在已經(jīng)成治理的基本話題了,所以不必多說;
l 服務(wù)運(yùn)行狀況監(jiān)測(cè),至少要顯示下現(xiàn)在服務(wù)的響應(yīng)時(shí)間、請(qǐng)求狀況吧;
l 服務(wù)路由調(diào)整,這是調(diào)整服務(wù)資源的重要手法;
l 服務(wù)流量控制,能適當(dāng)控制下服務(wù)能接受的請(qǐng)求的上限,能給不同機(jī)器分配不同的流量;
l 服務(wù)請(qǐng)求的全程跟蹤,例如可以動(dòng)態(tài)打開track,跟蹤其中例如執(zhí)行失敗的某一條的全程,從而迅速判斷性能瓶頸、錯(cuò)誤根源等,并可同時(shí)基于此來(lái)做請(qǐng)求的放棄以及響應(yīng)的丟棄;
l 服務(wù)降級(jí),降級(jí)這個(gè)貌似現(xiàn)在都成國(guó)外幾家互聯(lián)網(wǎng)公司的入門級(jí)武器了,所以沒得說,咱們也追隨下,J。
貌似現(xiàn)在商業(yè)的、開源的都還沒有這樣的吧,如果什么時(shí)候能出現(xiàn)個(gè)就好了,好歹也能去膜拜下,好了,我已羅嗦完畢,接下來(lái)就是大家的時(shí)間了,期待期待。