stable branch: v1.7.x development branch: master
Official site: http://rpcx.io/
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.
A tcpdump-like tool added: rpcxdump。 You can use it to debug communications between rpcx services and clients.
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.
install the basic features:
go get -v github.com/smallnest/rpcx/...
If you want to use quic
、kcp
registry, use those tags to go get
、 go 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.
rpcx is a RPC framework like Alibaba Dubbo and Weibo Motan.
rpcx is created for targets:
Производительность: высокая производительность (≥ grpc-go).
Кроссплатформенность: поддержка raw slice of bytes, JSON, Protobuf и MessagePack. Теоретически может использоваться с Java, PHP, Python, C/C++, Node.js, C# и другими платформами.
Управление сервисами и обнаружение сервисов: поддержка ZooKeeper, etcd и Consul.
Содержит следующие функции:
RPCX использует двоичный протокол и не зависит от платформы, что позволяет разрабатывать сервисы на других языках, таких как Java, Python, Node.js и использовать другие языки программирования для вызова сервисов, разработанных на Go.
Существует менеджер пользовательского интерфейса RPCX-UI.
Результаты тестов показывают, что RPCX имеет лучшую производительность по сравнению с другими фреймворками RPC, за исключением стандартной библиотеки RPC.
Код бенчмарка можно найти в репозитории rpcx-benchmark.
«Слушайте других, но проверяйте сами».
Пропускная способность | Среднее время задержки | Время задержки P99 |
---|---|---|
Пропускная способность | Среднее время задержки | Время задержки P99 |
---|---|---|
Пропускная способность | Среднее время задержки | Время задержки 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.
Приглашаем к сотрудничеству:
Apache License, Version 2.0
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )