Перейти к основному содержанию

Обзор

ActiveJ RPC - это легкая и удобная библиотека Java для разработки высоконагруженных распределенных приложений и Memcached-подобных решений. Он представляет полностью альтернативный подход к реализации микросервисов и преодолевает накладные расходы при использовании протокола HTTP с кодировкой JSON или XML. ActiveJ RPC работает на базе самого быстрого в мире JVM-сериализатора ActiveJ Serializer, работает на TCP, поддерживает конвейерные запросы и имеет собственный высокопроизводительный протокол двоичной потоковой передачи. Наряду с этим, ActiveJ RPC использует модуль Datastream для асинхронной обработки данных и контроля обратного давления. В него также встроены часто используемые стратегии RPC и высокая отказоустойчивость.

Почему именно ActiveJ RPC?#

  • Выдающаяся производительность до ~15M запросов в секунду на одном ядре процессора
  • Простой API для определения обработчиков сообщений клиента и сервера
  • Широкий спектр стратегий RPC (первый доступный, круговая порука, хэширование рандеву и т.д.), которые можно просто комбинировать
  • Пользовательский высокопроизводительный протокол потоковой передачи
  • Использует модули ActiveJ Datastream, Net и Serializer для достижения максимальной производительности.
  • Отказоустойчивость с повторным подключением к резервным серверам и серверам-репликам
  • Встроенная поддержка конвейеризации сообщений
  • Идеально подходит для серверов близкого к реальному времени с бизнес-логикой, специфичной для конкретного приложения
  • Испытано в условиях высокой нагрузки

Асинхронный двоичный протокол RPC с широкими облачными стратегиями#

ActiveJ RPC имеет высоко оптимизированную гибкую реализацию сервера и клиента наряду с предопределенными облачными стратегиями. С помощью этих технологий можно удобно создавать даже сложные масштабируемые решения , такие как высокопроизводительные микросервисы или похожие на Memcached серверы.

RpcServer rpcServer(Eventloop eventloop) {    return RpcServer.create(eventloop)        .withMessageTypes(String.class)        .withHandler(String.class, String.class,                request -> Promise.of("Hello " + request))        .withListenPort(SERVICE_PORT);}
RpcClient rpcClient(Eventloop eventloop) {    return RpcClient.create(eventloop)        .withMessageTypes(String.class)        .withStrategy(server(new InetSocketAddress(SERVICE_PORT)));}
rpcClient.sendRequest("World")    .whenResult(response -> System.out.println(response)); // prints "Hello World"

Добавьте ActiveJ RPC в свой проект#

Вы можете добавить ActiveJ RPC в свой проект, импортировав его репозиторий Maven. Эта документация охватывает последний выпуск ActiveJ RPC v5.0-beta2 (см. на Github или Maven).