使用Apache Ignite瘦客户端– Apache Ignite内部博客
從2.4.0版本開始,Apache Ignite引入了一種新的連接到Ignite群集的方法,該方法允許與Ignite群集進行通信而無需啟動Ignite客戶端節點。 從歷史上看,Apache Ignite提供了客戶端和服務器節點兩個概念。 點燃旨在用作輕量級模式的客戶端節點,該節點不存儲數據(但是它可以存儲在高速緩存附近),并且不執行任何計算任務。 主要是,客戶端節點用于與服務器進行遠程通信,并允許使用整套Ignite API來操縱Ignite緩存。 Ignite客戶端節點有兩個主要缺點:
- 只要Ignite客戶端節點連接到Ignite群集,它就會成為群集拓撲的一部分。 拓撲越大,維護難度就越大。
- 在客戶端模式下,Apache Ignite節點會消耗大量資源來執行緩存操作。
為了解決上述問題,Apache Ignite提供了一種新的二進制客戶端協議,用于以任何編程語言或平臺實現瘦Ignite客戶端。
請注意,“瘦”一詞意味著它不會啟動任何與Ignite群集進行通信的Ignite節點,也不會實現任何發現/通信SPI邏輯。
瘦客戶端通過TCP套接字連接到Ignite群集,并使用定義明確的二進制協議執行CRUD操作。 該協議是完全基于套接字的請求-響應樣式協議。 該協議被設計為足夠嚴格以確保通信中的標準化(例如連接握手,消息長度等),但仍然足夠靈活以使開發人員可以擴展該協議以實現自定義功能。
Apache Ignite在以下內容中提供了簡要的數據格式和通信詳細信息:
文檔使用二protocol.Ignite已經支持.NET和Java瘦客戶機基礎上的協議,并計劃發布瘦客戶機主要語言,如goLang,Python等。但是,你可以實現你的瘦客戶機頂部通過使用二進制協議,可以選擇任何您喜歡的編程語言。
還要注意,由于它通過中間節點工作,因此Apache Ignite瘦客戶端的性能略低于Ignite客戶端節點。 假設您有兩個Apache Ignite A,B節點,并且您正在使用瘦客戶機C從集群中檢索數據。 使用瘦客戶端C,您已連接到節點B,并且每當嘗試檢索屬于節點A的任何數據時,請求始終通過客戶端B。對于Ignite客戶端節點,它將發送請求。直接到節點A。
在大多數情況下,您不必關心消息格式如何,或套接字握手如何執行。 每種編程語言的瘦客戶端都為您封裝了艱苦的工作。 無論如何,如果您想深入研究Ignite二進制協議或在創建自己的瘦客戶機時遇到任何問題,請參考Ignite文檔。
在繼續討論更高級的主題之前,讓我們看一個使用Ignite瘦客戶端的簡單應用程序。 在這個簡單的應用程序中,我向您展示了開始使用瘦客戶機所需的點點滴滴。 示例的源代碼可在GitHub存儲庫中找到 ,請參閱第2章。
步驟1 。 從GitHub存儲庫克隆或下載項目。 如果您打算從頭開始開發項目,請在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> 第二步 。 現在,讓我們創建一個名為HelloThinClient的新Java類。
第三步 。 復制并粘貼以下源代碼。 不要忘記保存文件。
步驟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地址,端口和我們要創建的緩存名稱。 如果您使用其他IP地址,則應在此處進行更改。 端口10800是Ignite瘦客戶端的默認端口。
СlientConfiguration cfg = new ClientConfiguration().setAddresses(HOST+":"+PORT); 這些是程序中下一個令人興奮的行。 我們創建了一個點燃實例
СlientConfiguration并傳遞了我們上面聲明的地址。 在下一個try-catch塊中,我們定義了一個新緩存,名稱為 精簡緩存并放置2個鍵值對。 我們還使用了Ignition.startClient方法來初始化與Ignite節點的連接。
后來,我們檢索了鍵Vladimir的值并將其打印在控制臺中。
步驟5 。 如果尚未啟動Apache Ignite單節點集群,請啟動它。 在您喜歡的終端中使用以下命令。
$ IGNITE_HOME/bin/ignite.sh步驟6 。 要生成項目,請發出以下命令。
$ mvn clean install 這將運行Maven,告訴它執行安裝目標。 此目標將編譯,測試和打包您的項目代碼,然后將其復制到本地依賴項存儲庫中。 成功編譯后,第一次構建過程將花費幾分鐘,名為的可執行jar
HelloThinClient-runnable.jar將在目標目錄中創建。
步驟7 。 通過鍵入以下命令來運行應用程序。
$ java -jar .\target\HelloThinClient-runnable.jar您應該在終端中看到很多日志。 在日志末尾,您應該會找到類似的內容。
該應用程序通過TCP套接字連接到Ignite節點,并在緩存精簡緩存上執行放置和獲取操作。 如果您查看Ignite節點控制臺,您應該注意到Ignite群集拓撲尚未更改。
翻譯自: https://www.javacodegeeks.com/2019/01/apache-ignite-client-apache-ignite.html
總結
以上是生活随笔為你收集整理的使用Apache Ignite瘦客户端– Apache Ignite内部博客的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#三打一网络扑克游戏软件开发(一)
- 下一篇: 关于代理服务器