官方介绍是分布式计算和存储的一个平台。ok,两点:
分布式的概念很成熟了,通俗来讲:假设将机器比喻成人,原本由一个人进行数据存储和计算,现在有多个人参与进行。
分布式存储:大家一起参与存储和备份,这样的好处是单个人的负荷小了,而且人多力量大,存储量也上去了。
分布式计算:同理,大家一起算,计算的效率和可计算的数据规模也就上去了。
分布式需要保证的地方也是司空见惯:一致性、高可用、容错性,也就是CPA原则,这个先不谈。
而各类平台对于参与存储和计算的算法机制那就是各有不同了,那么对于这些人的权力划分也是各有不同:
有的讲究人人平等,个个都一样。
有的是封建王朝,一人高级,太子次之,其他平等。
有的是议会制,一组人高级,其他平等。
可以看到,和现实社会极其相似,所以是计算机科学是数学也是社会学。
Hazelcast的成员机制官方称是人人平等,算第一种。 但是有这么个情况,Hazelcast存储会进行分区,然后这些分区由散列算法计算后会基本平均的分配给每个成员,Hazelcast会对这个分区信息进行记录形成一个分区表,而分区表的所有权是属于加入集群最早的那个节点成员,也称为主成员,然后由主成员进行分区表信息的更新,也是由他定时将分区表同步给其他节点,当他kill掉后会由第二早的节点顺位继承这个所有权,以此类推。所以就这么一点来看,还是有所不平等的。
Hazelcast 官方称不依赖于磁盘存储,将所有运行状态保存在集群的随机存取存储器 (RAM) 中,然后由集群成员的 RAM 组合成一个内存数据存储,这种分布式模型称为_缓存集群。_
Hazelcast 提供了多种数据存储结构,结合提供的API就注定能适应各种应用场景,比如结构Topic可应用到分布式主题(发布/订阅服务器)为智能手机构建可扩展的聊天服务器,
Hazelcast 所有数据都是分区存储的吗?
不是,不同数据结构存在不同存储方式,详情见[《Hazelcast 数据结构》
上诉得知,Hazelcast 本质是由各节点内存组成的,那么其实也就可以想象的到他的特点:计算速度快,根据他的特性,它可以大批量的添加节点,也就是大批量拓扑缓存,然后进行分布式计算,将算力分摊到各节点,他的计算优势可想而知。
于是乎,Hazelcast 就宣布,他们可以针对事件流和传统数据源进行一致的低延迟查询、聚合和有状态计算。
也即是说:Hazelcast 是可以对外提供算力的。
有意思的是第2点和第3点。
Executor service指出:将java代码提交,由集群执行然后返回结果。这一点的成立是建立在Hazelcast 存在嵌入式模式,可以以jar包的形式嵌入java程序,那么由这些java程序为节点组成的集群来执行提交者的代码,就可以分担其他节点的计算需求,且是异步执行的、可取消的,Hazelcast 官方称这个点主要适用于数据库查询、复杂计算和图像渲染。
官方称:Pipeline(管道)主要是处理批处理或实时流数据。
那么什么是批处理什么是流处理呢?
那么管道到底是什么呢?
其实就是对数据处理方法的定义。主要干三件事:
那么可以看见,管道类似一个工具,功能是批数据处理或是对流式数据的处理。
那么既然是工具,工具自身是不会工作的,比如一把锄头,它可以锄地,但锄头自己是不会锄地的,需要人去拿起来用它才能锄地,同理,管道只是一个方法,他自己是不会执行的,他需要提交给一个能把他执行起来的,那就是jet引擎。
也就是说Hazelcast 使用Pipeline将方法的定义和执行分开来做了,这样是有极大好处的:
1、方法的定义是灵活的,且基本没什么性能上的消耗。
2、一个系统负荷最大的就是对数据的处理,而此时Hazelcast的服务集群 接收到用户提交的管道任务后把这部分工作接管过来。你只需要告诉他你要做什么,怎么做,做完给谁,剩下的就不用管了,好似外包出去了,而这个外包效率还很高很可靠,那么这时候对这个系统来讲就太轻松了。
Jet 引擎是一个批处理和流处理系统,它允许 Hazelcast 成员以一致的低延迟对大量数据进行无状态和有状态计算。
jet怎么执行管道?
要让 Jet 引擎运行管道,必须将其提交给成员。到那时,管道就变成了一项_工作_。
当成员收到一份工作时,它会以有向无环图 (DAG) 的形式创建一个计算模型。使用此模型,计算被拆分为分布在集群中所有成员之间的任务,利用所有可用的 CPU 内核。该模型允许 Hazelcast 更快地处理数据,因为任务可以在集群中并行复制和执行。
jet使用与否有什么影响?
那么好,综上得知:jet是一个批处理和流处理的引擎系统,而在Hazelcast 中,管道是来负责数据的批处理和流处理,而管道只是Hazelcast 分布式计算的一种方式,所以得出结论:
只有当Hazelcast 在使用管道进行分布式计算的时候才会使用到jet引擎,其他任何工具任何情况下的使用都不受jet影响。