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

OSCHINA-MIRROR/tigerJayjay-easyrpc

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

EasyRpc

1.1. Введение

EasyRpc — это простой в использовании, лёгкий RPC-фреймворк с быстрой и удобной работой, который постоянно оптимизируется.

1.2. Архитектура программного обеспечения

1.2.1 Описание

Основан на SpringBoot, использует Netty для связи и Protobuff для сериализации.

1.2.2 Архитектура

введите описание изображения

1.2.3 Особенности

  • Поддержка одномашинного или кластерного многоверсионного мультигруппового выпуска, а также клиентского мультигруппового мультиверсионного внедрения. Поддерживает глобальную и аннотированную конфигурацию, более гибкое внедрение сервисов.
  • Серверы и клиенты поддерживают сердцебиение и автоматическое переподключение, обеспечивая стабильную и своевременную передачу сообщений.
  • Поддерживает автоматическое обнаружение сервисов и регистрацию сервисов.
  • Неиспользуемые сервисы используют механизм голосования. Когда клиент или сервер отключены, они инициируют голосование. Если в течение указанного времени существует любой клиент, подключённый к серверу, считается, что отключение произошло из-за колебаний сети, и выполняется попытка повторного подключения. Если в указанное время ни один клиент не подключён к серверу, сервис считается недоступным, и он удаляется из реестра, а соответствующий объект клиента удаляется из кэша клиента. При следующем вызове сервиса он будет воссоздан. Если другой клиент обнаружит, что сервис недоступен во время голосования (по умолчанию 10 секунд), он не будет повторно голосовать за этот сервис, а только получит окончательный результат голосования, чтобы определить, следует ли повторно подключиться или удалить локальный объект клиента.

1.3. Использование

  1. Добавьте @EnableEasyrpc в класс запуска SpringBoot по умолчанию, просканируйте пакет класса запуска и нижележащие пакеты.
  2. Используйте @Exporter для непосредственного раскрытия сервиса.
  3. Используйте @Fetcher для прямого импорта удалённых сервисов в свойства интерфейса, напрямую вызывая свойства интерфейса для использования удалённых сервисов, как если бы они были локальными.
  4. jdk1.8+

1.4. Примечания

  • Сервер должен реализовывать интерфейс, а клиент должен вызывать интерфейс удалённо.
  • @Fetcher аннотация должна быть добавлена к свойствам управляемого Spring Bean, чтобы импортировать удалённый объект службы.
  • В application.properties сервера используйте easyrpc.server.port = xxx для указания порта, раскрытого сервером.
  • Клиент использует easyrpc.client.remoteUrl = 127.0.0.1:8888,127.0.0.1:8889 для указания глобального адреса службы, также можно использовать @Fetcher аннотацию url для переопределения, последний имеет приоритет, и если указано несколько адресов, будет выбран случайный адрес для подключения к удалённому сервису. Если используется реестр, remoteUrl должен использовать реальный IP-адрес хоста, а не localhost или 127.0.0.1

1.5. Конфигурация

1.5.1 Конфигурация сервера

  • easyrpc.server.enable: включить функцию сервера, по умолчанию false
  • easyrpc.server.port: указать порт, открытый сервером, обязательно
  • easyrpc.server.service.version: указать номер версии удалённого сервиса, по умолчанию ""
  • easyrpc.server.service.group: указать группу удалённого сервиса, по умолчанию ""
  • easyrpc.server.service.serviceName: указать имя удалённого сервиса, по умолчанию полное имя интерфейса

1.5.2 Конфигурация клиента

  • easyrpc.client.enable: включить клиентскую функцию, по умолчанию false
  • easyrpc.client.remoteUrl: указать адрес удалённого сервиса, формат (ip1:port1,ip2:port2), поддержка реестра не требуется
  • easyrpc.client.service.version: указать версию удалённого сервиса, по умолчанию ""
  • easyrpc.client.service.group: указать группу удалённого сервиса, по умолчанию ""
  • easyrpc.client.service.serviceName: указать имя удалённого сервиса, по умолчанию полное имя интерфейса
  • easyrpc.client.service.scan: создать прокси-bean для всех сервисов в указанном пакете, управляемых spring, которые могут быть внедрены через аннотации свойств spring. Если эта опция включена, @Fetcher не требуется, эта опция требует настройки version и group на уровне клиента, и если easyrpc.client.service.serviceName не настроено, то по умолчанию используется полное имя интерфейса для внедрения удалённого сервиса
  • easyrpc.client.rpcTimeout: время ожидания вызова удалённой службы, по умолчанию 5000 миллисекунд
  • easyrpc.client.retryInterval: интервал повторных попыток клиента, по умолчанию 5 секунд
  • easyrpc.client.retryCount: количество повторных попыток клиента, по умолчанию без ограничений
  • easyrpc.client.urlStrategy: стратегия получения адреса сервера (random: случайная, polling: циклическая), по умолчанию random

1.5.3 Конфигурация реестра

Easyrpc использует redis в качестве реестра, поддерживая одиночный и режим дозорного.

  • easyrpc.registry.enable: включить поддержку реестра, по умолчанию false
  • easyrpc.registry.voteWait: время ожидания результата голосования, по умолчанию 10 секунд
  • easyrpc.registry.voteInterval: интервал голосования, по умолчанию 30 секунд
  • easyrpc.registry.redis.host: IP-адрес redis, необходимо указать
  • easyrpc.registry.redis.port: порт redis, необходимо указать
  • easyrpc.registry.redis.password: пароль redis, укажите при необходимости
  • easyrpc.registry.redis.timeout: время ожидания соединения redis, в миллисекундах, по умолчанию 2000
  • easyrpc.registry.redis.pool.xxx: поддерживает все атрибуты класса redis.clients.jedis.JedisPoolConfig, укажите при необходимости
  • easyrpc.registry.redis.mode: режим redis, включая single (одиночный режим), sentinel (режим дозорного), по умолчанию одиночный режим
  • easyrpc.registry.redis.masterName: конфигурация в режиме дозорного, режим дозорного должен быть указан
  • easyrpc.registry.redis.sentinelUrl: адрес дозорного режима, формат <url_1:port_1,url_2:port_2>, например: 127.0.0.1:57003,127.0.0.1:57004, режим дозорного должен быть указан

1.5.4 Глобальная конфигурация

  • easyrpc.auto: включить автоматическую настройку, по умолчанию true
  • easyrpc.net.host: указать собственный IP-адрес, этот параметр имеет более высокий приоритет, чем hostPre, если не указан, следуйте правилам конфигурации hostPre. Укажите при необходимости
  • easyrpc.net.hostPre: указать IP-адрес, соответствующий префиксу, в качестве собственного IP-адреса (несколько сетевых карт). Если не удаётся получить sitelocal IP, получить linklocal IP, если всё ещё не удаётся, вернуть loopback адрес. Укажите при необходимости

1.6. Функции, ожидающие обновления

  • Механизм расширения точки
  • Интерфейс вызова данных просмотра

1.7. Примеры использования

1.7.1 Импорт зависимостей

<!-- https://mvnrepository.com/artifact/com.github.tigerjayjay/easyrpc -->
<dependency>
    <groupId>com.github.tigerjayjay</groupId>
    <artifactId>easyrpc</artifactId>
    <version>V1.0.1</version>
</dependency>

1.7.2 Клиент

  • Включить поддержку Easyrpc
@EnableEasyrpc
@SpringBootApplication
public class EasyrpcclientApplication {
    public static void main(String[] args) throws ClassNotFoundException {
        SpringApplication.run(EasyrpcclientApplication.class, args);
    }
}
  • Включить клиентскую поддержку
easyrpc.client.enable=true
  • Импортировать удалённые сервисы
@Component
public class ConsumerTest {
    public static AtomicInteger count = new AtomicInteger(0);
    @Fetcher(url = "127.0.0.1",version = "1.0",group = "default")
    private ITest iTest;
    public void test(){
        iTest.test("Hello World");
    }
}

1.7.3 Сервер

  • Включить поддержку Easyrpc
@EnableEasyrpc
@SpringBootApplication
public class EasyrpcclientApplication {

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

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

Введение

Простой в использовании RPC-фреймворк. Основан на Spring Boot, использует Redis в качестве регистрационного центра, поддерживает автоматическое обнаружение и регистрацию сервисов. Расширить Свернуть
Apache-2.0
Отмена

Обновления (1)

все

Участники

все

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

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