天天看點

Hazelcast入門指南第6部分

這是有關Hazelcast的一系列文章中的第六篇。 如果一個人沒有看過過去的五年,請到表中的内容後 ,我建立趕上。

本地客戶

在上一篇文章之後,我決定要去本地化。 是的,我将示範Hazelcast自己的Java用戶端。 Java不是唯一的本地用戶端語言,C ++和C#風格可用于企業版。

為什麼要本地化?

這是一個好問題。 本地客戶可以将其固定在一條産品線中,而沒有機會逃脫。 Hazelcast通過以下方式獎勵本地人:

  • 用戶端是叢集的一部分。 這意味着人們可以建立存儲資料的場所,并監聽叢集中發生的事件。 這也意味着我之前的文章中讨論的所有技巧都可以用作用戶端。 此優勢不可低估。
  • 配置檔案類似。 這意味着不必從Hazelcast配置檔案轉換為用戶端配置檔案。 一個人可以複制檔案,就像魔術一樣起作用。 翻譯要做的越少,丢失的内容就越少。

任何客戶的經驗法則

Hazelcast客戶是我有幸設定和使用的最簡單的用戶端。

這個簡單的示例是上一篇文章開始的主題的延續,緩存了昂貴的操作。

Pom檔案

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.darylmathison</groupId>
    <artifactId>HazelcastJavaClient</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.7</maven.compiler.source>
        <maven.compiler.target>1.7</maven.compiler.target>
    </properties>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <showDeprecation>true</showDeprecation>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <version>1.3.2</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>java</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <mainClass>com.darylmathison.hazelcastjavaclient.Main</mainClass>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <dependencies>
        <dependency>
            <groupId>com.hazelcast</groupId>
            <artifactId>hazelcast-client</artifactId>
            <version>3.3.2</version>
        </dependency>
    </dependencies>

</project>
           

客戶

該用戶端成為叢集的一部分,建立一個名為“ fibmap”的IMap。 如果以前沒有計算過斐波那契結果,則将其存儲在地圖中。 如果運作一次用戶端,則結果存儲在fibmap中。 第二次運作用戶端時,将顯示緩存的值。

package com.darylmathison.hazelcastjavaclient;

import com.hazelcast.client.HazelcastClient;
import com.hazelcast.core.HazelcastInstance;
import java.util.Map;

/**
 *
 * @author Daryl
 */
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        HazelcastInstance instance = HazelcastClient.newHazelcastClient();
        Map<Long, Long> cacheMap = instance.getMap("fibmap");
        
        for(long i = 1; i <= 10L; i++) {
            System.out.println("value is " + fibonacci(i, cacheMap));
        }
        instance.shutdown();
    }
    
    private static long fibonacci(long rounds, Map<Long, Long> cacheMap) {
        Long cached = cacheMap.get(rounds);
        if(cached != null) {
            System.out.print("cached ");
            return cached;
        }
        
        long[] lastTwo = new long[] {1, 1};
        
        for(int i = 0; i < rounds; i++) {
            long last = lastTwo[1];
            lastTwo[1] = lastTwo[0] + lastTwo[1];
            lastTwo[0] = last;
        }
        
        cacheMap.put(rounds, lastTwo[1]);
        return lastTwo[1];
     }

}
           

結論

在本文中,我讨論了使用Hazelcast的本機Java用戶端的原因。 我還展示了一個簡單的示例。 該代碼可以在這裡找到。

參考

當談到《 Hazelcast入門指南》時。 我一直在浏覽www.hazelcast.com和www.hazelcast.org 。

翻譯自: https://www.javacodegeeks.com/2015/02/beginners-guide-hazelcast-part-6.html