天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

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

  1、引言

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

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

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

  2、消息隊列

  2.1 隊列在異步運作的架構中是非常常用的數據結構

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

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

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

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

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

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

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

  1、消息體MessageBase

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

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

  2、客戶端組件

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

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

  SQL Server 2008 Service Broker支持會話優(yōu)先級,可以支持1到10的10個優(yōu)先級,為目標服務創(chuàng)建10個優(yōu)先級,只有一個約定,但每個級別都有單獨的發(fā)起方服務。所有發(fā)起方服務都與一個中心目標服務通信。在系統(tǒng)的中分配了高(8)中(5)低(2)三個優(yōu)先級,消息也有一個優(yōu)先級高(1)中(0)低(-1),進入消息系統(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è)務系統(tǒng)對消息優(yōu)先級的使用。

  4、消息處理器

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

  5、消息隊列調度器

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

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

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

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

主站蜘蛛池模板: 亚洲黄色在线视频 | 国产精品久久人妻无码网站一区L | X8X8拨牐拨牐X8免费视频8午夜 | 亚洲 视频 在线 国产 精品 | 0855福利| 国产白丝JK被疯狂输出视频 | 伊人久久大香线蕉影院95 | 神马电影院午夜神福利在线观看 | 久久re这里精品23 | 在线观看免费av网 | 2018年免费三级av观看 | 午夜伦理 第1页 | 大学生宿舍飞机china free | 一级毛片免费播放 | 美女被爽cao免费漫画 | 亚洲精品在看在线观看 | 国产黄A片在线观看永久免费麻豆 | 久久免费精品一区二区 | 亚洲精品人成电影网 | 男人插女人动态图 | 无码人妻精品一区二区蜜桃色欲 | 99热久久视频只有精品6 | 国产人妻麻豆蜜桃色在线 | 暖暖视频中国在线观看免费韩国 | 国产精品婷婷五月久久久久 | 暖暖免费观看日本在线视频 | 久久精品视在线-2 | JLZZJLZZJLZ老师好多的水 jk制服喷水 | 伊人久久精品线影院 | 亚洲成A人片在线观看中文不卡 | 调教玩弄奶头乳夹开乳震动器 | 免费三级现频在线观看 | 动漫成年美女黄漫网站 | 桃花论坛POWERED2019 | 富婆夜店找黑人猛男BD在线 | 翘臀后进美女白嫩屁股视频 | 精品香蕉99久久久久网站 | 伊人久久大香线蕉综合99 | 久久亚洲伊人中字综合精品 | 日日夜夜狠狠干 | 看全色黄大色大片免费久黄久 |