使用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类。

第三步 。 复制并粘贴以下源代码。 不要忘记保存文件。

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地址,端口和我们要创建的缓存名称。 如果您使用其他IP地址,则应在此处进行更改。 端口10800是Ignite瘦客户端的默认端口。

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

这些是程序中下一个令人兴奋的行。 我们创建了一个点燃实例
СlientConfiguration并传递了我们上面声明的地址。 在下一个try-catch块中,我们定义了一个新缓存,名称为
精简缓存并放置2个键值对。 我们还使用了Ignition.startClient方法来初始化与Ignite节点的连接。

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单节点集群,请启动它。 在您喜欢的终端中使用以下命令。

$ 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/344688.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【渝粤教育】广东开放大学 岭南文化概论 形成性考核 (45)

选择题 题目&#xff1a; &#xff08;&#xff09;是岭南文化中最有响并最具典型性的文化。 选择一项&#xff1a; 答案&#xff1a;看左侧 题目&#xff1a; &#xff08;&#xff09;是岭南文化中最有响并最具典型性的文化。 选择一项&#xff1a; 答案&#xff1a;看左侧…

【渝粤教育】广东开放大学 数据采集技术 形成性考核 (29)

选择题 题目&#xff1a;GET和POST的区别&#xff0c;以下说法不正确的有&#xff08;&#xff09;。 题目&#xff1a;以下属于HTTP协议的主要特点的是&#xff08;&#xff09;。 题目&#xff1a;增量式爬虫中的&#xff08;&#xff09;指的是&#xff1a;爬虫以相同的频率…

2020-12-15通信原理

1、随机过程是一类随时间作随机变化的过程&#xff0c;不能用确切的时间函数描述。 不同角度理解&#xff1a;&#xff08;1&#xff09;对应不同随机试验结果的时间过程的集合&#xff1b;&#xff08;2&#xff09;随机过程是随机变量概念的延伸。 可以把随机过程看作是在时间…

【渝粤教育】广东开放大学 机械制造基础 形成性考核 (51)

选择题 题目&#xff1a;退火一般安排在 ( ) 题目&#xff1a;从蠕墨铸铁的牌号上可以看出其硬度和冲击韧性。 题目&#xff1a;钎焊接头的主要缺点是&#xff08; &#xff09; 题目&#xff1a;高碳钢淬火后回火时,随回火温度升高其&#xff08; &#xff09; 题目&#xff1…

【渝粤教育】广东开放大学 电子支付与安全 形成性考核 (59)

选择题 题目&#xff1a;直接参与者&#xff1a;商行和央行&#xff08;商行以其不通层次的管辖银行在相应层次的央行开设清算帐户&#xff09; 答案&#xff1a;看左侧 题目&#xff1a;支付系统全国处理中心是控制支付系统运行&#xff0c;管理国家金融网络通信、接收、结算、…

java 将光标移至行首_Java:将条件移至消息文件

java 将光标移至行首Java类ResourceBundle和MessageFormat提供了一个很好的工具集&#xff0c;用于解决Java应用程序内部的本地化消息。 这篇文章提供了一个小示例&#xff0c;说明如何使用ChoiceFormat将与消息相关的简单条件从Java代码移动到消息文件中。 如果您已经知道Choi…

2020-12-19通信电子线路第一章

振幅键控&#xff08;Amplitude-shift keying&#xff09; (ASK) 相位键控&#xff08;phase-shift keying&#xff09; (PSK) 频率键控&#xff1a;&#xff08;Frequency-shift keying&#xff09; (FSK) CDMA (Code Division Multiple Access) 码分多址 软件无线电结构&am…

【渝粤教育】广东开放大学 网络市场与预测 形成性考核 (23)

选择题 题目&#xff1a;&#xff08;&#xff09;是利用互联网发掘和了解顾客需求、市场机会、竞争对手、行业潮流、分销渠道以及战略合作伙伴等方面的情况。 题目&#xff1a;市场调查首先要解决的问题是&#xff08; &#xff09;。 题目&#xff1a;为了在市场调查方案实施…

在Ubuntu 18.04上实际安装OpenJDK 11

OpenJDK 11于 1018年9月25日发布 。由于这是版本8之后的第一个LTS版本&#xff0c;因此期待已久。 在Ubuntu 18.04&#xff08;Bionic Beaver&#xff09;上安装了该软件包后&#xff0c;该软件包附带了一个名为openjdk-11-jdk的软件包&#xff0c;令我惊讶的是它仍然是早期版本…

【渝粤教育】广东开放大学 计量基础知识 形成性考核 (48)

选择题 题目&#xff1a;工业计量也称工程计量。一般指工业、工程、生产企业中的&#xff08;&#xff09;计量。 答案&#xff1a;看左侧 题目&#xff1a;我国古代有许多令炎黄子孙骄傲自豪的计量文化&#xff0c;我们耳熟能详的就有&#xff08;&#xff09;等。 答案&#…

Verilog二选一数据选择器

//二选一数据选择器module mux2_1(a0,a1,s,f) input a0,a1,s; output f;//默认是wire&#xff08;线&#xff09;变量 assign f(s)?a1:a0;//assign 专门给线类型变量赋值 endmodulemodule mux2_1(a,s,f) input s; input [1:0]a&#xff1b; output f; reg f;//reg(寄存器型) a…

【渝粤教育】电大中专Office办公软件 (1)作业 题库

1.西文字符一般采用的编码是&#xff08; &#xff09;。 A.ASCII码 B.BCD码 C.国标码 D.EBCDIC码 正确 正确答案&#xff1a;左边查询 学生答案&#xff1a;A 2.若已知一汉字的国标码是5E38&#xff0c;则其内码是&#xff08; &#xff09;。 A.DE38 B.DEB8 C.7E58 D.5EB8 错…

现代交换技术学习笔记001

1、交换 在通信领域中&#xff0c;所谓交换&#xff0c;就是在通信网上&#xff0c;负责在通信的源和目的终端之间建立通信信道传送通信信息的机制&#xff08;控制&#xff09;。 2、通信网的组成&#xff08;三要素&#xff09; 交换设备&#xff0c;传输设备&#xff0c;终端…

【渝粤教育】电大中专中医基础知识 (3)作业 题库

1.“证”是指 A.疾病的体征与症状 B.对疾病的症状与体征的分析 C.对疾病某一阶段的病理概括 D.对疾病全过程规律的认识 E.对疾病的症状与体征的调查 错误 正确答案&#xff1a;左边查询 学生答案&#xff1a;未作答 2.中医学认识疾病和治疗疾病的基本思路是 A.恒动观念 B.同病异…

【渝粤教育】电大中专会计电算化作业 题库

1.下列有关会计电算化狭义概念的说法正确的是()。 A.以会计理论为主体的电子信息技术在会计工作中的应用 B.与实现电算化有关的所有工作 C.以电子计算机为主体的电子信息技术在会计工作中的应用 D.与实现电算化有关的主要工作 错误 正确答案&#xff1a;左边查询 学生答案&…

移动通信学习笔记_01概述

OSI 7层模型&#xff1a;应用层、表示层、会话层、传输层、网络层、数据链路层、物理层 TCP/IP共5层&#xff1a;物理层、数据链路层、网络层、传输层&#xff08;运输层&#xff09;、应用层 物理层&#xff1a;编码&#xff08;信道编码&#xff09;、调制 本课程&#xff1a…

java 绑定微信号开发_Java开发中的更多常见危险信号

java 绑定微信号开发在《 Java开发中的常见危险信号》一文中&#xff0c;我研究了一些不一定本身就是错误或不正确的做法&#xff0c;但它们可能表明存在更大的问题。 这些“红色标记”类似于“代码气味”的概念&#xff0c;我在这篇文章中引用的某些特定“红色标记”被称为“代…

【渝粤教育】电大中专学习指南_1作业 题库

1.中央广播电视中等专业学校&#xff08;&#xff09;颁发国民教育系列中等学历教育毕业证书的资格。 A.不具有 B.具有 错误 正确答案&#xff1a;左边查询 学生答案&#xff1a;A 2.并面向社会直接招收初中毕业生和在职青年举办&#xff08;&#xff09;职业教育。 A.高等 B.中…

【渝粤教育】电大中专就业指导 (6)作业 题库

1.&#xff08;&#xff09;给中职生就业带来的机遇和挑战 A.发展标准化服务业 B.一带一路 C.“十三五”规划 正确 正确答案&#xff1a;左边查询 学生答案&#xff1a;C 2.最受企业欢迎的人才应具备&#xff08;&#xff09;素质 A.文化认同、敬业精神、团队意识、创新思想、应…

计算机二级office学习之PPT操作题考点整理

考点1 新建幻灯片 01 大纲级别 S1、word中&#xff1a;选择格式相似的文本-段落大纲级别&#xff1b; S2、打开PPT&#xff1a;新建幻灯片-幻灯片从大纲-选择word文档。 (S3、不保留原素材的格式&#xff09;在预览窗口ctrlA&#xff0c;右键重设幻灯片。 注&#xff1a;若无法…