Это реализация фреймворка RPC.
В свободное время я написал этот RPC-фреймворк для обучения и использования (для онлайн-применения лучше использовать зрелый RPC-фреймворк, например, Dubbo, gRPC и т. д.).
Этот фреймворк был протестирован в моём проекте, его производительность превосходна, и по сравнению с фреймворком Dubbo код более лёгкий. Если вы хотите изучить RPC-фреймворк, то чтение исходного кода этого фреймворка — лучший выбор (некоторые части кода основаны на Dubbo).
В этом RPC-фреймворке реализованы:
Пример вызова:
— серверная часть:
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 )