Web应用系统中数据传递的方式汇总
本文轉(zhuǎn)載自sina_blog(siangzhang)
目錄
1? Socket方式
2? ftp/文件共享服務(wù)器方式
3 數(shù)據(jù)庫(kù)共享數(shù)據(jù)方式
4 message方式
5 案例
?
隨著近年來(lái)SOA(面向服務(wù)技術(shù)架構(gòu))的興起,越來(lái)越多的應(yīng)用系統(tǒng)開(kāi)始進(jìn)行分布式的設(shè)計(jì)和部署。?
系統(tǒng)由原來(lái)單一的技術(shù)架構(gòu)變成面向服務(wù)的多系統(tǒng)架構(gòu)。 原來(lái)在一個(gè)系統(tǒng)之間可以完成的業(yè)務(wù)流程,通過(guò)多系統(tǒng)的之間多次交互來(lái)實(shí)現(xiàn)。?
這里不打算介紹如何進(jìn)行SOA架構(gòu)的設(shè)計(jì),而是介紹一下應(yīng)用系統(tǒng)之間如何進(jìn)行數(shù)據(jù)的傳輸。
應(yīng)用系統(tǒng)之間數(shù)據(jù)傳輸有三個(gè)要素:
傳輸方式,傳輸協(xié)議,數(shù)據(jù)格式
數(shù)據(jù)傳輸方式一般無(wú)非是以下幾種:
1 socket方式、
2 ftp/文件共享服務(wù)器方式、
3 數(shù)據(jù)庫(kù)共享數(shù)據(jù)方式、
4 message方式
?
1? Socket方式
?
Socket方式是最簡(jiǎn)單的交互方式。是典型才c/s 交互模式。?
一臺(tái)客戶(hù)機(jī),一臺(tái)服務(wù)器。?
服務(wù)器提供服務(wù),通過(guò)ip地址和端口進(jìn)行服務(wù)訪(fǎng)問(wèn)。?
而客戶(hù)機(jī)通過(guò)連接服務(wù)器指定的端口進(jìn)行消息交互。?
其中傳輸協(xié)議可以是tcp/UDP 協(xié)議。?
而服務(wù)器和約定了請(qǐng)求報(bào)文格式和響應(yīng)報(bào)文格式。如圖一所示:
目前我們常用的 http調(diào)用, java遠(yuǎn)程調(diào)用, webserivces 都是采用的這種方式, 只不過(guò)不同的就是傳輸協(xié)議以及報(bào)文格式。
這種方式的優(yōu)點(diǎn)是:
1 易于編程,目前java提供了多種框架,屏蔽了底層通信細(xì)節(jié)以及數(shù)據(jù)傳輸轉(zhuǎn)換細(xì)節(jié)。
2 容易控制權(quán)限。通過(guò)傳輸層協(xié)議https,加密傳輸?shù)臄?shù)據(jù),使得安全性提高
3 通用性比較強(qiáng),無(wú)論客戶(hù)端是.net架構(gòu),java,python 都是可以的。尤其是webservice規(guī)范,使得服務(wù)變得通用
而這種方式的缺點(diǎn)是:
1 服務(wù)器和客戶(hù)端必須同時(shí)工作,當(dāng)服務(wù)器端不可用的時(shí)候,整個(gè)數(shù)據(jù)交互是不可進(jìn)行。
2 當(dāng)傳輸數(shù)據(jù)量比較大的時(shí)候,嚴(yán)重占用網(wǎng)絡(luò)帶寬,可能導(dǎo)致連接超時(shí)。使得在數(shù)據(jù)量交互的時(shí)候,服務(wù)變的很不可靠。
?
2? ftp/文件共享服務(wù)器方式
?
對(duì)于大數(shù)據(jù)量的交互,?
采用這種文件的交互方式最適合不過(guò)了。?
系統(tǒng)A和系統(tǒng)B約定文件服務(wù)器地址,文件命名規(guī)則,文件內(nèi)容格式等內(nèi)容,?
通過(guò)上傳文件到文件服務(wù)器進(jìn)行數(shù)據(jù)交互。
最典型的應(yīng)用場(chǎng)景是批量處理數(shù)據(jù):例如系統(tǒng)A把今天12點(diǎn)之前把要處理的數(shù)據(jù)生成到一個(gè)文件,系統(tǒng)B第二天凌晨1點(diǎn)進(jìn)行處理,處理完成之后,把處理結(jié)果生成到一個(gè)文件,系統(tǒng)A?
12點(diǎn)在進(jìn)行結(jié)果處理。
這種狀況經(jīng)常發(fā)生在A是事物處理型系統(tǒng),對(duì)響應(yīng)要求比較高,不適合做數(shù)據(jù)分析型的工作,而系統(tǒng)B是后臺(tái)系統(tǒng),對(duì)處理能力要求比較高,適合做批量任務(wù)系統(tǒng)。
以上只是說(shuō)明通過(guò)文件方式的數(shù)據(jù)交互,實(shí)際情況B完成任務(wù)之后,可能通過(guò)socket的方式通知A,不一定是通過(guò)文件方式。
這種方式的優(yōu)點(diǎn):
1 在數(shù)據(jù)量大的情況下,可以通過(guò)文件傳輸,不會(huì)超時(shí),不占用網(wǎng)絡(luò)帶寬。
2 方案簡(jiǎn)單,避免了網(wǎng)絡(luò)傳輸,網(wǎng)絡(luò)協(xié)議相關(guān)的概念。
這種方式的缺點(diǎn):
1 不太適合做實(shí)時(shí)類(lèi)的業(yè)務(wù)
2 必須有共同的文件服務(wù)器,文件服務(wù)器這里面存在風(fēng)險(xiǎn)。因?yàn)槲募赡鼙淮鄹?#xff0c;刪除,或者存在泄密等。
3 必須約定文件數(shù)據(jù)的格式,當(dāng)改變文件格式的時(shí)候,需要各個(gè)系統(tǒng)都同步做修改。
?
3 數(shù)據(jù)庫(kù)共享數(shù)據(jù)方式
?
系統(tǒng)A和系統(tǒng)B通過(guò)連接同一個(gè)數(shù)據(jù)庫(kù)服務(wù)器的同一張表進(jìn)行數(shù)據(jù)交換。 當(dāng)系統(tǒng)A請(qǐng)求系統(tǒng)B處理數(shù)據(jù)的時(shí)候,系統(tǒng)A Insert一條數(shù)據(jù),系統(tǒng)B?
select 系統(tǒng)A插入的數(shù)據(jù)進(jìn)行處理。
這種方式的優(yōu)點(diǎn)是
1 相比文件方式傳輸來(lái)說(shuō),因?yàn)槭褂玫耐粋€(gè)數(shù)據(jù)庫(kù),交互更加簡(jiǎn)單。
2 由于數(shù)據(jù)庫(kù)提供相當(dāng)做的操作,比如更新,回滾等。交互方式比較靈活,而且通過(guò)數(shù)據(jù)庫(kù)的事務(wù)機(jī)制,可以做成可靠性的數(shù)據(jù)交換。
這種方式的缺點(diǎn):
1 當(dāng)連接B的系統(tǒng)越來(lái)越多的時(shí)候,由于數(shù)據(jù)庫(kù)的連接池是有限的,導(dǎo)致每個(gè)系統(tǒng)分配到的連接不會(huì)很多,當(dāng)系統(tǒng)越來(lái)越多的時(shí)候,可能導(dǎo)致無(wú)可用的數(shù)據(jù)庫(kù)連接
2 一般情況,來(lái)自?xún)蓚€(gè)不同公司的系統(tǒng),不太會(huì)開(kāi)放自己的數(shù)據(jù)庫(kù)給對(duì)方連接,因?yàn)檫@樣會(huì)有安全性影響
?
4 message方式
?
Java消息服務(wù)(Java Message Service)是message數(shù)據(jù)傳輸?shù)牡湫偷膶?shí)現(xiàn)方式。?
系統(tǒng)A和系統(tǒng)B通過(guò)一個(gè)消息服務(wù)器進(jìn)行數(shù)據(jù)交換。 系統(tǒng)A發(fā)送消息到消息服務(wù)器,如果系統(tǒng)B訂閱系統(tǒng)A發(fā)送過(guò)來(lái)的消息,消息服務(wù)器會(huì)消息推送給B。?
雙方約定消息格式即可。
- 1
這種方式的優(yōu)點(diǎn)
1 由于jms定義了規(guī)范,有很多的開(kāi)源的消息中間件可以選擇,而且比較通用。接入起來(lái)相對(duì)也比較簡(jiǎn)單
2 通過(guò)消息方式比較靈活,可以采取同步,異步,可靠性的消息處理,消息中間件也可以獨(dú)立出來(lái)部署。
這種方式的缺點(diǎn)
1 學(xué)習(xí)jms相關(guān)的基礎(chǔ)知識(shí),消息中間件的具體配置,以及實(shí)現(xiàn)的細(xì)節(jié)對(duì)于開(kāi)發(fā)人員來(lái)說(shuō)還是有一點(diǎn)學(xué)習(xí)成本的
2 在大數(shù)據(jù)量的情況下,消息可能會(huì)產(chǎn)生積壓,導(dǎo)致消息延遲,消息丟失,甚至消息中間件崩潰。
?
5 案例
下面具體來(lái)分析一個(gè)場(chǎng)景,來(lái)看看系統(tǒng)之間數(shù)據(jù)傳輸?shù)膽?yīng)用
?
場(chǎng)景?
目前業(yè)務(wù)人員需要導(dǎo)入一個(gè)大文件到系統(tǒng)A,系統(tǒng)A保存文件信息,而文件里面的明細(xì)信息需要導(dǎo)入到系統(tǒng)B進(jìn)行分析,當(dāng)系統(tǒng)B分析完成之后,需要把分析結(jié)果通知系統(tǒng)A。
A 系統(tǒng)A先保存文件到文件服務(wù)器。
B 系統(tǒng)A 通過(guò)webservice?
調(diào)用系統(tǒng)B提供的服務(wù)器,把需要處理的文件名發(fā)送到系統(tǒng)B。由于文件很大,需要處理很長(zhǎng)時(shí)間,所以B不及時(shí)處理文件,而是保存需要處理的文件名到數(shù)據(jù)庫(kù),通過(guò)后臺(tái)定時(shí)調(diào)度機(jī)制去處理。所以B接收請(qǐng)求成功,立刻返回系統(tǒng)A成功。
C 系統(tǒng)B定時(shí)查詢(xún)數(shù)據(jù)庫(kù)記錄,通過(guò)記錄查找文件路徑,找到文件進(jìn)行處理。這個(gè)過(guò)程很長(zhǎng)。
D 系統(tǒng)B處理完成之后發(fā)送消息給系統(tǒng)A,告知系統(tǒng)A文件處理完成。
E 系統(tǒng)A 接收到系統(tǒng)B請(qǐng)求來(lái)的消息,進(jìn)行展示任務(wù)結(jié)果
總結(jié)
以上是生活随笔為你收集整理的Web应用系统中数据传递的方式汇总的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 我国又一家银行宣告破产,储户存在银行的存
- 下一篇: 网上办信用卡没有座机号怎么办