README: English | китайский язык
Что такое BootNettyRpc?
BootNettyRpc — это инфраструктура Rpc, реализованная Netty, подходящая для проектов Spring Boot и поддерживающая Spring Cloud. В настоящее время поддерживаются версии Spring Boot 1.5.x, а версии Spring Cloud — версии D и E.
как использовать?
Он делится на локальный запуск и комбинированный запуск Spring Cloud. Подробности см. в примере case.Теперь для иллюстрации используется локальный кейс, а кейс Spring Cloud опущен.
BootNetTyRPC включает в себя серверную и клиентскую части.
Сторона сервера
Добавьте зависимости в файл pom:
<dependency>
<groupId>io.github.forezp</groupId>
<artifactId>boot-netty-rpc-core</artifactId>
<version>1.0.5</version>
</dependency>
скопировать код
Добавьте аннотацию @EnableNettyRpc в стартовый проект Spring Boot, вам нужно включить сканирование пакетов, вы можете оставить его пустым, оно будет сканировать глобально, что немного влияет на скорость запуска, например ExampleRpcServerApplication в примере:
@SpringBootApplication
@EnableNettyRpc(basePackages = "com.forezp")
public class ExampleRpcServerApplication {
public static void main(String[] args) {
SpringApplication.run( ExampleRpcServerApplication.class, args );
}
}
скопировать код
Настройте порт Netty Server и имя Netty Server в файле конфигурации, и имя будет именем вызова клиента.
server:
port: 7001
netty.server.name: server
netty.server.port: 6001
скопировать код
Напишите сервис со следующим интерфейсом:
public interface IGreeting {
String sayHello(String name);
}
скопировать код
Класс реализации выглядит следующим образом:
@Service
public class Greeting implements IGreeting {
@Override
public String sayHello(String name) {
return "hi "+name;
}
}
скопировать код
Клиент
Добавьте следующие зависимости в pom-файл проекта:
<dependency>
<groupId>io.github.forezp</groupId>
<artifactId>boot-netty-rpc-core</artifactId>
<version>1.0.5</version>
</dependency>
скопировать код
Добавьте аннотацию @EnableNettyRpc в класс запуска SpringBoot следующим образом:
@SpringBootApplication
@EnableNettyRpc(basePackages = "com.forezp")
@RestController
public class ExampleRpcClientApplication {
public static void main(String[] args) {
SpringApplication.run( ExampleRpcClientApplication.class, args );
}
}
скопировать код
В файле конфигурации Spring Boot application.yml добавьте следующую конфигурацию, где имя — это имя серверной части, одно и то же имя можно настроить для нескольких экземпляров службы, а балансировка нагрузки при опросе используется по умолчанию.
netty:
clients:
- name: server
host: localhost
port: 6001
- name: server
host: localhost
port: 6001
скопировать код
Вызывающий сервис должен написать интерфейс и написать аннотацию @RpcClient на интерфейсе Имя должно быть именем поставщика услуг, и требуется rpcClz, который является классом поставщика услуг.
@RpcClient(name = "server", rpcClz = "com.forezp.localrpcserver.api.Greeting")
public interface IGreeting {
String sayHello(String name);
}
скопировать код
@Autowired
IGreeting greeting;
Object object = greeting.sayHello( "hi" );
скопировать код
свяжитесь со мной
Если у вас есть какие-либо вопросы и предложения, пожалуйста, свяжитесь со мной, моя электронная почтаmiles02@163.com
Функции, которые были реализованы
- rpc (реализация синхронных и асинхронных вызовов)
- Балансировка нагрузки
- Изоляция пула потоков интерфейса
- Доступ к Эврике
- отслеживание ссылок доступа
- Мониторинг доступа
- Доступ к почтовому ящику тревог
- Оптимизация производительности rpc (требуется непрерывная оптимизация)
План на будущее
- Доступ к различным сериализациям, чтобы их можно было настроить
- Пользовательский протокол, индекс трассировки указывать не нужно
- Консул доступа
- Поддержка весенней загрузки 2.0 Spring Cloud F