中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

apache Ignite的集群如何部署

發布時間:2021-12-16 16:16:59 來源:億速云 閱讀:415 作者:iii 欄目:云計算

本篇內容主要講解“apache Ignite的集群如何部署”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“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節點默認都是以服務端模式啟動的,客戶端模式需要顯式地啟用,如下:

<bean class="org.apache.ignite.configuration.IgniteConfiguration">
    <property name="clientMode" value="true"/>
</bean>

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(() -> System.out.println("節點Id: " + ignite.cluster().localNode().id()));

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

IgniteCluster cluster = ignite.cluster();
ClusterGroup readyNodes = cluster.forPredicate((node) -> node.metrics().getCurrentCpuLoad() < 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", "1.2.3.5:47500..47509"));
spi.setIpFinder(ipFinder);
IgniteConfiguration cfg = new IgniteConfiguration();
cfg.setDiscoverySpi(spi);
// 啟動集群
Ignition.start(cfg);

5.零部署

和計算等有關的代碼可能是任意自定義的類,在Ignite中, 遠程節點會自動感知這些類,不需要顯式地將任何jar文件部署或者移動到任何遠程節點上。這個行為是通過對等類加載(P2P類加載)實現的,他是Ignite中的一個特別的分布式類加載器,實現了節點間的字節碼交換。當對等類加載啟用時,不需要在集群內的每個節點上手工地部署代碼,也不需要每次在發生變化時重新部署。

可以通過如下方法啟用對等類加載;

<bean class="org.apache.ignite.configuration.IgniteConfiguration">
    <property name="peerClassLoadingEnabled" value="true"/>
</bean>

6.云部署

對于很多的云環境,通常有多播被禁用以及IP地址不固定的限制,對于這種情況,Ignite提供了發現的擴展機制解決了該問題,并且內置了對于常見的云服務(比如AWS)的支持,本文不贅述,開發者可以參照相關的文檔。

7.Docker等其他環境的部署

對于Docker、Mesos、Yarn等環境,Ignite同樣支持,本文不贅述,開發者可以參照相關的文檔。

8.部署實踐

Ignite的部署模式非常的靈活,在實際的場景中可以針對實際需要采用不同的部署方式,下面做簡單的總結和對比:

8.1.獨立式Ignite集群

這種情況下,集群的部署完全獨立于應用,這個集群可以用于分布式計算,分布式緩存,分布式服務等,這時應用以客戶端模式接入集群進行相關的操作,大體是如下的部署模式: apache Ignite的集群如何部署

優點

對已有的應用運行環境影響小,并且這個集群可以共享,為多個應用提供服務,對整個應用來說,額外增加了很多的計算和負載能力。

缺點

需要單獨的一組機器,相對成本要高些,如果緩存操作并發不高或者計算不飽和,存在資源利用率低的情況。整體架構也變得復雜,維護成本也要高些。

8.2.嵌入式Ignite集群

這種情況下,可以將必要的jar包嵌入已有應用的內部,利用Ignite的發現機制,自動建立集群,大體是如下的部署模式: apache Ignite的集群如何部署

優點

無需額外增加機器,成本最低,Ignite可以和應用無縫集成,所有節點都為服務端節點,可以充分利用Ignite的豐富功能。這個模式可擴展性最好,簡單增加節點即可快速擴充整個系統的計算和負載能力。

缺點

Ignite占用了服務器的部分資源,對應用整體性能有影響,可能需要進行有針對性的優化,應用更新時,集群可能需要重啟,這時如果Ignite需要加載大量的數據,重啟的時間可能變長,甚至無法忍受。

8.3.混合式Ignite集群

這種情況下,將上述2種模式混合在一起,即同時增加機器部署獨立集群,同時又將Ignite嵌入應用內部以服務端模式運行,通過邏輯集群組進行資源的分配,整體上形成更大的集群,大體是如下的部署模式: apache Ignite的集群如何部署

這種模式更為靈活,調優后能做到成本、功能、性能的平衡,綜合效果最佳。這時可以將緩存的數據通過集群組部署到應用外部的節點上,這樣可以避免頻繁的冷啟動導致緩存數據頻繁的長時間加載,對于計算,也能夠動態地充分利用所有計算節點的資源。

到此,相信大家對“apache Ignite的集群如何部署”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

黄梅县| 崇州市| 彰化市| 额尔古纳市| 正蓝旗| 海淀区| 留坝县| 隆回县| 延庆县| 江阴市| 松潘县| 固镇县| 道真| 鹿邑县| 宁晋县| 六枝特区| 吉安市| 敦煌市| 行唐县| 无为县| 宜春市| 广德县| 手游| 庆城县| 尼勒克县| 凉城县| 泽州县| 嘉峪关市| 广东省| 伊宁县| 洪雅县| 城口县| 福建省| 贡山| 汤阴县| 江山市| 阿瓦提县| 沂源县| 通州区| 牡丹江市| 于田县|