Статьи

Руководство для начинающих по Hazelcast, часть 6

Это шестой пост в серии постов о Hazelcast. Если кто-то не прочитал последние пять, перейдите к содержанию, которое я создал, чтобы наверстать упущенное.

Родные клиенты

После последнего поста я решил, что поеду родным. Да, я собираюсь продемонстрировать собственный Java-клиент Hazelcast. Java — не единственный язык, на который приходят нативные клиенты, для корпоративной версии доступны версии C ++ и C #.

Почему Go Native?

Это хороший вопрос. Родные клиенты могут сохранить один фиксированный в продуктовой линейке без шансов сбежать. Hazelcast награждает того, кто становится нативным, следующим:

  • Клиент является частью кластера. Это означает, что можно создавать места для хранения данных и прослушивания событий, происходящих в кластере. Это также означает, что все приемы, которые обсуждались в моих предыдущих постах, могут быть использованы в качестве клиента. Это преимущество нельзя недооценивать.
  • Файл конфигурации похож. Это означает, что нет необходимости переводить файл конфигурации Hazelcast в файл конфигурации клиента. Можно скопировать файл и, как по волшебству, он работает. Чем меньше нужно переводить, тем меньше теряется.

Правило любого клиента

Клиенты Hazelcast — самые простые, которые я когда-либо имел удовольствие настроить и использовать.

пример

Этот простой пример является продолжением темы, начатой ​​в последнем посте , кеширование дорогостоящих операций.

Файл Пом

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<?xml version="1.0" encoding="UTF-8"?>
    <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>

клиент

Этот клиент становится частью кластера, создает IMap с именем «fibmap». Результат Фибоначчи сохраняется на карте, если он не был рассчитан ранее. Если клиент запускает один раз, результаты сохраняются в fibmap. При втором запуске клиента отображаются кэшированные значения.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
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];
     }
 
}

Вывод

В этой статье я обсудил причины использования нативного Java-клиента Hazelcast. Я также показал быстрый пример того, как его использовать. Код можно найти здесь .

Ссылка

Когда дело доходит до Руководства для начинающих по Hazelcast. Я всегда смотрю на www.hazelcast.com и www.hazelcast.org .