Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

Запускаем кластер Hazelcast 3.1 на платформe Jelastic в InfoboxCloud

Anna | 3.06.2014 | нет комментариев
В реальное время все большему числу компаний необходимы масштабируемые и отказоустойчивые приложения. Как правило в таких средах применяют несколько серверов приложений. Если Ваше приложение работает на нескольких серверах, может потребоваться расшаривать данными разными методами между серверами либо кэшировать Ваши данные для достижения особенно стремительного времени отклика. Hazelcast поможет нам в этом, разрешая легко шарить данные и распространять данные ваших приложений по каждому нодам кластера.

image

Данный пост всецело сосредоточен на кластеризации. Я покажу, как дозволено применять кластеризацию и платформу разделения данных Hazelcast на платформе Jelastic в облаке InfoboxCloud. Это дюже стремительный, верный, масштабируемый и дружелюбный к пользователю метод деплоя. Если вам необходимо разделять данные между большинством серверов, кластеризовать ваше Java –приложение, кэшировать ваши данные, предоставлять вашим серверам вероятность неопасных коммуникаций либо отказоустойчивого управления данными, Hazelcast – то, что вам нужно.

Hazelcast использует мультикаст для работы либо TCP/IP для сред, где мультикаст не доступен. А Jelastic отлично подходит для построения кластера Hazelcast. Давайте посмотрим, как эти две платформы работают совместно.

Регистрация в Jelastic и безвозмездный плюшки

Зарегистрироваться и получить доступ к Jelastic дозволено по этой ссылке. Первые 5 дней безвозмездный триал, дальше — переход в торговый режим и 3 клаудлета 1-й IP адрес — даром (дозволено перейти в торговый режим и прежде, Дабы получить бесплатные лимиты).

Создаем окружение

Залогиньтесь в Jelastic. Создаем среду на Tomcat 7, состоящую из нескольких инстансов (в нашем примере 4), устанавливаем лимиты масштабирования для клаудлетов и включаем IPv4.

image

Не пугайтесь ужасным цифрам на скриншоте (наивысшее значение), оно достигаемо только если ваша система непрерывно на 100% загружает все сервера при максимальных выделенных источниках, что в реальной жизни безусловно маловероятно. При моих испытаниях Hazelcast на 4 инстанса было выделено 13 клаудлетов (при том, что максимально в пик нагрузки может выделиться 132 клаудлета). В этом и прелесть облачных спецтехнологий — мы без задач переживем пик нагрузки и при этом нам необходимо платить только за реально потребляемые источники, а не неизменно за пиковые. К тому же ползунки управления вертикальным масштабированием дозволено поставить неизменно в рамки бюджета на серверы.

Ожидаем несколько минут и ваше окружение будет сделано.

Скачиваем Hazelcast

1. Идем на hazelcast.com и скачиваем конечный стабильный выпуск платформы:

image

Распакуйте скачанный архив.

Создание приложения

Давайте сотворим примитивный сервер на Java и клиентское приложение с применением кластера Hazelcast для развертывания на платформу Jelastic в облако InfoboxCloud в окружение, которое мы теснее сотворили (на самом деле деплоить дозволено куда желательно, тк в InfoboxCloud нет Vendor-lock и все спецтехнологии дозволено поставить и к себе на сервера, легко в облаке это делать значительно комфортнее).

Серверное приложение

1. Давайте сделаем Java класс серверного приложения и импортируем все нужные библиотеки Hazelcast, которые включены в загруженный пакет (hazelcast-x.x.x/lib). В нашем случае мы будем применять приложение, которое запускает 1-й сервер и использует map и queue пользователя:

package com.infoboxcloud;

import com.hazelcast.config.Config;
import com.hazelcast.config.JoinConfig;
import com.hazelcast.config.NetworkConfig;
import com.hazelcast.core.Hazelcast;
import com.hazelcast.core.HazelcastInstance;

import java.util.ArrayList;
import java.util.Map;
import java.util.Queue;

/**
 * Created by trukhinyuri on 05/12/13.
 */
public class HazelcastServer {
    public void run() {
        Config cfg = new Config();
        NetworkConfig networkConfig = cfg.getNetworkConfig();
        JoinConfig join = networkConfig.getJoin();
        join.getMulticastConfig().setEnabled(false);
        join.getTcpIpConfig().addMember("109.120.149.234").addMember("109.120.149.236").addMember("109.120.149.200").addMember("109.120.149.184").setEnabled(true);

        ArrayList<String> interfaces = new ArrayList<>();
        interfaces.add("109.120.149.234");
        interfaces.add("109.120.149.236");
        interfaces.add("109.120.149.200");
        interfaces.add("109.120.149.184");

        networkConfig.getInterfaces().setEnabled(true).setInterfaces(interfaces);

        HazelcastInstance instance = Hazelcast.newHazelcastInstance(cfg);
        Map<Integer, String> 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<String> 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());
    }
}

На заметку: в Jelastic Вы можете увидеть публичные IP адреса нажав на кнопку расширенного меню на вашей серверной ноде, как показано на скриншоте:

image

IP адреса в предыдущем коде — адреса публичной сети, взятые из панели управления Jelastic, у вас они будут другими.

2. Сотворим servlet listener, тот, что запустит ваш код механически позже развертывания:

package com.infoboxcloud;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

/**
 * Created by trukhinyuri on 05/12/13.
 */
public class AppServletContextListener implements ServletContextListener{
    @Override
    public void contextInitialized(ServletContextEvent servletContextEvent) {
        System.out.println("ServletContextListener started");
        new HazelcastServer().run();
    }

    @Override
    public void contextDestroyed(ServletContextEvent servletContextEvent) {
        System.out.println("ServletContextListener destroyed");
    }
}

3. Добавим секцию listener в ваш web.xml файл:
<?xml version=«1.0» encoding=«UTF-8»?>
<web-app xmlns=«java.sun.com/xml/ns/javaee»
xmlns:xsi=«www.w3.org/2001/XMLSchema-instance»
xsi:schemaLocation=«java.sun.com/xml/ns/javaee
java.sun.com/xml/ns/javaee/web-app_3_0.xsd»
version=«3.0»>
<display-name>infoboxcloud_demo</display-name>
<session-config>
<session-timeout>30</session-timeout>
</session-config>
<listener-class>com.infoboxcloud.AppServletContextListener</listener-class>

</web-app>

4. Соберем план в WAR архив.

Клиентское приложение

Сделаем Java класс с применением Hazelcast Native Java Client API. Мы будем применять пример, в котором добавим в конфигурацию все 4 ноды у отобразим Map Size:

package com.infoboxcloud;

import com.hazelcast.client.HazelcastClient;
import com.hazelcast.client.config.ClientConfig;
import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.core.IMap;

/**
 * Created by trukhinyuri on 05/12/13.
 */
public class Client {

    public static void main(String[] args) {
        ClientConfig clientConfig = new ClientConfig();
        clientConfig.addAddress("109.120.149.234:5701").addAddress("109.120.149.236:5107").addAddress("109.120.149.200:5107").addAddress("109.120.149.184:5107");
        HazelcastInstance client = HazelcastClient.newHazelcastClient(clientConfig);
        IMap map = client.getMap("customers");
        System.out.println("Map Size:"   map.size());
    }
}

Таким образом мы запустили Hazelcast на платформе Jelastic в облаке InfoboxCloud.

image

Безоговорочно на этом останавливаться не стоит, следственно в дальнейшей статье я расскажу про другие методы конфигурирования Hazelcast и настройки сети, разберемся глубже с вероятностями Hazelcast и потестируем, насколько он стремителен на нашем кластере.

Начальные тексты сервера и заказчика Hazelcast для тестирования на платформе InfoboxCloud Jelastic доступны здесь.

 Источник: programmingmaster.ru
Оставить комментарий
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB