Hazelcast:高可扩展内存数据网格

hazelcast

Hazelcast是一个开源的可扩展的内存数据网格(In-Memory Data Grid)。

主要功能

  • 分布式数据结构
    • AtomicLong
      IAtomicLong、java.util.concurrent.atomic.AtomicLong的分布式实现,提供了大多数的AtomicLong操作,比如get、set、getAndSet、compareAndSet 和 incrementAndGet。
    • AtomicReference
      IAtomicReference、java.util.concurrent.atomic.AtomicReference 的分布式实现,提供对象引用的 compare-and-set 和 get-and-set 操作,以确保在集群上操作的原子性。
    • CountDownLatch
      ICountDownLatch、java.util.concurrent.CountDownLatch 的分布式实现,同步操作的实现目标,在集群中的多个应用实例中的一个或多个线程等待另一个线程完成 set 操作。
    • IdGenerator
      IdGenerator,是一个分布式id生成器。
    • List
      Hazelcast 的 List 类似于 Hazelcast 的 Set,但是允许重复的元素同时也保存元素的顺序。
    • Lock
      ILock 是 java.util.concurrent.locks.Lock 的分布式实现。
    • Map
      Hazelcast 的 Map(IMap)继承了 java.util.concurrent.ConcurrentMap 接口。是Java Map的分布式实现。
    • MultiMap
      Hazelcast 的 MultiMap 是可以在一个key存储多个value的特殊的Map。
    • Queues
      Hazelcast 的分布式队列是 java.util.concurrent.BlockingQueue 的分布式实现,允许所有集群中的成员使用。
    • Replicated Map
      不像IMap通过分块来平衡集群中的数据,ReplicatedMap 复制集群中的所有map保存在内存中。
    • Ringbuffer
      Hazelcast 的 Ringbuffer 是无锁的分布式数据结构,数据存储在类似环状的结构中。
    • Semaphores
      Hazelcast 的 ISemaphore 是 java.util.concurrent.Semaphore 的分布式实现。
    • Set
      Hazelcast 的Set是java.util.Set的分布式实现。
    • Topic and ReliableTopic
      Hazelcast 提供了集群范围内的消息的发布订阅模型(pub/sub)。
  • 分布式计算
    • Entry Processor
      一个 Entry processor 允许在内存中快速的操作map,不必担心锁和并发问题。
    • Executor Service
      Hazelcast 的 IExecutorService 是 java.util.concurrent.ExecutorService 的分布式实现。提供了在一个JVM上提交任务,在另一个上面处理的能力。
    • User Defined Services
      Hazelcast 的 SPI(Service Provider Interface)模块允许用户开发自己的分布式数据结构和服务。
  • 分布式查询
    • Aggregators
      基于Hazelcast 的MapReduce框架,Aggregators是现成的数据聚合器。典型的操作有求和、找最大最小值、计算平均值等。
    • Listener with Predicate
      Listener with Predicate允许用户监听map的修改操作。
    • MapReduce
      MapReduce是在分布式环境下处理大数据的软件框架。
    • Query
      Hazelcast支持在分布式的map中,执行查询操作。
  • 集成的聚类
    • Hibernate二级缓存
      Hazelcast为Hibernate实体、集合和查询提供了分布式的二级缓存。
    • Grails 3
      这个插件可以集成Hazelcast的分布式数据框架到你的grails应用程序中。
    • Hazelcast JCS资源适配器 Hazelcast JSC资源适配器是一个用于Java应用连接到Hazelcast集群的系统级软件驱动。
  • 标准
    • JCache
      从3.3.1版本起,Hazelcast提供符合规范的JCache实现。
    • Apache jclouds支持 Hazelcast支持Apache jclouds API,允许应用部署到多个不同基础设施的云生态系统。
  • 云和虚拟化支持
    • Amazon Web Services
      Hazelcast的AWS云模块帮助Hazelcast集群的成员发现彼此并在AWS上形成集群。
    • Azure Cloud Discovery
      Azure的DiscoveryStrategy通过返回VM提供了所有在你的资源组中标记了特殊值的Hazelcast实例。
    • Discovery Service Provider Interface (SPI)
      Hazelcast的Discovery是一个外部云发现机制的扩展SPI。Discovery基于过滤器和提供相应ip地址的查找其他Hazelcast实例。
    • Docker
      Docker容器将Hazelcast包装进一个包含了所有运行所需要组件的完整的文件系统:代码、runtime、系统工具、系统库。 可以使用下列容器部署你的Hazelcast工程。Docker上已经有了如下镜像:

      • Hazelcast
      • Hazelcast Enterprise
      • Hazelcast Management Center
      • Hazelcast OpenShift
    • Kubernetes
      Kubernetes是一个Docker容器的开源编排系统。用于处理调度到集群中节点上,且管理工作负载,以确保节点状态符合用户的预期。
    • Apache jclouds
      Hazelcast支持Apache jclouds的API,允许应用以云基础设施无关性的方式部署到不同的云上。
    • Zookeper Discovery
      Hazelcast Zookeeper Discovery插件提供了一个通过Apache Curator和Zookeeper服务器交流的基于发现策略的服务。
  • 存储
    • On-Heap
      On-Heap存储是指在Java堆内存中出现的对象(也属于GC)。Java堆内存是Java可以保留和用于动态内存分配的内存空间。默认情况下堆内存的大小是128M,这在企业级应用程序中是不够用的。Java应用创建的所有的运行时对象都保存在堆内存中。一旦堆内存满了,新的对象就不能创建,且Java应用也会报错。
  • 集群管理
    • 每个节点的JMX API
      Hazelcast的成员提供了多种管理接口,包括分布式数据结构的统计和内部节点状态等。JMX的API允许你访问这些数据:

      • Atomic Long (IAtomicLong)
      • Atomic Reference (IAtomicReference)
      • Countdown Latch (ICountDownLatch)
      • Executor Service (IExecutorService)
      • List (IList)
      • Lock (ILock)
      • Map (IMap)
      • MultiMap (MultiMap)
      • Replicated Map (ReplicatedMap)
      • Queue (IQueue)
      • Semaphore (ISemaphore)
      • Set (ISet)
      • Topic (ITopic)
      • Hazelcast Instance (HazelcastInstance)
    • 每个节点的API统计
      通过统计API可以从分布式数据结构中采集大量的统计数据。API如下:

      • Map统计
      • Multimap统计
      • Queue统计
      • Topic统计
      • Executor统计
  • 服务器协议
    • Memcache客户端
      一个用任何语言编写的Memcache客户端可以直接和Hazelcast集群对话。
    • Open Binary Client Protocol and Client Implementation Guide
      Hazelcast的新客户端-服务端协议现在支持版本控制和简单客户端实现。
    • REST
      从管理中心暴露出的集群REST API允许监控集群和统计分布式对象。
  • 智能客户端
    • .NET客户端
      可以使用本地.NET客户端连接到Hazelcast节点。
    • C++客户端
      可以用本地C++客户端连接到Hazelcast节点并执行几乎所有的操作。C++客户端的功能:

      • 访问分布式数据结构(IMap,IQueue,MultiMap,ITopic等)。
      • 访问业务的分布式数据结构(TransactionalMap,TransactionalQueue)。
      • 向集群添加监听器和进入分布式数据结构监听器的能力。
      • 分布式的同步机制通过ILock,ISemaphore和IcountDownLatch。
    • Java客户端
      本地客户端(Java,C#,C++)允许在不是集群成员的情况下执行几乎所有的Hazelcast操作。Java客户端是功能最全的客户端。
    • Java智能客户端的Near Cache允许将数据子集缓存到本地内存。
    • 便携的序列化
      作为已存在的序列化的替代方法,Hazelcast提供了一个语言、平台无关的便携式序列化方法,好处如下:

      • 支持相同对象类型的多个版本。
      • 不依赖反射获取某个属性值。
      • 没有反序列化和/或反射的查询和索引。
    • Pluggable Serialization
      由于Hazelcast是分布式系统,放入Hazelcast中的Java对象需要序列化。数据存储在多个节点的不同分区内。你需要的数据或许不在本地机器上,Hazelcast需要从其他机器上取回数据,这就需要序列化数据。 Hazelcast把数据全部序列化到com.hazelcast.nio.serialization.Data的实例。数据是对象的二进制表示。序列化用于:

      • 加入到map中的key/value对象。
      • 放入queue/set/list中的项。
      • 使用一个executor service发送的一个runnable对象。
      • map中执行的entry处理。
      • 一个锁住的对象。
      • 发往topic的消息。
    • Python客户端
      Python客户端是新的Hazelcast客户端二级制协议的实现。
    • Node.js客户端
      可以使用Hazelcast的Node.js客户端连接到Hazelcast节点。
    • Scala API
      Hazelcast的Scala API是“软”API,比如扩展了Java API而不是替换。
  • 大数据
    • Hazelcast Apache Spark Connector
      Hazelcast Apache Spark Connector允许Hazelcast Map和Cache被用作通过Spark RDD API共享RDD缓存。支持Java和Scala Spark API。
    • Hazelcast Mesos Integration
      Hazelcast Mesos Integration模块支持将Hazelcast部署到Mesos集群。

开发文档

官方网站:https://hazelcast.org/
开源地址:https://github.com/hazelcast/hazelcast

打赏支持我整理更多优质资源,谢谢!

打赏编辑

打赏支持我整理更多优质资源,谢谢!

任选一种支付方式

1 收藏

资源整理者简介:刘立华

java开发,技术爱好者,乐于助人。 个人主页 · 贡献了32个资源 · 1 ·  


直接登录

推荐关注

按分类快速查找

关于资源导航
  • 伯乐在线资源导航收录优秀的工具资源。内容覆盖开发、设计、产品和管理等IT互联网行业相关的领域。目前已经收录 1440 项工具资源。
    推送伯乐头条热点内容微信号:jobbole 分享干货的技术类微信号:iProgrammer