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