предисловие
SOFARPC возникла из внутренней HSF Alibaba и представляет собой хорошо масштабируемую, высокопроизводительную среду Java RPC производственного уровня, исходный код которой недавно открыла компания Ant Financial. SOFA-RPC разрабатывался в Ant Financial более десяти лет и стремится упростить вызовы RPC между приложениями. Обеспечьте удобную, прозрачную, стабильную и эффективную схему удаленного вызова службы «точка-точка» для приложений.
Чтобы упростить функциональное расширение для пользователей и разработчиков, SOFA-RPC предоставляет богатые абстракции моделей и расширяемые интерфейсы, включая фильтры, маршрутизацию и балансировку нагрузки. В то же время он предоставляет богатые решения для управления микросервисами на основе инфраструктуры SOFA-RPC и окружающих ее компонентов.
Другие статьи
текст
1. Особенности
- Прозрачный, высокопроизводительный удаленный вызов службы
- Поддержка нескольких стратегий маршрутизации услуг и балансировки нагрузки.
- Он поддерживает различные интегрированные реестры
- Поддержка Bolt, Rest, Dubbo и других протоколов связи.
- Поддержка синхронизации, односторонняя, обратный вызов, обобщение и другие методы вызова
- Поддержка отказоустойчивости кластера, прогрев службы, автоматическая изоляция сбоев
- Мощная функция расширения, каждый функциональный компонент может быть расширен по мере необходимости
2. Принцип реализации
а. Сервисный релиз
Когда приложение SIFARPC запускается, если текущее заявление необходимо публиковать службу RPC, то SIFARPC регистрирует эти услуги в Центр регистрации услуг. Сервис, указывающий на реестр, как показано на рисунке.
б. Подписка на услуги
Когда приложение SOFARPC, которое ссылается на эту службу, запускается, оно подписывается на информацию о метаданных соответствующей службы из реестра служб. После получения запроса на подписку реестр службы передаст список метаданных издателя рефереру службы в режиме реального времени. Как показано на рисунке, реестр указывает на ссылку.
в. Сервисный вызов
Когда реферер службы получает адрес, он может выбрать адрес для инициации вызова. Как показано на рисунке, Reference указывает на Service.
3. Быстрый старт
3.1 Знакомство с зависимостями дивана-RPC
<dependencies>
<dependency>
<groupId>com.alipay.sofa</groupId>
<artifactId>sofa-rpc-all</artifactId>
<version>5.3.1</version>
</dependency>
</dependencies>
3.2 Напишите интерфейс службы и класс реализации службы
HelloService.java
public interface HelloService {
String sayHello(String string);
}
HelloServiceImpl.java
public class HelloServiceImpl implements HelloService {
@Override
public String sayHello(String string) {
System.out.println("Server receive: " + string);
return "hello " + string + " !";
}
}
3.3 Написание класса запуска поставщика услуг
QuickStartServer.java
public class QuickStartServer {
public static void main(String[] args) {
ServerConfig serverConfig = new ServerConfig()
.setProtocol("bolt") // 设置一个协议,默认bolt
.setPort(9696) // 设置一个端口,默认12200
.setDaemon(false); // 非守护线程
ProviderConfig<HelloService> providerConfig = new ProviderConfig<HelloService>()
.setInterfaceId(HelloService.class.getName()) // 指定接口
.setRef(new HelloServiceImpl()) // 指定实现
.setServer(serverConfig); // 指定服务端
providerConfig.export(); // 发布服务
}
}
Запустите поставщика сервера, и вывод журнала будет следующим:
Sofa-Middleware-Log SLF4J Warn : No log util is usable, Default app logger will be used.
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Sofa-Middleware-Log SLF4J Warn : No log util is usable, Default app logger will be used.
3.4 Написать класс запуска потребителя службы
QuickStartClient.java
public class QuickStartClient {
public static void main(String[] args) {
ConsumerConfig<HelloService> consumerConfig = new ConsumerConfig<HelloService>()
.setInterfaceId(HelloService.class.getName()) // 指定接口
.setProtocol("bolt") // 指定协议
.setDirectUrl("bolt://127.0.0.1:9696"); // 指定直连地址
HelloService helloService = consumerConfig.refer();
while (true) {
System.out.println(helloService.sayHello("world"));
try {
Thread.sleep(200);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
Запустите потребителя сервера и позвоните поставщику услуг:
- Вывод журнала поставщика услуг выглядит следующим образом:
Server receive: world
Server receive: world
Server receive: world
Server receive: world
- Вывод журнала потребителя службы выглядит следующим образом:
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Sofa-Middleware-Log SLF4J Warn : No log util is usable, Default app logger will be used.
Sofa-Middleware-Log SLF4J Warn : No log util is usable, Default app logger will be used.
hello world !
hello world !
hello world !
hello world !
резюме
Это пример быстрого старта!
Можно обнаружить, что в использовании SOFA-RPC мало чем отличается от Dubbo Taobao и Motan Weibo. Dubbo существует как полный набор средств управления сервисами, а SOFA-RPC — это просто облегченная структура RPC, основанная на преобразовании структуры HSF для предоставления более полного, мощного и разнообразного API-интерфейса программирования RPC.
Добро пожаловать в технический публичный аккаунт: Zero One Technology Stack
Эта учетная запись будет продолжать делиться сухими товарами серверных технологий, включая основы виртуальных машин, многопоточное программирование, высокопроизводительные фреймворки, асинхронное ПО, промежуточное ПО для кэширования и обмена сообщениями, распределенные и микросервисы, материалы для обучения архитектуре и расширенные учебные материалы и статьи.