事件通知方法及用于事件通知的系統的制作方法
【技術領域】
[0001]本發明涉及分布式系統技術領域,特別是涉及一種事件通知方法及用于事件通知的系統。
【背景技術】
[0002]分布式系統是由多個互相連接的處理資源組成的計算機系統,它們在整個系統的控制下協同執行同一個任務,依賴于集中的程序、數據或硬件,這些資源可以是地理上相鄰,或者,在地理上分散;用戶感覺不到這些資源是分布的,就好像是一個統一的整體。
[0003]在分布式系統中,如何協調不同的服務進行工作是關鍵問題之一,事件通知機制作為一種低耦合的服務交互方式,得到了廣泛應用。事件通知機制包括事件發布者、事件訂閱者及事件代理集群三種角色,其中,事件發布者是事件的生產方;事件代理集群采用分布式系統。事件發布者和事件訂閱者的物理實體均可以是服務器或終端。
[0004]事件訂閱者向事件代理集群訂閱自己關注的事件,當事件發布者產生事件后,事件代理集群將事件逐一發送給對應的事件訂閱者。假設,有10個事件訂閱者訂閱了同一個事件主題,當該主題的事件產生后,事件代理集群需要分別向這10個事件訂閱者發送該事件。
[0005]當某一事件主題具有大量的事件訂閱者時,采用上述的事件通知方法,事件代理集群需要發送事件的對象數量很大,將會導致網絡層消息傳輸量巨大,進而降低了事件通知效率。
【發明內容】
[0006]本發明實施例中提供了一種分布式事件通知方法及用于事件通知的系統,以解決現有技術中存在的事件通知效率低的問題。
[0007]為了解決上述技術問題,本發明實施例公開了如下技術方案:
[0008]第一方面,本發明提供一種事件通知方法,事件通知方法應用于存儲系統中,存儲系統包括至少一個集群節點、多個網絡設備和多個事件訂閱者,事件訂閱者包括客戶端或者服務器;集群節點與多個網絡設備連接,每個網絡設備與一個或多個事件訂閱者連接,并且同一個網絡設備連接的一個或多個事件訂閱者所訂閱的主題相同;其中,事件通知方法包括:集群節點接收待通知事件,其中,待通知事件包括主題;然后,集群節點根據待通知事件的主題,以及事件主題與網絡設備的地址之間的對應關系,確定待通知事件的主題對應的目標網絡設備的地址,并按照目標網絡設備的地址將待通知事件發送給目標網絡設備;目標網絡設備將待通知事件組播給與目標網絡設備連接的事件訂閱者。
[0009]第一方面提供的事件通知方法,集群節點只需向目標網絡設備發送一次待通知事件,目標網絡設備向與自身連接的事件訂閱者組播待通知事件;極大地降低了網絡層的消息傳輸量,減少通信消息的規模,提高事件通知效率。
[0010]結合第一方面,在第一方面的第一種可能的實現方式中,在集群節點接收待通知事件之前,集群節點接收事件訂閱者的訂閱消息,其中,訂閱消息中包含事件訂閱者所訂閱的主題;如果事件主題與網絡設備的地址之間的對應關系中不包含訂閱消息所包含的主題,則從存儲系統中選擇其它網絡設備的地址,并建立訂閱消息所包含的主題與所選擇的網絡設備的地址之間的對應關系。
[0011]結合第一方面,在第一方面的第二種可能的實現方式中,存儲系統中還包括其它集群節點;集群節點接收事件訂閱者的訂閱消息,還包括:集群節點將訂閱消息發送給其它集群節點;當集群節點故障時,其它集群節點根據接收到的訂閱消息所包含的主題及存儲系統包含的多個網絡設備,重新確定訂閱消息所包含主題對應的網絡設備的地址。
[0012]第一方面的第二種可能的實現方式提供的事件通知方法,集群節點接收到訂閱消息后,將該訂閱消息發送給其它集群節點,當集群主節點發生故障后,系統中的其它集群節點可以代替集群主節點工作,只需要重新建立事件訂閱者訂閱的主題與網絡設備的地址之間的對應關系。極大地減少事件代理集群節點故障后,整個事件代理集群故障恢復的時延,提高事件代理集群故障場景下事件通知的效率。
[0013]結合第一方面,在第一方面的第三種可能的實現方式中,存儲系統中還包括其它集群節點;集群節點接收待通知事件,還包括:集群節點將待通知事件發送給其它集群節點;當集群節點發生故障時,其它集群節點根據接收到的待通知事件,以及事件主題與網絡設備的地址之間的對應關系,確定待通知事件的主題對應的目標網絡設備的地址。
[0014]第一方面的第三種可能的實現方式提東的事件通知方法,集群節點接收到待通知事件后,將該待通知事件發送給其它節點,當集群節點故障時,由其它集群節點將待通知事件發送給對應的目標網絡設備,極大地減少事件代理集群節點故障后,整個事件代理集群故障恢復的時延,提高事件代理集群故障場景下事件通知的效率。
[0015]第二方面,本發明提供一種事件通知系統,該系統包括至少一個集群節點、多個網絡設備和多個事件訂閱者,所述事件訂閱者包括客戶端或者服務器;所述集群節點與所述多個網絡設備連接,每個網絡設備與一個或多個事件訂閱者連接,并且同一個所述網絡設備連接的一個或多個事件訂閱者所訂閱的主題相同;集群節點用于執行第一方面的第一種至第三種任意一種可能的實現方式提供的事件通知方法;目標網絡設備用于將待通知事件組播給與目標網絡設備連接的事件訂閱者。
[0016]由以上技術方案可見,本發明實施例提供的分布式事件通知方法,集群主節點接收到待通知事件后,根據該待通知事件的主題,查詢事件主題與網絡設備的地址之間的對應關系,得到待通知事件的主題對應的目標網絡設備的地址,并按照目標網絡設備的地址將待通知事件發送給目標網絡設備;最后,由目標網絡設備將待通知事件組播給自身所連接的全部事件訂閱者。本實施例提供的事件通知方法,集群主節點只需向目標網絡設備發送一次待通知事件,目標網絡設備將該待通知事件發送給組內的各個事件訂閱者,極大地降低了網絡層的消息傳輸量,減少了通信消息的規模,提高了事件通知效率。
【附圖說明】
[0017]為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,對于本領域普通技術人員而言,在不付出創造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。
[0018]圖1為本發明實施例提供的一種用于事件通知的系統的結構示意圖;
[0019]圖2為本發明實施例提供的一種集群節點的結構示意圖;
[0020]圖3為本發明實施例提供的應用于圖1所示系統的一種事件通知方法的流程示意圖;
[0021]圖4為本發明實施例提供的應用于圖1所示系統的另一種事件通知方法的流程示意圖;
[0022]圖5為本發明實施例提供的又一種事件通知方法的流程圖;
[0023]圖6為本發明實施例提供的另一種用于事件通知的系統的結構示意圖;
[0024]圖7為本發明實施例提供的應用于圖5所示的系統中的事件通知方法的流程圖。
【具體實施方式】
[0025]為了使本技術領域的人員更好地理解本發明實施例中的技術方案,并使本發明實施例的上述目的、特征和優點能夠更加明顯易懂,下面結合附圖對本發明實施例中技術方案作進一步詳細的說明。
[0026]參見圖1,為本發明實施例提供的一種用于事件通知的系統的結構示意圖,該系統包括至少一個集群節點、多個網絡設備和多個事件訂閱者。
[0027]至少一個集群節點構成事件代理集群,每個集群節點均可以連接多個網絡設備。網絡設備可以連接一個或多個事件訂閱者,而且,同一個網絡設備連接的一個或多個事件訂閱者所訂閱的主題相同,每個網絡設備對應一個組播組,該網絡設備所連接的一個或多個事件訂閱者是該組播組的成員。換言之,把訂閱有相同的主題的事件訂閱者劃分到同一個組播組中。
[0028]需要說明的是,集群節點與網絡設備,以及事件訂閱者與網絡設備之間可以通過有線方式連接,也可以通過無線方式連接,本發明對此并不限制。
[0029]如圖1所示,事件代理集群中的集群節點包括集群節點A、集群節點B和集群節點C,其中,集群節點A為主節點,集群節點B和C為從節點。主節點用于事件通知,從節點起冗余備份的作用,當主節點故障后,可以按照一定的策略選擇從節點作為新的主節點。集群節點可以是服務器。
[0030]集群節點A分別與網絡設備1、11和III連接;網絡設備可以是具有IP組播能力的硬件設備或軟件,例如,路由器。網絡設備I連接事件訂閱者a和b,即a和b所訂閱的主題相同;網絡設備II連接事件訂閱者c和d,c和d所訂閱的主題相同;網絡設備III連接事件訂閱者e和f,e和f所訂閱的主題相同。
[0031]事件訂閱者可以是客戶端或服務器,用于向集群節點發送訂閱消息訂閱需要的事件,訂閱消息中包含事件訂閱者所訂閱的主題。例如,事件訂閱者可以是某個APP(Applica