久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Ignite如何定義一個數據節點

138次閱讀
沒有評論

共計 3265 個字符,預計需要花費 9 分鐘才能閱讀完成。

這篇文章主要講解了“Ignite 如何定義一個數據節點”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著丸趣 TV 小編的思路慢慢深入,一起來研究和學習“Ignite 如何定義一個數據節點”吧!

作為一個系統,一個可能的架構由如下層次組成:

Ignite 集群層

持久化存儲層

外部應用層

本文中會關注第一層(Ignite 集群層),可以參考一個 GitHub 項目,他包含了日常中實現擬議的微服務架構所必須的構建塊,尤其是要覆蓋如下部分:

配置和啟動數據節點;

使用 Ignite 的服務 API 的典型服務實現;

配置和啟動駐有 Ignite 服務的服務節點;

一個連接到集群并且觸發服務執行的虛擬應用。

微服務位于內存數據網格架構之上時的數據節點

數據節點是持有數據集一部分數據的服務端節點,應用邏輯端會在這個數據集上執行查詢和計算。通常來說,這種類型的節點對應用邏輯是透明的,因為這些節點只是簡單地存儲數據集,然后當應用訪問數據時高效地進行處理就可以了。

可以下載這個 GitHub 項目然后找到 data-node-config.xml,它會用于創建一個新的數據節點,這個配置包含了一組與數據節點有關的段落和參數。

首先,需要為每一個要部署到集群中的 Ignite 緩存配置一個特定的節點過濾器。這個過濾器會在緩存啟動時被調用,它會定義一個要存儲緩存數據的集群節點的子集 – 數據節點。同樣的過濾器在網絡拓撲發生變化時也會被調用,比如新節點加入集群或者舊節點離開集群。過濾器的實現需要加入每個節點的類路徑中,不管該節點是否會成為數據節點。

bean  >

第二,實現過濾器,在本例中,使用了一個非常明確的實現,DataNodeFilter,它通過檢查 data.node 參數來確定一個節點是否會被視為數據節點。如果一個節點在屬性映射中配置了這個參數,那么他會成為一個數據節點然后數據會駐留于此,否則該節點會被忽略。

 public boolean apply(ClusterNode node) {
 Boolean dataNode = node.attribute( data.node 
 return dataNode != null   dataNode;
}

第三,data-node-config.xml 為每個使用這個配置啟動的節點的屬性映射添加了 data.node 屬性,就像下面這樣:

property name= userAttributes 
  map key-type= java.lang.String  value-type= java.lang.Boolean 
  entry key= data.node  value= true / 
  /map 
 /property

最后,通過使用示例中的 DataNodeStartup 文件,或者將 data-node-config.xml 傳遞給 Ignite 的 ignite.sh/bat 腳本來啟動一個數據節點的實例。如果選擇了后者,那么一定要將 java/app/common 目錄中的所有類文件構建成一個 jar 包,然后還要將這個 jar 文件加入到每個數據節點的類路徑中。

微服務位于內存數據網格架構之上時的服務節點

在實現層次上服務節點的定義與前述數據節點的用法沒有什么大的不同。基本上,需要建立一個方式,即指定一個特定的微服務將要部署在哪些節點上,它們會是整個集群的一個子集。

最初,需要使用服務網格 API 實現一個微服務,為后文起見,可以回顧一下那個 GitHub 示例中的已有服務實現,即 Maintenance Service。

這個服務可以調度一個車輛維護的服務,并且可以查看已做保養的清單,它實現了所有服務網格的必要方法,包括 init(...),execute(...) 以及 cancel(...),并且在這個接口中增加了新的方法:

 public interface MaintenanceService extends Service { public Date scheduleVehicleMaintenance(int vehicleId);
 public List Maintenance  getMaintenanceRecords(int vehicleId);
}

將這個維護服務配置并且部署到特定的 Ignite 節點(服務節點)上有幾種方式。在本例中,通過 maintenance-service-node-config.xml 啟動的每個節點,都可以考慮進行維護服務的部署,下面可以看一下配置。

首先,確保維護服務的實例只會被部署到指定了節點過濾器的節點上:

bean  >

第二,維護服務使用的過濾器,只會被部署到在屬性映射中配置了 maintenance.service.node 的節點上:

 public boolean apply(ClusterNode node) {
 Boolean dataNode = node.attribute( maintenance.service.node 
 return dataNode != null   dataNode;
}

最后,通過如下的 XML 片段,使用 maintenance-service-node-config.xml 啟動的每個節點在映射中都會包含這個屬性:

property name= userAttributes 
  map key-type= java.lang.String  value-type= java.lang.Boolean 
  entry key= maintenance.service.node  value= true / 
  /map 
 /property

就這些了,使用 MaintenanceServiceNodeStartup 文件,或者將 maintenance-service-node-config.xml 傳遞給 Ignite 的 ignite.sh/bat 腳本,就可以啟動維護服務節點的一個或者多個實例,如果選擇了后者,一定要確保將 java/app/common 和 java/services/maintenance 目錄中的所有文件打包成一個 jar 文件,然后將這個 jar 文件添加到每個服務將要被部署的節點的類路徑上。

示例中包含了另一個與車輛管理有關的 Ignite 服務,使用 VehicleServiceNodeStartup 文件或者使用經過 vehicle-service-node-config.xml 配置的 ignite.sh/bat,可以啟動至少一個部署有該服務的服務節點,如果選擇了 ignite.sh/bat 方式,不要忘了組裝一個 jar 文件然后將其加入相關節點的類路徑上。

在內存數據網格之上運行微服務的示例應用

一旦準備好了數據節點,維護服務和車輛服務節點也都啟動運行了,那么就可以運行第一個示例應用來訪問這個分布式微服務了。

在示例中找到并且啟動 TestAppStartup,這個應用會接入集群,往預定義的緩存中注入虛擬數據,然后與服務進行交互。

MaintenanceService maintenanceService = ignite.services().serviceProxy(MaintenanceService.SERVICE_NAME,
MaintenanceService.class, false);
int vehicleId = rand.nextInt(maxVehicles);
Date date = maintenanceService.scheduleVehicleMaintenance(vehicleId);

如果注意了,應用會使用服務代理來與服務進行交互,代理的好處就是,啟動應用的節點不需要在本地類路徑中持有服務的實現,也不需要在本地部署一個服務。

感謝各位的閱讀,以上就是“Ignite 如何定義一個數據節點”的內容了,經過本文的學習后,相信大家對 Ignite 如何定義一個數據節點這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是丸趣 TV,丸趣 TV 小編將為大家推送更多相關知識點的文章,歡迎關注!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-16發表,共計3265字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 龙胜| 梁河县| 成都市| 鄂州市| 呼图壁县| 邵武市| 宁乡县| 郯城县| 临沂市| 乌审旗| 礼泉县| 漳州市| 托克托县| 邯郸市| 湘阴县| 嘉荫县| 亚东县| 衡阳县| 镇远县| 奉新县| 武冈市| 泸西县| 铁岭市| 太仓市| 宣恩县| 炉霍县| 中江县| 佛坪县| 治多县| 子长县| 青海省| 平江县| 遂溪县| 登封市| 年辖:市辖区| 靖宇县| 玛多县| 奉新县| 志丹县| 东乡县| 威信县|