hazelcast 搭建_hazelcast教程 入门

2022-05-23 00:00:00 数据 集群 分布式 节点 内存

hazelcast教程-入门

近一直在研究hazelcast,被hazelcast简单的API操作和丰富的功能所震撼,但是困于中文文档的匮乏,所以想要编写一些关于hazelcast的一些教程文档,想要把hazelcast的功能详细的描述给大家。而这篇文档就是hazelcast的基本入门文档。

hazelcast是什么

hazelcast按照官网的介绍是基于内存的数据网格系统(In memory data grid)。基于内存的讲就是数据全部保存在内存中(比如memcached),网格系统是采用内存作为存储结构,并使其分布到多个服务器上,该方法的目的是更容易获取数据、改进其可扩展性和更好地进行数据分析。



hazelcast能做什么

hazelcast提供了丰富的功能:

分布式缓存

AtomicLong

AtomicReference

CountDownLatch

Cardinality Estimator Service (HyperLogLog)

IdGenerator

List

Lock

Map

MultiMap

Queues

Replicated Map

Ringbuffer

Semaphores

Set

Topic and ReliableTopic

分布式计算

Entry Processor

Executor Service

Scheduled Executor

Partition Predicate

User Defined Services

Fast Batch and Stream Processing

分布式查询

Fast Aggregations

Continuous Query

Listener with Predicate

Query

集成集群

Hibernate Second Level Cache

Tomcat Clustered Web Sessions

Jetty Clustered Web Sessions

Grails 3

Hazelcast JCS Resource Adapter

独立平台功能

JCache

Apache jclouds Support

看了上面这么多功能,是不是感觉有点头晕,没事,之后我会慢慢给大家讲解的。学习java的童鞋看了上面的功能是不是感觉很熟悉,没错,那就是很像java.util.*包下一些经常使用的API,但是他们并不是java自带的功能。而是hazelcast封装的一些对象,使得他们拥有分布式对象的能力,同时又可以让我们想操作map、list、set一样来操作方法。

查看更多...

hazelcast特性

横向拓展: 每一个节点都可以给集群提供cpu

弹性: 每个节点都允许宕机而没有数据的损失,并且不影响运行的应用程序

编程模型: 对于开发者来说非常容易的进行集群创建和拓展,就好像单节点一样简单

快速的、大数据: 允许非常大的数据操纵在内存中

动态拓展: 节点可以动态的添加到一个集群中

弹性主内存: 每一个节点RAM内存到集群中

基于内存的数据网络经常被用于缓存数据库的数据,来提高应用程序的性能,现在市面上比较出名的No-Sql数据库当属memcache和redis。memcache支持k/v数据结构,数据保存在内存中,每一个节点都是相互不可知,需要客户端来做负载均衡。redis支持k/v、set、list、zset、hash等数据结构,并且支持数据的持久保存,可以搭建集群架构。而hazelcast相对memcache和redis来说,提供了许多他们没有的功能,如分布式锁、分布式队列、分布式主题、分布式闭锁、分布式map等众多分布式工具类,方便在分布式环境下进行数据的操作。

hazelcast没有主节点和从节点之分,所有的节点都是平等的,所依当一个节点宕机之后,不会影响到应用程序。集群中的节点会备份各自节点部分的数据,当一个节点宕机之后,其他的节点会重新分区,恢复宕机节点数据。

hazelcast怎么使用

首先将hazelcast的dependency复制到项目pom.xml文件中,如果非maven项目,可以下载这两个jar复制到lib包即可,hazelcast没有依赖其他的jar包,使用非常方便。

com.hazelcast

hazelcast

3.8.5

com.hazelcast

hazelcast-client

3.8.5

代码集成

hazelcast提供了两种方式来使用hazelcast。

内嵌模式

在代码中直接开启hazelcast服务

Config config = new Config();

HazelcastInstance instance = Hazelcast.newHazelcastInstance(config);



客户端/服务端模式

在服务端开启hazelcast服务,然后客户端连接服务端。

ClientConfig clientConfig = new ClientConfig();

clientConfig.addAddress(HAZELCAT_HOST);

HazelcastInstance client = HazelcastClient.newHazelcastClient(clientConfig);



代码示例

public class GettingStarted {

public static void main(String[] args) {

Config cfg = new Config();

HazelcastInstance instance = Hazelcast.newHazelcastInstance(cfg);

Map mapCustomers = instance.getMap("customers");

mapCustomers.put(1, "Joe");

mapCustomers.put(2, "Ali");

mapCustomers.put(3, "Avi");

System.out.println("Customer with key 1: "+ mapCustomers.get(1));

System.out.println("Map Size:" + mapCustomers.size());

Queue queueCustomers = instance.getQueue("customers");

queueCustomers.offer("Tom");

queueCustomers.offer("Mary");

queueCustomers.offer("Jane");

System.out.println("First customer: " + queueCustomers.poll());

System.out.println("Second customer: "+ queueCustomers.peek());

System.out.println("Queue size: " + queueCustomers.size());

}

}

代码示例中首先使用内嵌的方式开启hazelcast服务,并且获取hazelcast实例对象,然后获取Map对象、Queue对象,然后就可以像我们经常使用的Map、Queue一样来对数据进行增加、更新、查询和删除了。
————————————————
版权声明:本文为CSDN博主「大菠萝盖」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_32616931/article/details/111985895

相关文章