使用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,一经查实,立即删除!

相关文章

2020-12-15通信原理

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

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…

现代交换技术学习笔记001

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

移动通信学习笔记_01概述

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

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

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

计算机二级考前急救之Word(上)

一、文件选项卡 &#xff08;思维导图来源&#xff1a;小黑老师&#xff09; 1、另存为PDF格式&#xff1a;&#xff08;另存为快捷键&#xff1a;F12&#xff09; 2、去掉兼容模式&#xff1a;文件-信息-转换 3、删除不可见的内容&#xff1a;文件-信息-检查文档&#xff08…

参数化测试 junit_使用JUnitParams进行参数化的JUnit测试

参数化测试 junit参数化的单元测试用于在不同条件下测试相同的代码。 借助参数化的单元测试&#xff0c;我们可以建立一种测试方法&#xff0c;该方法从某个数据源中检索数据。 该数据源可以是测试数据对象&#xff0c;外部文件甚至数据库的集合。 一般的想法是使使用相同的单元…

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

考点1 页面设置 页面布局-页边距、纸张方向、纸张大小、打印区域、页面背景、打印标题、页眉页脚、缩印 页面布局-选中打印区域-打印标题-顶端标题行-选中第二行 考点2 获取外部数据和删除重复值 1、获取外部数据 1.1 自网页 右击文件-打开方式为IE浏览器&#xff08;360可…

Jsoup V的幕后秘密:优化的技巧和窍门

我们做对了&#xff0c;现在是时候更快地做事了。 我们会牢记Donald Knuth的警告&#xff1a;“大约97&#xff05;的时间&#xff0c;我们应该忘记效率低下&#xff1a;过早的优化是万恶之源”。 根据Jonathan Hedley的介绍&#xff0c;他使用YourKit Java Profiler来测量内存…

计算机二级选择题复习整理(公共基础部分)

主要列个人不太熟悉或较为重要的点&#xff0c;不求全。 一、计算机基础 1、计算机最早应用领域是数值计算 2、冯诺依曼型体系计算机引进概念&#xff1a;二进制、存储程序 3、CAD&#xff1a;设计&#xff1b;CAM&#xff1a;制造&#xff1b;CAI&#xff1a;教育&#xff1…

移动通信学习笔记03_蜂窝原理

教学大纲&#xff1a;组网技术 基本内容&#xff1a;典型的多址接入技术&#xff1b;话务量与呼损率的计算&#xff1b;蜂窝的概念、频率复用原则和区群的概念&#xff1b;信道的分配策略和分配原则&#xff1b;蜂窝系统的基本网络结构和各部分的功能&#xff1b;切换和漫游&am…

01_2_数字基带传输及其频谱特性

一、数字基带信号的表示 g(t)g(t)g(t)是一个基本的脉冲&#xff0c;有不同形状&#xff1b;ana_nan​从信源出来的信息码序列&#xff0c;只有电平特性。 二、功率谱密度的推导过程 ① 广义平稳随机信号的自相关函数和功率谱密度之间互为傅立叶变换关系 ② 计算基带信号的自相…

Linux环境变量剖析

一、什么是环境变量 概念&#xff1a;环境变量&#xff08;environment variables&#xff09;一般是指在操作系统中用来指定操作系统运行环境的一些参数&#xff0c;是在操作系统中一个具有特定名字的对象&#xff0c;它包含了一个或多个应用程序所将使用到的信息&#xff0c…

APIGEE:用于API代理的CI / CD管道

在本文中&#xff0c;我们将看到如何为APIGEE API代理创建CI / CD管道。 我已经参考了APIGEE社区上同一主题的几篇文章。 这些给了一些关于如何为API代理设置CI / CD管道的想法。 这是我用来设置CI / CD的工具。 詹金斯 节点 蜂胶 新人 APIGEE管理API 确保已创建APIGEE边…

01_3基带传输的常用码型和码间串扰

第十七讲 基带传输的常用码型和码间串扰 第一节 基带传输的常用码型 一、数字基带信号的编码规则 基带传输对信号的要求&#xff08;即独立又有联系&#xff09; 对传输码型的要求&#xff1a;原始消息码必须编成适合于信道传输用的码型&#xff08;码型的选择&#xff09; …

移动通信考前预习_第1章_无线通信系统概述

下周考试&#xff0c;开始预习。 第一章为概念&#xff0c;直接copyPPT。 第1章 无线通信系统概述 一、移动通信发展 1、第一代 80年代——模拟通信时代&#xff08;1G&#xff09; 典型系统&#xff1a;AMPS系统&#xff08;先进移动电话系统&#xff09;、TACS系统&#…

java 调试 工具_Java调试器–权威的工具列表

java 调试 工具Java调试是一个复杂的空间。 调试器的类型很多&#xff0c;工具也很多。 在此页面中&#xff0c;我们将介绍7种类型的调试器之间的区别&#xff0c;并查看每个类别中的主要工具&#xff0c;以帮助您为正确的工作选择正确的工具。 以下是我们介绍的调试器类型&a…

移动通信考前预习_第2章_蜂窝技术

一、蜂窝的概念 1、系统级的概念&#xff1a;用许多小功率的发射机&#xff08;小覆盖区&#xff09;来代替单个的大功率发射机&#xff08;大覆盖区&#xff09;&#xff0c;每个小覆盖区只提供服务范围内的一小部分覆盖。 2、不需要做技术上的重大修改&#xff0c;没有增加额…

移动通信蜂窝原理例题整理

目的很功利&#xff1a;会做题。 So~~上题&#xff01;&#xff01;&#xff01; 1、求波长和天线长度。 不接地天线长度是半波长整数倍&#xff0c;接地是1/4波长整数倍&#xff08;地面镜像效应&#xff09;。 2、大区制小区制概念理解 举例&#xff1a;30个双向信道 1、大…

spss三次指数平滑_17 统计学:SPSS基础

内容目录为什么要学习SPSSspss发展史spss操作界面spss基本使用方式SPSS的常用操作数据管理spss制作图表使用spss进行描述统计分析1.为什么要学习SPSS统计分析软件是数据分析的主要工具统计设计完成后&#xff0c;完整的分析过程包括数据的搜集数据的整理数据的分析结果的报告统…