ESB在實(shí)際項(xiàng)目重的應(yīng)用--WebSphere Message Broker
Posted on 2007-02-21 14:21 趙斌 閱讀(5493) 評(píng)論(0) 編輯 收藏 所屬分類(lèi): 1.技術(shù)區(qū)
ESB 在實(shí)際項(xiàng)目中的應(yīng)用
-- WebSphere Message Broker
【趙斌原創(chuàng),保留一切權(quán)利,轉(zhuǎn)載請(qǐng)保留引用:www.aygfsteel.com/zhaobin,謝謝!】
講座提綱:
1、 WebSphere Message Broker Introduction
a) ESB Overview
b) Message Broker Overview
c) Message Broker Performance Report
2、 ESB Project Sharing
講座內(nèi)容:
1、 Message Broker是建立在MQ基礎(chǔ)之上的。【說(shuō)明消息中間件對(duì)于MB是何等的重要,可靠的傳輸是前提、是基礎(chǔ)。】
2、 Business Integration Reference Architecture
上面是IBM的業(yè)務(wù)集成參考架構(gòu),而下面的圖則用IBM的產(chǎn)品充滿了整個(gè)架構(gòu)。
3、 ESB所處的位置,作為連接層,組織服務(wù)請(qǐng)求方和服務(wù)提供方之間的信息
4、 ESB解決連接性問(wèn)題
a) Decouple interfaces from application.【ESB可以從應(yīng)用中解耦接口。注意:當(dāng)前的項(xiàng)目中,總是在對(duì)付接口】
b) Enable all applications to communicate with each other regardless of
i. Programming languages
ii. System Platforms
iii. Programming models
iv. Protocols
v. Data formats
可以在以上5層無(wú)關(guān)性的前提下,應(yīng)用程序互相通訊。
5、 What is Enterprise Service Bus (ESB)?
c) A flexible connectivity infrastructure for integrating applications and services.【一個(gè)柔性聯(lián)通基礎(chǔ)架構(gòu),用于集成應(yīng)用程序和服務(wù)。】
d) Used to reduce the number, size, and complexity of interfaces.【用于減少接口的數(shù)量、大小、復(fù)雜性】
6、 ESB的功能
e) Matches & routes (message between services)【原來(lái)應(yīng)用系統(tǒng)是直連的,相互之間是知道對(duì)方存在的,是依賴(lài)于接口的】
f) Converts (transport protocols between requestor and service)【協(xié)議轉(zhuǎn)換】
g) Transforms (message format between requestor and service)【消息格式轉(zhuǎn)換】
h) Distributes (business events from/to disparate sources)【分發(fā)事件】
7、 ESB提供的通訊服務(wù)
i) 傳輸 (包括JMS消息和異步協(xié)議)
j) 事件
k) 中轉(zhuǎn)
8、 什么是Brokering ? (注意:數(shù)據(jù)的格式不一樣)
Broker愿意是經(jīng)紀(jì)人的意思,在這里可以理解為代理。
使用Message Broker之后,還可以很方便連接新的應(yīng)用。
9、 Message Broker 產(chǎn)品家族
IBM劃分基礎(chǔ)產(chǎn)品和高端產(chǎn)品的方式可以學(xué)習(xí)。
10、 Message Broker核心概念
l) 消息處理(Message processing)
i. 處理消息中的獨(dú)立項(xiàng)
ii. 物理和邏輯消息模型
m) 轉(zhuǎn)換和路由(Transformation and Routing)
i. 消息操縱(Message Manipulation)【我理解為各種處理,類(lèi)似于handle】
ii. 基于內(nèi)容的路由(Content based routing)
n) 簡(jiǎn)單的,清晰的編程模式
i. 可視化編程模式:消息流
11、 Message Broker概況
從這個(gè)處理流程中,可以看出MB的基本功能:
1) 收到并路由消息
2) 轉(zhuǎn)換消息到另一格式,或者到多個(gè)其他格式
3) 給訂閱者發(fā)布一個(gè)消息
4) 訪問(wèn)外部數(shù)據(jù)庫(kù)處理增量消息或存儲(chǔ)
5) 應(yīng)答事件和錯(cuò)誤
12、 MB的組件――部署時(shí)
Broker 有Domain的概念,另外Message sets和Message flow都運(yùn)行在Broker之內(nèi),多個(gè)Broker部署在同一個(gè)Broker Domain內(nèi),在同一個(gè)Domain內(nèi)通過(guò)Configuration來(lái)進(jìn)行配置。
13、 MB的組件――運(yùn)行時(shí)
1) Broker(消息代理):是MB的消息處理引擎,它提供MB的所有運(yùn)行時(shí)服務(wù)。
2) Configuration Manager(配置管理器):CM是工作臺(tái),配置存儲(chǔ)庫(kù)和Broker之間的一個(gè)接口,它維護(hù)Broker Domain的配置信息,向Broker提供初始化配置信息以及之后的變化信息。配置管理器是MB用于管理那些組成Broker Domain的全部部件和資源的核心運(yùn)行時(shí)部件。
3) Broker Domain(消息代理域):共享相同配置的若干Broker組成一個(gè)消息代理域,每個(gè)消息代理域由一個(gè)唯一的配置管理器來(lái)控制,在一個(gè)消息代理域中,可以創(chuàng)建、啟動(dòng)一個(gè)或多個(gè)Broker,和一個(gè)可選的User Name Server。
4) Execution Group(執(zhí)行組):執(zhí)行組是若干消息流的組合,是消息流運(yùn)行引擎。每個(gè)執(zhí)行組是一個(gè)獨(dú)立的進(jìn)程,這樣,在同一個(gè)執(zhí)行組中的消息流可以做到在運(yùn)行時(shí)相互獨(dú)立。在一個(gè)執(zhí)行組內(nèi)部,消息流在不同的線程池內(nèi)運(yùn)行,為了提高性能,我們可以通過(guò)設(shè)置每個(gè)消息流的運(yùn)行實(shí)例的個(gè)數(shù)來(lái)指定每個(gè)消息流的線程池的大小。
5) User Name Server(用戶名稱(chēng)服務(wù)器):任何關(guān)鍵系統(tǒng)的一個(gè)重要的組成部分就是通過(guò)提供一個(gè)有效的安全機(jī)制來(lái)確保資產(chǎn)安全的能力。用戶名稱(chēng)服務(wù)器是可選的運(yùn)行時(shí)組件,它提供Publish/Subscribe操作相關(guān)的用戶和組的安全控制。
6) Message Flow(消息流):在MB中對(duì)消息的運(yùn)算處理、格式轉(zhuǎn)換和路由等功能是通過(guò)消息流實(shí)現(xiàn)的,每個(gè)消息從輸入MB到從MB中輸出,都將被一個(gè)消息流處理,然后發(fā)往目的應(yīng)用系統(tǒng)。消息流由各種消息處理節(jié)點(diǎn)(Message Processing Node)組成,消息處理節(jié)點(diǎn)可對(duì)消息進(jìn)行各種處理操作,節(jié)點(diǎn)與節(jié)點(diǎn)相連,便組成了一個(gè)消息流。
7) Message Processing Node(消息處理節(jié)點(diǎn)):在MB中,對(duì)消息的所有計(jì)算和處理是通過(guò)消息節(jié)點(diǎn)實(shí)現(xiàn)的,消息節(jié)點(diǎn)實(shí)際上是被Broker運(yùn)行環(huán)境調(diào)用的動(dòng)態(tài)鏈接庫(kù)(DLL),通過(guò)ESQL語(yǔ)句對(duì)消息進(jìn)行操作,通過(guò)對(duì)消息節(jié)點(diǎn)屬性的客戶華處理,將使節(jié)點(diǎn)能夠?qū)α鹘?jīng)自己的消息執(zhí)行特定的功能。
8) ESQL:在MB中,消息流開(kāi)發(fā)使用的使ESQL語(yǔ)言。ESQL是對(duì)SQL V3的擴(kuò)展,除了用于數(shù)據(jù)庫(kù)的操作之外,它還可以操作消息數(shù)據(jù),包括Generic XML和MRM格式的消息。
14、 Message Flows【簡(jiǎn)直就是針對(duì)消息的工作流】
15、 Message Processing Nodes (6.0在此基礎(chǔ)上又有增加)
從我的觀點(diǎn)來(lái)分析,最重要的節(jié)點(diǎn):
a) MQInput & MQOutput
b) HttpInput 可以做WS服務(wù),HttpRequest可以去訪問(wèn)WS
c) Publication 用于發(fā)布
d) ESQL語(yǔ)句節(jié)點(diǎn),可以用于手工寫(xiě)ESQL,屬于萬(wàn)能的節(jié)點(diǎn)。
e) Mapping,消息到消息和消息到DB的映射
f) Filter, 實(shí)現(xiàn)if-else。返回4種狀態(tài):failer,true,false,unknow。
g) RouteToLaber配合Label,相當(dāng)與case語(yǔ)句。
h) TryCatch 和Throw
i) Trace,用于打印調(diào)試信息。MB也提供命令行調(diào)試方式。
j) Aggregate Request、Reply、Control,聚合
新版本中增加了
a) Timer節(jié)點(diǎn)
b) JMS節(jié)點(diǎn)
16、 MB Toolkit
17、 ESQL editor
18、 Message Set Development
19、 Mapping editor
20、 Deployment
MB需要打包成bar包,這具有更強(qiáng)的靈活性,更高的性能,當(dāng)然要稍微麻煩一些。自己開(kāi)發(fā)的產(chǎn)品,打包、部署一定要簡(jiǎn)單,最好能支持熱部署。
21、 mqsideploy 命令行部署工具,較大型的項(xiàng)目,需要做開(kāi)發(fā)環(huán)境、測(cè)試環(huán)境、聯(lián)調(diào)環(huán)境、生產(chǎn)環(huán)境等。生成腳本可以多次執(zhí)行。這就是大型軟件和一般軟件的區(qū)別之一。
22、 MB性能報(bào)告
4160 個(gè) 1KB的包/秒,建議交易用的包在1—2K。
MQ消息持久,是指寫(xiě)文件,保證服務(wù)宕機(jī)的情況下消息的完整性。而非持久性能更高。
比如:銀行ATM最大等待時(shí)間60妙,超時(shí)后消息本身就沒(méi)有意義,可以選擇非持久。
23、 MQInput/MQOutput消息流的基準(zhǔn)值
24、 Parallel Processing Option
MB可以通過(guò)多instance或者多執(zhí)行組來(lái)并行,具體哪個(gè)效果更好,看具體應(yīng)用的情況。
【趙斌原創(chuàng),保留一切權(quán)利,轉(zhuǎn)載請(qǐng)保留引用:www.aygfsteel.com/zhaobin,謝謝!】
(完)
【趙斌原創(chuàng),保留一切權(quán)利,轉(zhuǎn)載請(qǐng)保留引用:www.aygfsteel.com/zhaobin,注明轉(zhuǎn)載除外,謝謝!】