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

OSCHINA-MIRROR/zbwq-artemis-rpc

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

Основы лёгкого RPC-фреймворка Artemis-RPC на базе Netty

Текущая версия: 0.3.5

Введение

Artemis-RPC — это лёгкий RPC-фреймворк, основанный на Netty, который использует Kryo для сериализации и десериализации данных, а Zookeeper — в качестве центра регистрации.

Определение RPC-интерфейса

См. модуль artemis-demo-api.

public interface DemoService {
    Demo loadDemo (String id );
}

Необходимо хранить RPC-интерфейс и его реализацию в разных модулях.

Публикация RPC-сервиса

См. модуль artemis-demo-provider.

Шаг 1: Добавление зависимостей Maven

pom.xml

<!-- RPC Common API -->
<dependency>
    <groupId>kim.artemis</groupId>
    <artifactId>artemis-demo-api</artifactId>
    <version>${artemis.version}</version>
</dependency>

<!-- RPC Core -->
<dependency>
    <groupId>kim.artemis</groupId>
    <artifactId>artemis-core</artifactId>
    <version>${artemis.version}</version>
</dependency>
  • RPC Common API: зависимость модуля, где находится интерфейс RPC.
  • RPC Core: зависимость сервера RPC.

Шаг 2: Реализация RPC-интерфейса

@Slf4j
@ArtemisRpcService
public class DemoServiceImpl implements DemoService {

    @Override
    public String demo(String str) {
        log.info(">>>>>>> Вызов успешен");
        return str.concat(" Вызов успешен");
    }

}
  • Необходимо использовать аннотацию ArtemisRpcService для указания RPC-интерфейса.

Шаг 3: Конфигурация RPC-сервера

@Configuration
public class ArtemisConfiguration {

    private String address = "127.0.0.1:2181";

    @Bean
    public ArtemisRpcServerFactory artemisRpcServerFactory () {
        ArtemisRpcServerFactory artemisRpcServerFactory = new ArtemisRpcServerFactory();
        artemisRpcServerFactory.setRegistry("Zookeeper");
        artemisRpcServerFactory.setAddress(address);
        artemisRpcServerFactory.setPort(19427);
        return artemisRpcServerFactory;
    }

}

Шаг 4: Запуск RPC-сервиса

@SpringBootApplication
public class ArtemisDemoProviderApplication {

    public static void main(String[] args) {
        SpringApplication.run(ArtemisDemoProviderApplication.class, args);
    }

}

Сначала запустите Zookeeper. Затем запустите класс ArtemisDemoProviderApplication, чтобы опубликовать RPC-сервис и зарегистрировать его в Zookeeper.

Вызов RPC-сервиса

См. модуль artemis-demo-consumer.

Шаг 1: Добавление зависимостей Maven

pom.xml

<!-- RPC Common API -->
<dependency>
    <groupId>kim.artemis</groupId>
    <artifactId>artemis-demo-api</artifactId>
    <version>${artemis.version}</version>
</dependency>

<!-- RPC Core -->
<dependency>
    <groupId>kim.artemis</groupId>
    <artifactId>artemis-core</artifactId>
    <version>${artemis.version}</version>
</dependency>
  • RPC Common API: зависимость модуля с интерфейсом RPC.
  • RPC Core: зависимость клиента RPC.

Шаг 2: Конфигурация RPC-потребителя

@Configuration
public class ArtemisConfiguration {

    private String address = "192.168.0.102:2181";    

    @Bean
    public ArtemisRpcClientFactory artemisRpcClientFactory () {
        ArtemisRpcClientFactory artemisRpcClientFactory = new ArtemisRpcClientFactory();
        artemisRpcClientFactory.setRegistry("Zookeeper");
        artemisRpcClientFactory.setAddress(address);
        return artemisRpcClientFactory;
    }

}

Шаг 3: Вызов RPC-сервиса

@RestController
public class DemoController {

    @ArtemisRpcReference()
    DemoService demoService;

    @GetMapping("/demo")
    public String demo (String id) {
        long startTime = System.currentTimeMillis();
        Demo demo = demoService.loadDemo(id);
        long endTime = System.currentTimeMillis();
        long timeLong = endTime - startTime;
        double timeDouble= Double.parseDouble(Long.toString(timeLong));
        log.info("Время выполнения метода: " + timeDouble+ " миллисекунд, или " + timeDouble/(double)1000 + " секунд");
        log.info("demo: " +demo.toString());
        return demo.toString();
    }

}
  • Необходимо использовать ArtemisRpcReference для указания интерфейса RPC.

Шаг 4: Запуск RPC-потребителя

@SpringBootApplication
public class ArtemisDemoConsumerApplication {

    public static void main(String[] args) {
        SpringApplication.run(ArtemisDemoConsumerApplication.class, args);
    }

}

Запустите класс ArtemisDemoConsumerApplication, чтобы получить ответ от сервиса через Zookeeper и установить соединение с сервером при первом запросе.

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

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

Введение

Описание недоступно Развернуть Свернуть
GPL-3.0
Отмена

Обновления

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

Участники

все

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

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