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

OSCHINA-MIRROR/mirrors-rpcx

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

stable branch: v1.7.x development branch: master

Official site: http://rpcx.io/

License GoDoc github actions Go Report Card coveralls QQ3群

Notice: etcd

since rpcx 1.7.6, some plugins have been moved to the independent project:

etcd plugin has been moved to rpcx-etcd; — zookeeper plugin has been moved to rpcx-zookeeper; — consul plugin has been moved to rpcx-consul; — redis plugin has been moved to rpcx-redis; — influxdb plugin has been moved to rpcx-plugins; — opentelemetry plugin has been moved to rpcx-plugins.

Announce

A tcpdump-like tool added: rpcxdump。 You can use it to debug communications between rpcx services and clients.

Cross-Languages

you can use other programming languages besides Go to access rpcx services.

rpcx-gateway: You can write clients in any programming languages to call rpcx services via rpcx-gateway; — http invoke: you can use the same http requests to access rpcx gateway; — Java Services/Clients: You can use rpcx-java to implement/access rpcx services via raw protocol; — rust rpcx: You can write rpcx services in rust by rpcx-rs.

If you can write Go methods, you can also write rpc services. It is so easy to write rpc applications with rpcx.

Installation

install the basic features:

go get -v github.com/smallnest/rpcx/...

If you want to use quickcp registry, use those tags to go getgo build or go run. For example, if you want to use all features, you can:

go get -v -tags "quic kcp" github.com/smallnest/rpcx/...

tags: — quic: support quic transport; — kcp: support kcp transport.

Which companies are using rpcx?

Features

rpcx is a RPC framework like Alibaba Dubbo and Weibo Motan.

rpcx is created for targets:

  1. Simple: easy. Основные особенности:
  • Простота разработки.
  • Лёгкость интеграции.
  • Удобство развёртывания.

Производительность: высокая производительность (≥ grpc-go).

Кроссплатформенность: поддержка raw slice of bytes, JSON, Protobuf и MessagePack. Теоретически может использоваться с Java, PHP, Python, C/C++, Node.js, C# и другими платформами.

Управление сервисами и обнаружение сервисов: поддержка ZooKeeper, etcd и Consul.

Содержит следующие функции:

  • Поддержка функций Go без определения протофайлов.
  • Возможность расширения функций, таких как управление сервисами, трассировка.
  • Поддержка TCP, HTTP, QUIC и KCP.
  • Поддержка различных кодеков, таких как JSON, Protobuf, MessagePack и raw bytes.
  • Обнаружение сервисов. Поддержка peer2peer, настроенных пиров, ZooKeeper, etcd, Consul и mDNS.
  • Отказоустойчивость: Failover, Failfast, Failtry.
  • Балансировка нагрузки: поддержка Random, RoundRobin, Consistent hashing, Weighted, качества сети и географии.
  • Сжатие данных.
  • Передача метаданных.
  • Авторизация.
  • Heartbeat и односторонний запрос.
  • Другие функции: метрики, логирование, таймаут, алиас, автоматический выключатель.
  • Двунаправленная коммуникация.
  • Доступ через HTTP для написания клиентов на любом языке программирования.
  • API-шлюз.
  • Резервное копирование запросов, разветвление и широковещание.

RPCX использует двоичный протокол и не зависит от платформы, что позволяет разрабатывать сервисы на других языках, таких как Java, Python, Node.js и использовать другие языки программирования для вызова сервисов, разработанных на Go.

Существует менеджер пользовательского интерфейса RPCX-UI.

Производительность

Результаты тестов показывают, что RPCX имеет лучшую производительность по сравнению с другими фреймворками RPC, за исключением стандартной библиотеки RPC.

Код бенчмарка можно найти в репозитории rpcx-benchmark.

«Слушайте других, но проверяйте сами».

Среда тестирования

  • Процессор: Intel(R) Xeon(R) CPU E5-2630 v3 @ 2.40GHz, 32 ядра.
  • Память: 32 ГБ.
  • Go: 1.9.0.
  • ОС: CentOS 7 / 3.10.0-229.el7.x86_64.

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

  • Protobuf.
  • Клиент и сервер на одном сервере.
  • Объём полезной нагрузки 581 байт.
  • 500/2000/5000 одновременных клиентов.
  • Имитация времени обработки: 0 мс, 10 мс и 30 мс.

Результаты теста

Имитация 0 мс времени обработки

Пропускная способность Среднее время задержки Время задержки P99

Имитация 10 мс времени обработки

Пропускная способность Среднее время задержки Время задержки P99

Имитация 30 мс времени обработки

Пропускная способность Среднее время задержки Время задержки P99

Примеры

Все примеры можно найти на GitHub по ссылке rpcxio/rpcx-examples.

Ниже приведён простой пример.

Сервер

    // **define example.Arith**

    ……

    s := server.NewServer()
    s.RegisterName("Arith", new(example.Arith), "")
    s.Serve("tcp", addr)

**Client**

```go
    // prepare requests
    ……

    d, err := client.NewPeer2PeerDiscovery("tcp@"+addr, "")
    xclient := client.NewXClient("Arith", client.Failtry, client.RandomSelect, d, client.DefaultOption)
    defer xclient.Close()
    err = xclient.Call(context.Background(), "Mul", args, reply, nil)

Contributors

Contribute

см. contributors.

Приглашаем к сотрудничеству:

  • сообщайте о проблемах или требованиях;
  • отправляйте PR;
  • создавайте проекты с использованием rpcx;
  • пишите учебные пособия или статьи для ознакомления с rpcx.

Лицензия

Apache License, Version 2.0

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

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

Введение

RPCX — это распределённая RPC-служба, подобная Dubbo от Alibaba и Motan от Weibo. Она реализована на основе Golang net/rpc. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

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

Участники

все

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

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