JBoss企業級應用服務平臺羣集指南(十一)

2.1.4      可靠的傳輸協議

    JGroups 棧裏的可靠傳輸協議(reliable delivery protocols)確保數據包按正確的順序(FIFO)正確地遞送到目的節點。可靠的信息遞送的基礎是肯定和否定的遞送確認(delivery acknowledgments)(ACK NAK)。在 ACK 模式下,發送者重新發送信息直到收到接收者的確認。在 NAK 模式下,當接收者發現一個間斷時,它會請求重新傳送。

2.1.4.1        UNICAST

    UNICAST 協議用於單播信息。它使用 ACK。它被配置成 JGroups Config 元素下的一個子元素。這裏有一個配置UNICAST 協議的例子。
<UNICAST timeout="100,200,400,800"/>
UNICAST 元素裏只有一個可配置屬性。
  timeout 指定重新傳送的超時時間(毫秒數)。例如,如果這個超時時間是 "100,200,400,800",如果發送者在 100 毫秒後還沒有接到 ACK,它會重新發送信息,第二此重發會在 200 毫秒後,以此類推。

2.1.4.2        NAKACK

    NAKACK 協議用於多點傳送信息。它使用 NAK。在這個協議下,每個信息用一個序列號標識。接收者根據這個序列號來按順序遞送信息。當檢測到序列號存在一個間斷時,接收者會要求發送者重新傳送丟失的信息。NAKACK 協議被配置爲 JGroups Config 元素下的 pbcast.NAKACK 子元素。這裏有一個配置示例。
<pbcast.NAKACK
max_xmit_size="8192"
use_mcast_xmit="true"
retransmit_timeout="600,1200,2400,4800"/>
下列是pbcast.NAKACK 元素的可配置屬性。
  retransmit_timeout 指定重發的超時時間(毫秒數)。它和 UNICAST 協議裏的 timeout 屬性是一樣的。
  use_mcast_xmit 決定發送者是否應該重發給整個羣集而不只是請求的節點。這在發送者取消數據包時很有用 - 我們不需要對每個節點都重發。
  max_xmit_size 指定當多個數據包丟失時,捆綁在一起的重發的最大規模。
  discard_delivered_msgs 指定是否丟棄接收節點上的遞送信息。在缺省情況下,我們保存所有的遞送的信息。然而,如果我們只需要發送者重發信息,我們就可以啓用這個選項來丟棄遞送的信息。

2.1.5      其他的配置選項

    除了協議棧以外, Config 元素中你也可以配置JGroups網絡服務。

2.1.5.1        組成員資格

    JGroups 棧裏的組成員資格(group membership)服務維護一個活動節點的列表。它處理加入和離開羣集系統的請求。它也處理故障檢測協議(failure detection protocols)發送的可疑(SUSPECT)信息。當組成員資格有變動時,它通知羣集系統裏的所有節點,負載平衡系統(load balancer)和客戶端攔截器(client side interceptors)。組成員資格(group membership)服務可以在 JGroups Config 元素下的 pbcast.GMS 子元素裏配置。這裏是一個配置示例。
<pbcast.GMS print_local_addr="true"
join_timeout="3000" down_thread="false" join_retry_timeout="2000" shun="true"/>
下列是pbcast.GMS元素裏的可配置屬性。
  join_timeout 指定了等待新節點 JOIN 請求成功的最長時間(毫秒數)。 然後再試。
  join_retry_timeout 指定 JOIN 失敗後重新遞交JOIN前所等待的時間(毫秒數)。
  print_local_addr 指定是否在啓動時輸出節點自己的地址。
  shun 指定如果收到指明自己並非成員節點的羣集視圖,節點是否剔除(shun)自己。
  disable_initial_coord 指定是否阻止這個節點成爲羣集控制點(cluster coordinator)。

2.1.5.2        流程控制

    流量控制(flow control)服務試圖在節點間控制發送和接收數據傳輸率。如果一個節點發送的過快,它可能會使接收節點難以負荷,導致數據包的丟失而且不得不重新發送。在 JGroups 裏,流量控制通過基於信用值(credit-based)的系統來實現。發送和接收節點具有相同的初始信用值(credits)(字節數)。發送者減去所發送信息的字節數,而接收者積累它接收到的信息的字節數。當發送者的信用值減少至某一極限時,接收者將把一些信用值發送給發送者。如果發送者的信用值被用光了,發送者將暫停,直到它收到接收者的信用值爲止。流量控制服務在 JGroups Config 元素下的 FC 子元素裏配置。下面是一個配置示例。
<FC max_credits="1000000" down_thread="false"
min_threshold="0.10"/>
下列是 FC 元素的可配置屬性。
  max_credits指定最大的信用值(字節數)。這個值應該小於 JVM heap size
  min_credits 指定發送者的極限信用值,如果低於這個值,接收者就應該發送更多的信用值給發送者。
  min_threshold 指定極限值的百分比。它可以覆蓋 min_credits 屬性。

2.1.5.3        狀態轉移

    狀態遷移服務從一個現有的節點(例如., 集羣協調者) 傳輸狀態到一個新加入的節點。它的配置在JGroups Config 元素之下的pbcast.STATE_TRANSFER sub-element. 它沒有一些配置屬性.這是一個配置實例.
<pbcast.STATE_TRANSFER down_thread="false" up_thread="false"
/>

2.1.5.4        分佈式的垃圾回收

    在一個JGroups集羣裏, 所有的節點不得不存放收到的所有消息,爲了萬一出現故障的潛在重發。可是, 如果我們永遠存儲所有的消息, 我們將用完內存。所以, JGroups中的分佈式的碎片收集服務週期性的,從我們能看到的所有節點的各自的內存中清理消息。分佈式碎片收集配置在JGroups Config元素之下的 pbcast.STABLE sub-element 。這是一個配置實例.
<pbcast.STABLE stability_delay="1000" desired_avg_gossip="5000" down_thread="false" max_bytes="250000"/>
pbcast.STABLE 元素裏的配置屬性如下.
  desired_avg_gossip 指定碎片收集運行的時間間隔(單位是毫秒). 當值設置成0時,將禁用此服務。
  max_bytes 指定在集羣觸發一個碎片收集運行之前,收到的字節的最大數量. 當值設置成0時,將禁用此服務。
  max_gossip_runs指定在一些修改之前最大碎片收集運行。
這個數值到達之後,直到這個消息被接收,否則沒有碎片收集。
注意 
   當你有一個高效的通信羣集的時候設置 max_bytes 屬性.

2.1.5.5        合併

    當一個網絡出現錯誤的時候,集羣可以被分割爲幾個不同的分區。JGroups有一個MERGE 服務,允許協調者在分區中互相通話。and form a single cluster back again. flow 控制服務配置在JGroups Config元素之下的MERGE2 sub-element 裏面。這有一個實例配置。
<MERGE2 max_interval="10000" min_interval="2000"/>
FC元素裏可配置的屬性如下。
  max_interval指定發送一個MERGE消息的最大時間,單位是毫秒。
  min_interval指定發送一個MERGE消息的最小時間,單位是毫秒。
JGroups min_interval max_interval之間選擇一個隨機的數值來發送MERGE消息。
注意
   在一個合併裏集羣的狀態是不合並的。這需要應用程序來完成。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章