中文字幕日韩一区二区_国产一区二区av_国产毛片av_久久久久国产一区_色婷婷电影_国产一区二区精品

基于SQL Server 2008 Service Broker構(gòu)建企業(yè)級消息系統(tǒng)

  1、引言

  Microsoft 在SQL Server 2005引入了服務(wù)代理 (Service Broker 簡稱SSB) 為技術(shù)支持代理設(shè)計模式和面向消息的中間件 (MOM) 的原則。Service Broker在SQL Server 2008上得到完善, SQL Server Service Broker 為消息和隊列應(yīng)用程序提供 SQL Server 數(shù)據(jù)庫引擎本機(jī)支持。

  這使開發(fā)人員可以輕松地創(chuàng)建使用數(shù)據(jù)庫引擎組件在完全不同的數(shù)據(jù)庫之間進(jìn)行通信的復(fù)雜應(yīng)用程序。開發(fā)人員可以使用 Service Broker 輕松生成可靠的分布式應(yīng)用程序。使用 Service Broker 的應(yīng)用程序開發(fā)人員無需編寫復(fù)雜的內(nèi)部通信和消息,即可跨多個數(shù)據(jù)庫分發(fā)數(shù)據(jù)工作負(fù)荷。因為 Service Broker 會處理會話上下文中的通信路徑,所以這就減少了開發(fā)和測試工作。同時還提高了性能。

  企業(yè)系統(tǒng)和網(wǎng)站系統(tǒng)都需要處理大量的郵件、短信等消息通知系統(tǒng)。在進(jìn)行系統(tǒng)設(shè)計時,除了對安全、事務(wù)等問題給與足夠的重視外,性能也是一個不可避免的問題所在,必須充分地考慮訪問量、數(shù)據(jù)流量、服務(wù)器負(fù)荷的問題。解決性能的瓶頸,除了對硬件系統(tǒng)進(jìn)行升級外,軟件設(shè)計的合理性尤為重要。對于一些實時性不是很高的模塊我們可以使用了消息隊列技術(shù)來完成異步處理,利用消息隊列臨時存放要操作的數(shù)據(jù),將隊列的數(shù)據(jù)進(jìn)行異步的處理。本文基于SQL Server 2008 Service Broker、WCF、Windows 服務(wù)以及調(diào)度框架Quartz.NET實現(xiàn)一個消息通知系統(tǒng)。

  2、消息隊列

  2.1 隊列在異步運作的架構(gòu)中是非常常用的數(shù)據(jù)結(jié)構(gòu)

  基于消息的應(yīng)用程序的工作方式是提交一條消息,應(yīng)用程序執(zhí)行其工作。然后,再檢查看是否收到確認(rèn)消息已得到處理的信息。如果你的應(yīng)用程序充滿了待處理的請求,通常應(yīng)該增加另外一條處理隊列來緩解系統(tǒng)的總體處理壓力。

  微軟消息隊列(MSMQ)提供一個開發(fā)這類應(yīng)用程序的框架。它使得應(yīng)用程序可以在不同種類的網(wǎng)絡(luò)間進(jìn)行通信,并且需要保證消息傳送(guaranteed message delivery)、路由和可配置安全。過去20年來,我們對關(guān)系數(shù)據(jù)庫系統(tǒng)的依賴程度顯著增加。最初,存儲數(shù)據(jù)并對數(shù)據(jù)進(jìn)行某種處理,是建立商業(yè)關(guān)系數(shù)據(jù)庫系統(tǒng)的主要目的。隨著關(guān)系數(shù)據(jù)庫系統(tǒng)的發(fā)展,其功能和復(fù)雜性的變化,它的主要用途已由單一數(shù)據(jù)存儲轉(zhuǎn)變?yōu)楦又髁鞯纳虡I(yè)智能目的、更加復(fù)雜的ETL處理、數(shù)據(jù)報告、數(shù)據(jù)通知;微軟認(rèn)為,允許你在數(shù)據(jù)庫內(nèi)建立基于消息的應(yīng)用程序,這樣才有意義。

  Service Broker是SQL Server 2005中新添加的基礎(chǔ)程序,在SQL Server 2008上得到加強(qiáng),主要用于在數(shù)據(jù)庫引擎內(nèi)建立基于消息的應(yīng)用程序。SQL Server Service Broker是以數(shù)據(jù)表來實現(xiàn)隊列,并提供標(biāo)準(zhǔn)的T-SQL操作方式,讓系統(tǒng)設(shè)計人員可以善用消息溝通的特色設(shè)計應(yīng)用程序。Service Broker應(yīng)用程序以松散連接的應(yīng)用程序而開發(fā),它具有高度可擴(kuò)展性,并提供其它消息平臺所不具備的功能,如消息組協(xié)調(diào)和鎖定。這些應(yīng)用程序充分支持事務(wù),并能夠跨越數(shù)據(jù)庫實例和服務(wù)器。SQL Server 2008 Service Broker支持的消息可以達(dá)到2G,支持SQL的varbinary 和varbinary(max)數(shù)據(jù)類型,支持消息優(yōu)先級,而且“饑餓機(jī)制”保障較低優(yōu)先級的消息也有機(jī)會獲得發(fā)送。

  2.2 消息系統(tǒng)架構(gòu)

  消息的整體架構(gòu)上分為三部分,消息系統(tǒng)客戶端,消息隊列系統(tǒng),消息隊列發(fā)送程序,序列圖如下:

客戶端準(zhǔn)備好消息,通過消息客戶端接口發(fā)送到消息隊列系統(tǒng),消息隊列發(fā)送程序定時輪詢獲取消息進(jìn)行發(fā)送,發(fā)  送的過程中發(fā)生錯誤重新放入隊列,發(fā)送成功的隊列歸檔到消息數(shù)據(jù)庫。以郵件發(fā)送為例在具體的實現(xiàn)的流程如下:

  上述多個部分協(xié)作,共同完成消息的發(fā)送任務(wù),在本實現(xiàn)方案總共有六個部分,以下對這幾個部分進(jìn)行詳細(xì)描述。

  1、消息體MessageBase

  自定義消息體的好處很多,采用自己定義的格式可以節(jié)省通信的傳遞量等等,也是這個消息系統(tǒng)的消息合約。

  上面圖中我們可以看到我們定義了3種常見的消息類型:郵件、短信和RTX(騰訊通RTX是騰訊公司推出的企業(yè)級即時通信平臺),可以根據(jù)需要靈活的擴(kuò)展企業(yè)消息的類型。

  2、客戶端組件

  客戶端組件負(fù)責(zé)驗證消息和將消息輸入消息隊列系統(tǒng),為了支持在整個企業(yè)環(huán)境提供服務(wù),采用WCF方式發(fā)布,采用TCP和SOAP方式發(fā)布,TCP方式的客戶端通過.NET組件包發(fā)布,另外通過SOAP方式發(fā)布的標(biāo)準(zhǔn)Web Service支持其他跨平臺(C++/Java/php/Python/Ruby)的調(diào)用,同時為調(diào)用進(jìn)行服務(wù)的驗證,需要使用消息服務(wù)的業(yè)務(wù)系統(tǒng)首先需要在系統(tǒng)中注冊,獲得服務(wù)調(diào)用的appkey,通過SOAP Header進(jìn)行傳遞,服務(wù)端依據(jù)系統(tǒng)的注冊信息(appkey和注冊的系統(tǒng)服務(wù)器IP)進(jìn)行驗證。

  3、SQL Server 2008 Service Broker隊列系統(tǒng)

  SQL Server 2008 Service Broker支持會話優(yōu)先級,可以支持1到10的10個優(yōu)先級,為目標(biāo)服務(wù)創(chuàng)建10個優(yōu)先級,只有一個約定,但每個級別都有單獨的發(fā)起方服務(wù)。所有發(fā)起方服務(wù)都與一個中心目標(biāo)服務(wù)通信。在系統(tǒng)的中分配了高(8)中(5)低(2)三個優(yōu)先級,消息也有一個優(yōu)先級高(1)中(0)低(-1),進(jìn)入消息系統(tǒng)的優(yōu)先級等于系統(tǒng)優(yōu)先級+消息優(yōu)先級,這樣就使用了1-9優(yōu)先級,10優(yōu)先級為系統(tǒng)保留優(yōu)先級,這樣就可有效的利用Service Broker的優(yōu)先級和控制業(yè)務(wù)系統(tǒng)對消息優(yōu)先級的使用。

  4、消息處理器

  消息處理器從隊列中取出消息,進(jìn)行發(fā)送處理,發(fā)送失敗的消息重新放回隊列,并增加重試次數(shù)計數(shù),當(dāng)重試計數(shù)超過最大的重試次數(shù),進(jìn)行歸檔處理,發(fā)送成功的消息進(jìn)行歸檔處理。每個月的數(shù)據(jù)分表存儲,避免數(shù)據(jù)量過大的系統(tǒng)性能損耗。

  5、消息隊列調(diào)度器

  消息隊列的調(diào)度采用Windows 服務(wù)承載,使用Quartz.NET進(jìn)行作業(yè)的調(diào)度。Quartz.NET是一個開源的作業(yè)調(diào)度框架,是OpenSymphony 的 Quartz API的.NET移植,它用C#寫成,項目地址是http://quartzNET.sourceforge.NET。它提供了巨大的靈活性而不犧牲簡單性。你能夠用它來為執(zhí)行一個作業(yè)而創(chuàng)建簡單的或復(fù)雜的調(diào)度。

  它有很多特征,如:數(shù)據(jù)庫支持,集群,插件,支持cron-like表達(dá)式等等。 消息的處理器包裝成Quartz Job加入調(diào)度系統(tǒng)。通過添加一系列的消息發(fā)送Job來加強(qiáng)消息發(fā)送的擴(kuò)展性。Quartz.NET本身支持集群性部署,結(jié)合Service Broker的分布式架構(gòu)和Quartz的分布式部署就可以達(dá)到系統(tǒng)擴(kuò)展性。

NET技術(shù)基于SQL Server 2008 Service Broker構(gòu)建企業(yè)級消息系統(tǒng),轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 电影91久久久 | 黄网站在线播放 | a国产一区二区免费入口 | 久久久综合久久 | 国产中文字幕在线观看 | 亚洲国产成人精品女人 | 中文字幕亚洲视频 | 一区二区三区视频免费观看 | 伊人电影院av | 欧美一区二区在线 | av手机免费在线观看 | 特一级黄色毛片 | 精品日韩在线 | 久久久久国产 | 亚洲成人在线视频播放 | caoporn国产精品免费公开 | 日韩二 | 欧美日本一区二区 | 精品一区二区久久久久久久网精 | 黄色在线观看 | 亚洲视频一区在线观看 | 国产在线精品一区二区三区 | 国产在线一区二区三区 | 夜夜骑综合| 在线播放国产一区二区三区 | 天堂视频一区 | 免费人成在线观看网站 | 91精品在线看 | 黄色a三级 | 亚洲精品日韩一区二区电影 | 国产欧美一级二级三级在线视频 | 欧美三级三级三级爽爽爽 | 成人在线中文字幕 | 国产一区久久 | 久草精品在线 | 成人h视频在线 | 国产一区二区精品自拍 | 亚洲精品一区二区三区免 | 免费午夜电影 | xxx视频| 日韩欧美一区二区三区免费观看 |