作者:CppExplore
http://www.shnenglu.com/CppExplore/和
http://blog.csdn.net/cppexplore同步發(fā)布。
近3年沒發(fā)文章,謹(jǐn)以本文總結(jié)我和團(tuán)隊(duì)兄弟們3年在業(yè)務(wù)之外的工作成果。
1 產(chǎn)品目標(biāo) 降低高性能服務(wù)領(lǐng)域開發(fā)門檻,提高開發(fā)效率,同時(shí)解決測試、運(yùn)維、監(jiān)控、數(shù)據(jù)分析中的各類問題。
圍繞此目標(biāo),sBPM(snda Business Process Management:盛大業(yè)務(wù)流程管理)將流程管理概念延伸到高性能服務(wù)器領(lǐng)域,使用SOA服務(wù)編排配置方式進(jìn)行服務(wù)開發(fā)與組裝,提供外圍支持工具,封裝監(jiān)控、告警、日志類基礎(chǔ)功能。
2 產(chǎn)品功能
1)支持SOA服務(wù)路由
2)支持SOA服務(wù)編排:對多個(gè)服務(wù)進(jìn)行調(diào)用流程編排
Ø 通過sBPEL語法(xml風(fēng)格)描述業(yè)務(wù)流程
Ø 編排流程支持:并行調(diào)用、串行調(diào)用、跳轉(zhuǎn)流程,支持根據(jù)服務(wù)任意返回值、流程內(nèi)變量等進(jìn)行跳轉(zhuǎn)或賦值操作。
Ø 支持對編排結(jié)果嵌套編排
Ø 編排目標(biāo)原生支持sBPM自定義二進(jìn)制協(xié)議,通過外部適配支持對HTTP協(xié)議以及其他協(xié)議進(jìn)行編排。
3)支持服務(wù)編排語法進(jìn)行服務(wù)開發(fā)
Ø 通過異步插件機(jī)制可任意擴(kuò)展編排目標(biāo),已支持:本地內(nèi)存、memcache、redis、mysql、oracle,且針對各數(shù)據(jù)源特點(diǎn)不同分別支持一致性hash、分庫分表等策略。通過對基礎(chǔ)存儲進(jìn)行編排達(dá)到服務(wù)開發(fā)的目的
Ø 通過同步插件機(jī)制可任意擴(kuò)展流程內(nèi)編排邏輯,已支持大量常用邏輯插件。
4)提供BPEL4WS語法向sBPEL語法轉(zhuǎn)換工具,可使用BPEL4WS可視化流程編排工具進(jìn)行編排
5)提供配置接口、明細(xì)日志、性能數(shù)據(jù)接口、業(yè)務(wù)量數(shù)據(jù)接口、告警接口等支持。尤其對實(shí)時(shí)日志分析提供特別支持。
6)對編排結(jié)果接口,提供HTTP/TCP兩類通用授權(quán)網(wǎng)關(guān)對外暴露。提供TCP接口的同步、異步IPC調(diào)用。
7)對編排結(jié)果接口,提供可視化測試用例編輯器以及自動化運(yùn)行器。
3 類似產(chǎn)品比較
在后端服務(wù)器領(lǐng)域,沒有類似支持SOA服務(wù)編排的產(chǎn)品,其他領(lǐng)域產(chǎn)品存在部分類似點(diǎn),比較如下:
1) sBPM與ESB比較
ESB是對已存在的復(fù)雜異構(gòu)環(huán)境的黏合劑,主要強(qiáng)調(diào)消息路由、協(xié)議適配。
sBPM擁有完善產(chǎn)品線,雖有擴(kuò)展機(jī)制支持組合已有系統(tǒng),但更側(cè)重于從無到有開發(fā)全新系統(tǒng);sBPM雖支持消息路由功能,但更強(qiáng)調(diào)服務(wù)編排功能。
通過ESB的協(xié)議適配機(jī)制可以大大加強(qiáng)sBPM的編排能力,可作為sBPM的補(bǔ)充。
2)sBPM與BPEL4WS類產(chǎn)品、jBPM比較
BPEL4WS使用XML語法描述業(yè)務(wù)流程,由BEA、IBM和Microsoft編寫和公布,是針對WEB服務(wù)的SOA組合編排,代表產(chǎn)品眾多,不詳舉。
sBPM使用sBPEL描述業(yè)務(wù)流程,提供BPEL4WS語法向本語法翻譯工具,可復(fù)用BPEL4WS的可視化流程開發(fā)工具,與BPEL4WS定位于WEB服務(wù)編排不同,sBPM側(cè)重于高性能后端服務(wù),通過內(nèi)置插件以及擴(kuò)展服務(wù)不限編排組合對象,可以是基礎(chǔ)服務(wù)、cache、本地內(nèi)存、redis、mysql、oracle、http接口等。
jBPM使用自定義jpdl描述業(yè)務(wù)流程,提供可視化流程編輯器、調(diào)試器,定位為信息化、工作流領(lǐng)域,不強(qiáng)調(diào)編排目標(biāo)與性能,更重視流程數(shù)據(jù)持久化、與人交互流程。
3) sBPM與Node.js比較
Node.js相對前兩著,和sBPM更為接近。它定位為快速構(gòu)建異步高性能服務(wù)后端,和傳統(tǒng)web容器相同,僅支持單線程。它強(qiáng)調(diào)IO異步,以類似網(wǎng)絡(luò)proactor模型設(shè)置回調(diào)方式進(jìn)行開發(fā),使用javascript語言進(jìn)行開發(fā),容易獲得已有前端人員認(rèn)可,同時(shí)也帶來了不可避免的調(diào)式工作。
sBPM和node.js同樣定位為快速構(gòu)建異步高性能服務(wù)后端,強(qiáng)調(diào)運(yùn)行時(shí)異步性能,默認(rèn)線程和CPU數(shù)量相同。和node.js不同,sBPM不需開發(fā),以同步方式來描述異步流程,配置思路符合業(yè)務(wù)思維,配合級聯(lián)部署、層層組合較容易組裝產(chǎn)生平臺級的強(qiáng)大服務(wù)。sBPM屬完整產(chǎn)品,對接口日志、各接口業(yè)務(wù)量、依賴接口業(yè)務(wù)量、接口耗時(shí)、各依賴耗時(shí)、告警分布做了統(tǒng)一封裝。
Node.js目標(biāo)人群仍舊是開發(fā)人員。而sBPM框架不再需要傳統(tǒng)開發(fā)、代碼調(diào)試角色。在云計(jì)算時(shí)代,我相信sBPM是云平臺發(fā)展的必然趨勢,傳統(tǒng)后端開發(fā)角色終將被合架構(gòu)師、開發(fā)角色、業(yè)務(wù)運(yùn)維角色為一體的業(yè)務(wù)配置角色所替代。
4 產(chǎn)品優(yōu)點(diǎn)
1) 產(chǎn)品線完善:覆蓋編排運(yùn)行容器、可視化編排工具、可視化測試工具、運(yùn)營支撐平臺等。
2) 縮短產(chǎn)品開發(fā)時(shí)間:基于sBPM產(chǎn)品開發(fā)新產(chǎn)品,完全配置方式,顛覆傳統(tǒng)開發(fā)方式,將產(chǎn)品研發(fā)時(shí)間完全縮短到產(chǎn)品需求提煉過程。
3) 提高產(chǎn)品質(zhì)量:開發(fā)過程不會引入bug,節(jié)省測試成本。
4) 產(chǎn)品高可擴(kuò)展、可維護(hù):流程配置完全貼近業(yè)務(wù)本質(zhì),保護(hù)流程投資。流程編排方式更容易產(chǎn)生更強(qiáng)大、功能更完善的產(chǎn)品,維護(hù)更直接簡單。
5) 高性能:sBPM將性能與穩(wěn)定性做為本產(chǎn)品第一競爭力,容器在初始化階段解析流程文件到內(nèi)存結(jié)構(gòu),運(yùn)行中采用全異步機(jī)制。基于sBPM配置產(chǎn)生的產(chǎn)品天生具有高性能,高于手寫方式。
6) 可運(yùn)營性:sBPM產(chǎn)品融合我方實(shí)際運(yùn)營經(jīng)驗(yàn),關(guān)注配置、告警、性能、日志、安全等方面。
5 產(chǎn)品使用情況
通過近3年持續(xù)發(fā)展與推廣,sBPM已在盛大基礎(chǔ)平臺內(nèi)廣泛使用,涵蓋認(rèn)證、注冊、用戶信息、計(jì)費(fèi)、安全等業(yè)務(wù)。目前sBPM產(chǎn)品已管理過10T關(guān)系型數(shù)據(jù)庫、幾十億記錄,涵oracle、mysql、hbase、memcache、redis多種數(shù)據(jù)源,每日外部請求量近10億次,內(nèi)部組合調(diào)用過30億次。
6 產(chǎn)品展望
1)將sBPM獨(dú)立產(chǎn)品化,與內(nèi)部運(yùn)營支撐系統(tǒng)藕荷部分重構(gòu)為插件接口,裁減掉不適合產(chǎn)品化部分。
2)將sBPM和私有云概念結(jié)合,搭建PAAS平臺,對外提供運(yùn)營服務(wù)。