Это шестой пост в серии постов о 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"?><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> |
клиент
Этот клиент становится частью кластера, создает 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 .
| Ссылка: | Руководство для начинающих по Hazelcast, часть 6, от нашего партнера по JCG Дэрила Матисона в блоге Дэрила Матисона на Java- блоге. |