1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/zhoufn-r3

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.MD

R3 FRAMEWORK — Распределённая система обработки в реальном времени

Введение

R3 Framework — это распределённая система обработки, основанная на Spring, предназначенная для работы в реальном времени.

Логическая архитектура

Структура пакета

Пример конфигурации

Пример интерфейса

public interface SayHelloService {
    @Out(SayHelloOutHandler.class)
    @In(SayHelloInHandler.class)
    List<String> sayHello(List<String> names);
}

Класс разделения потока

public class SayHelloOutHandler extends OutHandler {
    @Override
    public List<Object[]> shard(Object[] parameters, int shardCount) throws Throwable {
        List<Object[]> result = new ArrayList<>();
        List<String> param = (List<String>) parameters[0];
        int perSize = param.size() / shardCount;
        for(int i=0;i<shardCount;i++){
            result.add(new Object[]{param.subList(i*perSize,(i!=shardCount-1?(i+1)*perSize:param.size()))});
        }
        return result;
    }
}

Класс объединения потока

public class SayHelloInHandler extends InHandler {
    @Override
    public Object join(Object[] results) throws Throwable {
        List<String> list = new ArrayList<>();
        for (Object object : results){
            list.addAll((List<String>)object);
        }
        return list;
    }
}

Реализация класса

public class SayHelloServiceImpl implements SayHelloService {
    @Override
    public List<String> sayHello(List<String> names) {
        List<String> newNames = new ArrayList<>();
        for (String name : names) {
            String newName = "hello " + name;
            newNames.add(newName);
        }
        return newNames;
    }
}

Worker-конец

<r3:application name="worker-1" host="AUTO" port="20080"></r3:application> 
<r3:registry address="localhost:2181" namespace="r3"></r3:registry> 
<r3:worker id="sayHelloWorker" ref="sayHelloServiceImpl" interface="r3.example.api.SayHelloService"></r3:worker> 
<bean id="sayHelloServiceImpl" class="r3.example.worker.SayHelloServiceImpl" scope="prototype"></bean>

Leader-конец

<r3:application name="leader-one" ></r3:application>
<r3:registry address="localhost:2181" namespace="r3"></r3:registry> 
<r3:leader id="sayHelloServiceImpl" interface="r3.example.api.SayHelloService"></r3:leader>

Описание свойств конфигурации

@Out интерфейс конфигурации

Аннотация класса, применяемая к интерфейсу API, используется для разделения параметров.

Атрибут Описание
value Пользовательский класс разделения параметров, который должен наследоваться от r3.flow.OutHandler

@In интерфейс конфигурации

Аннотация класса, используемая для объединения параметров в интерфейсе API.

Атрибут Описание
value Пользовательский класс объединения параметров, который должен быть унаследован от r3.flow.InHandler

Конфигурация приложения r3:

<r3:application name="worker-1" host="localhost" port="20080">

Атрибут Описание
name Имя приложения, обязательное поле, приложения с одинаковыми именами принадлежат одной группе, и только один из них будет использоваться в группе.
host Адрес прослушивания, по умолчанию «AUTO», если он установлен как «AUTO», он автоматически использует IP-адрес локального хоста. В случае нескольких сетевых карт вы можете вручную установить IP-адрес.
port Порт прослушивания, по умолчанию 20080.

Конфигурация реестра r3:

<r3:registry address="localhost:2181" namespace="r3">

Атрибут Описание
address Адрес центра регистрации zookeeper, по умолчанию localhost:2181.
namespace Пространство имён приложения для регистрации, корневой узел zookeeper по умолчанию r3.
sessionTimeout Время ожидания сеанса, в миллисекундах, по умолчанию 3000.
connectionTimeout Время ожидания соединения, в миллисекундах, по умолчанию 3000.
interval Интервал повторных попыток регистрации службы, в миллисекундах, по умолчанию 30 000.

Конфигурация рабочего r3:

<r3:worker id="sayHelloWorker" ref="SayHelloServiceImpl" interface="r3.example.api.SayHelloService">

Атрибут Описание
id Идентификатор spring bean.
ref Ссылка на spring bean.
interface Реализованный интерфейс класса.

Конфигурация лидера r3:

<r3:leader id="sayHelloServiceImpl" interface="r3.example.api.SayHelloService">

Атрибут Описание
id Идентификатор spring bean.
interface Интерфейс прокси-класса.
loadbalance Стратегия балансировки нагрузки, по умолчанию random, другие стратегии пока не поддерживаются.

Версия

Названия версий основаны на названиях планет.

План развития

  1. Внедрение концепции фильтров и предоставление модуля r3-filter.
  2. Введение механизма тайм-аута и повтора для лидера.
  3. Предоставление других стратегий балансировки нагрузки.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

R3 FRAMEWORK — распределённая система для обработки данных в реальном времени. Развернуть Свернуть
GPL-3.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/zhoufn-r3.git
git@api.gitlife.ru:oschina-mirror/zhoufn-r3.git
oschina-mirror
zhoufn-r3
zhoufn-r3
master