Apache Ignite内存数据组织平台是一个高性能、集成化、混合式的企业级分布式架构解决方案,核心价值在于可以帮助我们实现分布式架构透明化,开发人员根本不知道分布式技术的存在,可以使分布式缓存、计算、存储等一系列功能嵌入应用内部,和应用的生命周期一致,大幅降低了分布式应用开发、调试、测试、部署的难度和复杂度。

4.2.Ignite服务网格

Ignite服务网格以一种优雅的方式实现了分布式RPC,定义一个服务非常简单:

下面通过一个简单的示例演示下Ignite服务的定义、实现、部署和调用:

4.2.1.服务定义

public interface MyCounterService {int get() throws CacheException;
}

4.2.2.服务实现

public class MyCounterServiceImpl implements Service, MyCounterService {@Override public int get() {return 0;}
}

4.2.3.服务部署

ClusterGroup cacheGrp = ignite.cluster().forCache("myCounterService");
IgniteServices svcs = ignite.services(cacheGrp);
svcs.deployNodeSingleton("myCounterService", new MyCounterServiceImpl());

4.2.4.服务调用

MyCounterService cntrSvc = ignite.services().serviceProxy("myCounterService", MyCounterService.class, /*not-sticky*/false);
System.out.println("value : " + cntrSvc.get());

是不是很简单?

关于服务网格的详细描述,请看这里。

4.3.Ignite计算网格

Ignite的分布式计算是通过IgniteCompute接口提供的,它提供了在集群节点或者一个集群组中运行很多种类型计算的方法,这些方法可以以一个分布式的形式执行任务或者闭包。

本方案中采用的是ComputeTask方式,它是Ignite对于简化内存内MapReduce的抽象。ComputeTask定义了要在集群内执行的作业以及这些作业到节点的映射,还定义了如何处理作业的返回值(Reduce)。所有的IgniteCompute.execute(...)方法都会在集群上执行给定的任务,应用只需要实现ComputeTask接口的map(...)reduce(...)方法即可,这几个方法的详细描述不在本文讨论的范围内。

下面是一个ComputeTask的简单示例:

IgniteCompute compute = ignite.compute();
int cnt = compute.execute(CharacterCountTask.class, "Hello Grid Enabled World!");
System.out.println(">>> Total number of characters in the phrase is '" + cnt + "'.");
private static class CharacterCountTask extends ComputeTaskSplitAdapter<String, Integer> {@Override public List<ClusterNode> split(int gridSize, String arg) {String[] words = arg.split(" ");List<ComputeJob> jobs = new ArrayList<>(words.length);for (final String word : arg.split(" ")) {jobs.add(new ComputeJobAdapter() {@Override public Object execute() {System.out.println(">>> Printing '" + word + "' on from compute job.");return word.length();}});}return jobs;}@Override public Integer reduce(List<ComputeJobResult> results) {int sum = 0;for (ComputeJobResult res : results)sum += res.<Integer>getData();return sum;}
}

通过这样一个简单的类,就实现了梦寐以求的分布式计算!

关于计算网格的详细描述,请看这里。

参考:http://www.infoq.com/cn/articles/ignite-lucene-log4j2-log-query

转载于:https://www.cnblogs.com/bonelee/p/6794894.html

Apache Ignite——集合分布式缓存、计算、存储的分布式框架相关推荐

  1. redis分布式缓存php,基于redis分布式缓存实现

    第一:Redis 是什么? Redis是基于内存.可持久化的日志型.Key-Value数据库 高性能存储系统,并提供多种语言的API. 第二:出现背景数据结构(Data Structure)需求越来越 ...

  2. mllib逻辑回归 spark_Spark架构详解——分布式流计算内存批处理迭代运算框架

    #Spark# #大数据# #Hadoop# #streaming# #分布式计算# Spark:基于内存的高速集群计算框架.对mapreduce进行优化,在内存中进行迭代运算.可以使用Java,Py ...

  3. mybatis缓存二级缓存_MyBatis缓存与Apache Ignite的陷阱

    mybatis缓存二级缓存 一周前,MyBatis和Apache ignite 宣布支持apache ignite作为MyBatis缓存(L2缓存). 从技术上讲,MyBatis支持两个级别的缓存: ...

  4. MyBatis缓存与Apache Ignite的陷阱

    一周前,MyBatis和Apache ignite 宣布支持apache ignite作为MyBatis缓存(L2缓存). 从技术上讲,MyBatis支持两个级别的缓存: 本地缓存,默认情况下始终启用 ...

  5. apache ignite_使用Apache Ignite优化Spark作业性能(第1部分)

    apache ignite 来看看他们是如何工作的! 本文的某些部分摘自我的书< Apache Ignite的高性能内存计算> . 如果您对这篇文章感兴趣,请查看本书的其余部分,以获取更多 ...

  6. 使用Apache Ignite优化Spark作业性能(第1部分)

    快来看看他们是如何工作的! 本文的某些部分摘自我的书< Apache Ignite的高性能内存计算> . 如果您对这篇文章感兴趣,请查看本书的其余部分,以获取更多有用的信息. Apache ...

  7. apache ignite_使用Spring Data的Apache Ignite

    apache ignite Spring Data提供了一种统一而简便的方法来访问不同类型的持久性存储,关系数据库系统和NoSQL数据存储. 它位于JPA之上,添加了另一层抽象并定义了基于标准的设计以 ...

  8. apache ignite_使用Apache Storm和Apache Ignite进行复杂事件处理(CEP)

    apache ignite 在本文中, "使用Apache Ignite进行高性能内存计算"一书的作者将讨论使用Apache Strom和Apache Ignite进行复杂的事件处 ...

  9. Apache Ignite本机持久性,简要概述

    通过将数据的工作集放入系统内存中,内存中方法可以达到极高的速度. 当所有数据都保存在内存中后,处理使用传统旋转磁盘引起的问题的需求就消失了. 例如,这意味着无需维护数据的其他缓存副本并管理它们之间的同 ...

最新文章

  1. 一个fork短码的扩展版本
  2. 十个最常用的JVM 配置参数
  3. 线性模型系数解读中的那些坑,以套索回归(LASSO)和岭回归(Ridege)为例
  4. MFC菜鸟学编程——第一篇
  5. MongoDB3.6.3 windows安装配置、启动
  6. 优化 | 利用SciPy求解非线性规划问题
  7. Oracle数据库中的SOUNDEX函数
  8. TCP中的Flag options
  9. android 函数式编程_Android开发人员的函数式编程-第1部分
  10. [Mojava 10.14.4] Clover隐藏多余分区, 原来可以这么简单
  11. linux服务器重启init 6和reboot区别
  12. 吴恩达机器学习 逻辑回归 作业3(手写数字分类) Python实现 代码详细解释
  13. 【java】二维数组的应用
  14. 使用GDB跟踪redis源代码执行get命令的过程
  15. iOS 面试题整理(带答案)二
  16. 权重衰减(weight decay)
  17. excel几个表合成一张_【一分钟Excel】如何快速合并多个工作表
  18. 新Word文档借用旧文档的部分样式
  19. 油管视频目录正则整理
  20. 112-RTKLIB中关于dcb文件读取的问题

热门文章

  1. linux 命令博客,Linux 命令
  2. python贪吃蛇_如何用Python写一个贪吃蛇?
  3. redis常用命令getex_Redis常用命令详细介绍(摘抄)
  4. python tablewidget综合实例_python – 仅通过单击行标题选择QTableWidget行
  5. python实现归一化去噪_二维FFT的归一化处理
  6. 计算机默认存储格式,office2007默认保存文件格式的修改方法
  7. c语言 switch案例,C语言程序设计 2. switch语句的运用 案例 switch条件语句.docx
  8. python3 装饰器_Python3 装饰器
  9. oauth最后的确认按钮_spring-oauth集成cas单点登录,登陆完成进入授权页面后,按回退按钮进入404页面的问题...
  10. Java程序员校招蚂蚁金服,mysql培训考试