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