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

OSCHINA-MIRROR/tianai-tianai-rpc

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

TIANAI-RPC

Это реализация фреймворка RPC.

В свободное время я написал этот RPC-фреймворк для обучения и использования (для онлайн-применения лучше использовать зрелый RPC-фреймворк, например, Dubbo, gRPC и т. д.).

Этот фреймворк был протестирован в моём проекте, его производительность превосходна, и по сравнению с фреймворком Dubbo код более лёгкий. Если вы хотите изучить RPC-фреймворк, то чтение исходного кода этого фреймворка — лучший выбор (некоторые части кода основаны на Dubbo).


В этом RPC-фреймворке реализованы:

  • сервисная регистрация на основе ZooKeeper и Nacos;
  • удалённое взаимодействие на основе Netty;
  • сериализация и десериализация на основе Hessian2 и Protostuff;
  • балансировка нагрузки на основе стратегии опроса и случайной весовой стратегии;
  • механизм сердцебиения на основе встроенного механизма Netty;
  • восстановление после разрыва соединения из-за сетевых колебаний;
  • добавление функций перехватчика для удобства настройки логики и интеграции других фреймворков;
  • модульное управление на основе SPI для удобства расширения модулей.

Разработчики Springboot могут напрямую перейти к tianai-rpc-springboot-starter.

Пример вызова:

— серверная часть:

public class RpcServerImplTest2 {

    CountDownLatch countDownLatch = new CountDownLatch(1);

    public static void main(String[] args) throws InterruptedException {
        ServerBootstrap serverBootstrap = new ServerBootstrap();
        serverBootstrap.codec("protostuff")
                .timeout(5000)
                // Устанавливаем сервисную регистрацию как zookeeper, поддерживая zookeeper и nacos два сервиса регистрации
                .registry(new URL("zookeeper", "127.0.0.1", 2181))
                .server("netty")
                .port(20881)
                .start();
        // Регистрация
        serverBootstrap.register(Demo.class, new DemoImpl());
        System.out.println("Запуск успешен");
    }
}

— клиентская часть:

public class RpcClientTest {

    public static void main(String[] args) {
        RpcClientConfiguration prop = new RpcClientConfiguration();
        // Сериализация, по умолчанию protostuff
        prop.setCodec("protostuff");
        // Тайм-аут, по умолчанию 5000
        prop.setTimeout(5000);
        // Запрос тайм-аута, по умолчанию 3000
        prop.setRequestTimeout(3000);
        // Устанавливаем клиент как netty, по умолчанию netty
        prop.setProtocol("netty");

        // Сервисная регистрация, в настоящее время поддерживает zookeeper и nacos две, по умолчанию zookeeper
        // Устанавливаем службу регистрации как nacos
        // URL nacosConf = new URL("nacos", "127.0.0.1", 8848);
        // nacosConf = nacosConf.addParameter("namespace", "1ca3c65a-92a7-4a09-8de1-4bfe1c89d240");

        // Устанавливаем регистрацию службы как zookeeper
        prop.setRegistryUrl(new URL("zookeeper", "127.0.0.1", 2181));
        // Регистратор

        // Удаленный клиент
        Demo proxy = RpcProxyFactory.create(Demo.class, prop, RpcProxyType.JDK_PROXY);
        for (int i = 0; i < 20; i++) {
            // Выполнение RPC запроса
            String res = proxy.sayHello();
            System.out.println("rpc вызов возвращает данные:" + res);
        }
    }
}

— QQ группа: 1021884609

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

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

Введение

Лёгкий RPC-фреймворк, который также можно использовать для коммуникации RPC в небольших и средних проектах. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

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

Участники

все

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

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