日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Apache Ignite(五):Ignite的集群部署

發布時間:2025/7/14 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Apache Ignite(五):Ignite的集群部署 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Ignite具有非常先進的集群能力,本文針對和集群有關的技術點做一個簡短的介紹,然后針對實際應用的可能部署形式做了說明和對比,從中我們可以發現,Ignite平臺在部署的靈活性上,具有很大的優勢。\

1.相關概念

\

1.1.節點平等

\

Ignite沒有master節點或者server節點,也沒有worker節點或者client節點,按照Ignite的觀點所有節點都是平等的。但是開發者可以將節點配置成master,worker或者client以及data節點。\

1.2.發現機制

\

Ignite節點之間會自動感知,集群可擴展性強,不需要重啟集群,簡單地啟動新加入的節點然后他們就會自動地加入集群。這是通過一個發現機制實現的,他使節點可以彼此發現對方,Ignite默認使用TcpDiscoverySpi通過TCP/IP協議來作為節點發現的實現,也可以配置成基于多播的或者基于靜態IP的,這些方式適用于不同的場景。\

1.3.部署模式

\

Ignite可以獨立運行,也可以在集群內運行,也可以將幾個jar包嵌入應用內部以嵌入式的模式運行,也可以運行在Docker容器以及Mesos和Yarn等環境中,可以在物理機中運行,也可以在虛擬機中運行,這個廣泛的適應性是他的一個很大的優勢。\

1.4.配置方式

\

Ignite的大部分配置選項,都同時支持通過基于Spring的XML配置方式以及通過Java代碼的編程方式進行配置,這個也是個重要的優點。\

1.5.客戶端和服務端

\

Ignite中各個節點是平等的,但是可以根據需要將節點配置成客戶端或者服務端,服務端節點參與緩存,計算,流式處理等等,而原生的客戶端節點提供了遠程連接服務端的能力。Ignite原生客戶端可以使用完整的Ignite API,包括近緩存,事務,計算,流,服務等等。
所有的Ignite節點默認都是以服務端模式啟動的,客戶端模式需要顯式地啟用,如下:

\u0026lt;bean class=\"org.apache.ignite.configuration.IgniteConfiguration\"\u0026gt;\ \u0026lt;property name=\"clientMode\" value=\"true\"/\u0026gt;\\u0026lt;/bean\u0026gt;\

2.創建集群

\

一個Ignite節點可以從命令行啟動,可以用默認的配置也可以傳遞一個配置文件。可以啟動很多的節點然后他們會自動地發現對方。
要啟動一個基于默認配置的網格節點,打開命令行然后切換到IGNITE_HOME(安裝文件夾),然后輸入如下命令:

$ bin/ignite.sh\

然后會看到大體如下的輸出:

1.[02:49:12] Ignite node started OK (id=ab5d18a6)\2.[02:49:12] Topology snapshot [ver=1, nodes=1, CPUs=8, heap=1.0GB]\

在嵌入式模式中,通過如下的代碼同樣可以啟動一個節點:

Ignite ignite = Ignition.start();\

3.集群組

\

從設計上講,所有集群節點都是平等的,所以沒有必要以一個特定的順序啟動任何節點,或者給他們賦予特定的規則。然而,Ignite可以因為一些應用的特殊需求而創建集群節點的邏輯組,比如,可能希望只在遠程節點上部署一個服務,或者給部分worker節點賦予一個叫做worker的規則來做作業的執行。比如,下面這個例子只把作業廣播到遠程節點(除了本地節點):

final Ignite ignite = Ignition.ignite();\IgniteCluster cluster = ignite.cluster();\IgniteCompute compute = ignite.compute(cluster.forRemotes());\compute.broadcast(() -\u0026gt; System.out.println(\"節點Id: \" + ignite.cluster().localNode().id()));\

Ignite內置了很多預定義的集群組,同時還支持集群組的自定義。可以基于一些謂詞定義動態集群組,這個集群組只會包含符合該謂詞的節點。下面這個例子,一個集群組只會包括CPU利用率小于50%的節點,注意這個組里面的節點會隨著CPU負載的變化而改變:

IgniteCluster cluster = ignite.cluster();\ClusterGroup readyNodes = cluster.forPredicate((node) -\u0026gt; node.metrics().getCurrentCpuLoad() \u0026lt; 0.5);\

4.集群配置

\

Ignite中,通過DiscoverySpi節點可以彼此發現對方,可以配置成基于多播的或者基于靜態IP的。Ignite提供了TcpDiscoverySpi作為DiscoverySpi的默認實現,它使用TCP/IP來作為節點發現的實現。
對于多播被禁用的情況,TcpDiscoveryVmIpFinder會使用預配置的IP地址列表,只需要提供至少一個遠程節點的IP地址即可,但是為了保證冗余一個比較好的做法是提供2-3個網格節點的IP地址。如果建立了與任何一個已提供的IP地址的連接,Ignite就會自動地發現其他的所有節點。
也可以同時使用基于多播和靜態IP的發現,這種情況下,除了通過多播接受地址以外,TcpDiscoveryMulticastIpFinder也可以使用預配置的靜態IP地址列表。
下面的例子,顯示的是如何通過預定義的IP地址列表建立集群:

TcpDiscoverySpi spi = new TcpDiscoverySpi();\TcpDiscoveryVmIpFinder ipFinder = new TcpDiscoveryVmIpFinder();\// 設置預定義IP地址,注意端口或者端口范圍是可選的。\ipFinder.setAddresses(Arrays.asList(\"1.2.3.4\

總結

以上是生活随笔為你收集整理的Apache Ignite(五):Ignite的集群部署的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。