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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

使用Apache Ignite瘦客户端– Apache Ignite内部博客

發(fā)布時間:2023/12/16 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用Apache Ignite瘦客户端– Apache Ignite内部博客 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

從2.4.0版本開始,Apache Ignite引入了一種新的連接到Ignite群集的方法,該方法允許與Ignite群集進行通信而無需啟動Ignite客戶端節(jié)點。 從歷史上看,Apache Ignite提供了客戶端和服務器節(jié)點兩個概念。 點燃旨在用作輕量級模式的客戶端節(jié)點,該節(jié)點不存儲數(shù)據(jù)(但是它可以存儲在高速緩存附近),并且不執(zhí)行任何計算任務。 主要是,客戶端節(jié)點用于與服務器進行遠程通信,并允許使用整套Ignite API來操縱Ignite緩存。 Ignite客戶端節(jié)點有兩個主要缺點:

  • 只要Ignite客戶端節(jié)點連接到Ignite群集,它就會成為群集拓撲的一部分。 拓撲越大,維護難度就越大。
  • 在客戶端模式下,Apache Ignite節(jié)點會消耗大量資源來執(zhí)行緩存操作。

為了解決上述問題,Apache Ignite提供了一種新的二進制客戶端協(xié)議,用于以任何編程語言或平臺實現(xiàn)瘦Ignite客戶端。

請注意,“瘦”一詞意味著它不會啟動任何與Ignite群集進行通信的Ignite節(jié)點,也不會實現(xiàn)任何發(fā)現(xiàn)/通信SPI邏輯。

瘦客戶端通過TCP套接字連接到Ignite群集,并使用定義明確的二進制協(xié)議執(zhí)行CRUD操作。 該協(xié)議是完全基于套接字的請求-響應樣式協(xié)議。 該協(xié)議被設計為足夠嚴格以確保通信中的標準化(例如連接握手,消息長度等),但仍然足夠靈活以使開發(fā)人員可以擴展該協(xié)議以實現(xiàn)自定義功能。

Apache Ignite在以下內容中提供了簡要的數(shù)據(jù)格式和通信詳細信息:
文檔使用二protocol.Ignite已經(jīng)支持.NET和Java瘦客戶機基礎上的協(xié)議,并計劃發(fā)布瘦客戶機主要語言,如goLang,Python等。但是,你可以實現(xiàn)你的瘦客戶機頂部通過使用二進制協(xié)議,可以選擇任何您喜歡的編程語言。

還要注意,由于它通過中間節(jié)點工作,因此Apache Ignite瘦客戶端的性能略低于Ignite客戶端節(jié)點。 假設您有兩個Apache Ignite A,B節(jié)點,并且您正在使用瘦客戶機C從集群中檢索數(shù)據(jù)。 使用瘦客戶端C,您已連接到節(jié)點B,并且每當嘗試檢索屬于節(jié)點A的任何數(shù)據(jù)時,請求始終通過客戶端B。對于Ignite客戶端節(jié)點,它將發(fā)送請求。直接到節(jié)點A。

在大多數(shù)情況下,您不必關心消息格式如何,或套接字握手如何執(zhí)行。 每種編程語言的瘦客戶端都為您封裝了艱苦的工作。 無論如何,如果您想深入研究Ignite二進制協(xié)議或在創(chuàng)建自己的瘦客戶機時遇到任何問題,請參考Ignite文檔。

在繼續(xù)討論更高級的主題之前,讓我們看一個使用Ignite瘦客戶端的簡單應用程序。 在這個簡單的應用程序中,我向您展示了開始使用瘦客戶機所需的點點滴滴。 示例的源代碼可在GitHub存儲庫中找到 ,請參閱第2章。

步驟1 。 從GitHub存儲庫克隆或下載項目。 如果您打算從頭開始開發(fā)項目,請在pom.xml文件中添加以下maven依賴項。 瘦客戶機唯一需要的ignite-core庫,其余庫僅用于日志記錄。

<dependency><groupId>org.apache.ignite</groupId><artifactId>ignite-core</artifactId><version>2.6.0</version> </dependency> <!-- Logging wih SLF4J --> <dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.6.1</version> </dependency> <dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.0.1</version> </dependency> <dependency><groupId>ch.qos.logback</groupId><artifactId>logback-core</artifactId><version>1.0.1</version> </dependency>

第二步 。 現(xiàn)在,讓我們創(chuàng)建一個名為HelloThinClient的新Java類。
第三步 。 復制并粘貼以下源代碼。 不要忘記保存文件。

import org.apache.ignite.IgniteException; import org.apache.ignite.Ignition; import org.apache.ignite.client.ClientCache; import org.apache.ignite.client.IgniteClient; import org.apache.ignite.configuration.ClientConfiguration; import org.slf4j.Logger; import org.slf4j.LoggerFactory;public class HelloThinClient {private static final Logger logger = LoggerFactory.getLogger(HelloThinClient.class);private static final String HOST = "127.0.0.1";private static final String PORT = "10800";private static final String CACHE_NAME = "thin-cache";public static void main(String[] args) {logger.info("Simple Ignite thin client example working over TCP socket.");ClientConfiguration cfg = new ClientConfiguration().setAddresses(HOST + ":" + PORT);try (IgniteClient igniteClient = Ignition.startClient(cfg)) {ClientCache < String, String > clientCache = igniteClient.getOrCreateCache(CACHE\ _NAME);// put a few valueclientCache.put("Moscow", "095");clientCache.put("Vladimir", "033");// get the region code of the Vladimir String val = clientCache.get("Vladimir");logger.info("Print value: {}", val);} catch (IgniteException e) {logger.error("Ignite exception:", e.getMessage());} catch (Exception e) {logger.error("Ignite exception:", e.getMessage());}} }

步驟4.讓我們仔細看一下我們上面編寫的程序。

private static final Logger logger = LoggerFactory.getLogger(HelloThinClient.class);private static final String HOST = "127.0.0.1";private static final String PORT = "10800";private static final String CACHE_NAME = "thin-cache";

首先,我們聲明了一些常量:記錄器,主機IP地址,端口和我們要創(chuàng)建的緩存名稱。 如果您使用其他IP地址,則應在此處進行更改。 端口10800是Ignite瘦客戶端的默認端口。

СlientConfiguration cfg = new ClientConfiguration().setAddresses(HOST+":"+PORT);

這些是程序中下一個令人興奮的行。 我們創(chuàng)建了一個點燃實例
СlientConfiguration并傳遞了我們上面聲明的地址。 在下一個try-catch塊中,我們定義了一個新緩存,名稱為 精簡緩存并放置2個鍵值對。 我們還使用了Ignition.startClient方法來初始化與Ignite節(jié)點的連接。

try (IgniteClient igniteClient = Ignition.startClient(cfg)) {ClientCache < String, String > clientCache = igniteClient.getOrCreateCache(CACHE\ _NAME);// put a few valueclientCache.put("Moscow", "095");clientCache.put("Vladimir", "033");// get the region code of the Vladimir String val = clientCache.get("Vladimir");logger.info("Print value: {}", val);} catch (IgniteException e) {logger.error("Ignite exception:", e.getMessage());} catch (Exception e) {logger.error("Ignite exception:", e.getMessage());} }

后來,我們檢索了鍵Vladimir的值并將其打印在控制臺中。

步驟5 。 如果尚未啟動Apache Ignite單節(jié)點集群,請啟動它。 在您喜歡的終端中使用以下命令。

$ IGNITE_HOME/bin/ignite.sh

步驟6 。 要生成項目,請發(fā)出以下命令。

$ mvn clean install

這將運行Maven,告訴它執(zhí)行安裝目標。 此目標將編譯,測試和打包您的項目代碼,然后將其復制到本地依賴項存儲庫中。 成功編譯后,第一次構建過程將花費幾分鐘,名為的可執(zhí)行jar
HelloThinClient-runnable.jar將在目標目錄中創(chuàng)建。

步驟7 。 通過鍵入以下命令來運行應用程序。

$ java -jar .\target\HelloThinClient-runnable.jar

您應該在終端中看到很多日志。 在日志末尾,您應該會找到類似的內容。

該應用程序通過TCP套接字連接到Ignite節(jié)點,并在緩存精簡緩存上執(zhí)行放置和獲取操作。 如果您查看Ignite節(jié)點控制臺,您應該注意到Ignite群集拓撲尚未更改。


翻譯自: https://www.javacodegeeks.com/2019/01/apache-ignite-client-apache-ignite.html

總結

以上是生活随笔為你收集整理的使用Apache Ignite瘦客户端– Apache Ignite内部博客的全部內容,希望文章能夠幫你解決所遇到的問題。

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