Patrzyłem na Hazelcast i znalazłem dobre integracje z Springboot. Chcę jednak zrozumieć, czy to jest lub jeśli potrzebujemy serwerów Hazelast, aby wykonać realne wdrożenie. Czy ktoś może wskazywać resouce, gdzie mogę spojrzeć na konfigurację

1
user3310115 25 luty 2019, 15:55

2 odpowiedzi

Najlepsza odpowiedź

Możesz uruchomić Hazelast w trybie wbudowanym - gdzie węzły klastra Hazelastów są kolokowane za pomocą klientów aplikacji - lub w trybie serwera klienta, gdzie klaster Hazelast jest oddzielny od klientów aplikacji. Oba mogą być używane do produkcji. Wbudowany jest na ogół łatwiejsze do szybkiego wstania. Serwer klient może być lepszy, jeśli chcesz mieć możliwość melodii i skalowania klastra niezależnie od klientów aplikacji.

Zobacz https://support.hazelcast.com/hc/en-us/articters/115004441586-What-s-the-difference-between-served-vs-amplate-topologies-

Jedyna zmiana kodu aplikacji do przełączania między architekturami jest linia kodu, która instancja klienta

Hazelcast.newHazelcastInstance(); // creates an embedded client instance

Podczas

Hazelcast.newHazelcastClient(); // creates a server client instance

Polecam podręcznik odniesienia jako ostatecznego źródła opcji konfiguracji i sposobu osiągnięcia tego, czego potrzebujesz

https://docs.hazelcast.org/docs/latest/manual/html-single/

3
Mike Yawn 25 luty 2019, 13:22

Polecam przejść przez podręcznik odniesienia. Ale chciałbym również podzielić się, jak wdrożyłem instancje Hazelast na serwerach produkcyjnych i jak go użyłem.

Krok 1: Utwórz plik konfiguracyjny XML.

 <?xml version="1.0" encoding="UTF-8"?>
     <hazelcast
    xsi:schemaLocation="http://www.hazelcast.com/schema/config https://hazelcast.com/schema/config/hazelcast-config-3.9.xsd"
    xmlns="http://www.hazelcast.com/schema/config"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     <group>
    <name>"your_service_name"</name>
    <password>"service_password_chosen"</password>
</group>

<properties>
    <property name="hazelcast.partition.count">83</property>
</properties>

<management-center enabled="true" update-interval="3">--url--</management-center>
<network>
    <join>
        <multicast enabled="false"/>
        <aws enabled="false"></aws>
        <tcp-ip enabled="true">
            <member>"internal ip of your instance"</member>
            <member>"internal ip of other instance</member>
        </tcp-ip>
    </join>
</network>

<map name="*.ttl3hr">
    <max-size policy="USED_HEAP_PERCENTAGE">3</max-size>
    <eviction-policy>LFU</eviction-policy>
    <statistics-enabled>true</statistics-enabled>
    <backup-count>0</backup-count>
    <async-backup-count>1</async-backup-count>
    <read-backup-data>true</read-backup-data>

    <time-to-live-seconds>10800</time-to-live-seconds>  <!--3 hours-->
</map>

Krok 2: Dodaj @EnableCaching i dodaj fasolę w pliku opatrzonym z @Configuration.

@Bean
public CacheManager cacheManager(HazelcastInstance hazelcastInstance) {
    return new com.hazelcast.spring.cache.HazelcastCacheManager(hazelcastInstance);
}

Krok 3: Następnie możesz adnotować metody za pomocą adnotacji @Cacheable.

@Cacheable(cacheNames = "your_cache_name")
public POJO foo(Parameter1 parameter1,
        Parameter2 parameter2) {
    return pojoRepository.findByParameters(parameter1, parameter2);
}
0
Abhishek Patyal 25 luty 2019, 15:36