[ANN] erpc

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

[ANN] erpc

Chandru-4
I'm pleased to announce the first release of erpc. From the README
    
    This application is intended to be a replacement for native
    RPC. It tries to mimic the native rpc API as far as possible. It
    allows unidirectional connections between nodes. Where
    bi-directional connections are required, they need to be
    configured explicitly. There is host level and node level ACLs
    configurable. It is possible to setup application specific
    connections between nodes. It supports multiple TCP/TLS
    connections per host and load balancing of traffic across nodes.

We haven't yet deployed this in production but it is giving us good results in load tests for some of our systems. We are releasing it early so that we can develop this in the open with community feedback and contributions.


Many thanks to bet365 for open sourcing this.

cheers,
Chandru


_______________________________________________
erlang-questions mailing list
[hidden email]
http://erlang.org/mailman/listinfo/erlang-questions
Reply | Threaded
Open this post in threaded view
|

Re: [ANN] erpc

Benoit Chesneau-2
nice! How does it compare to gen_rpc?

When you say "It supports multiple TCP/TLS  connections per host " does it means that we can multiple clients connected to the same node?

- benoît

On Tue, 17 May 2016 at 22:14, Chandru <[hidden email]> wrote:
I'm pleased to announce the first release of erpc. From the README
    
    This application is intended to be a replacement for native
    RPC. It tries to mimic the native rpc API as far as possible. It
    allows unidirectional connections between nodes. Where
    bi-directional connections are required, they need to be
    configured explicitly. There is host level and node level ACLs
    configurable. It is possible to setup application specific
    connections between nodes. It supports multiple TCP/TLS
    connections per host and load balancing of traffic across nodes.

We haven't yet deployed this in production but it is giving us good results in load tests for some of our systems. We are releasing it early so that we can develop this in the open with community feedback and contributions.


Many thanks to bet365 for open sourcing this.

cheers,
Chandru

_______________________________________________
erlang-questions mailing list
[hidden email]
http://erlang.org/mailman/listinfo/erlang-questions

_______________________________________________
erlang-questions mailing list
[hidden email]
http://erlang.org/mailman/listinfo/erlang-questions
Reply | Threaded
Open this post in threaded view
|

Re: [ANN] erpc

Chandru-4
On 17 May 2016 at 22:31, Benoit Chesneau <[hidden email]> wrote:
nice! How does it compare to gen_rpc?

Thank you. Similar aims (i.e. remove the problems caused by native RPC implementation). 
- Tries to reduce the use of message passing. 
- Supports pluggable transport protocols so that you can run erpc over TLS. 
- SCTP support is on the roadmap. 
- Supports load balancing across multiple nodes so the client doesn't need to care about trying multiple nodes in case one of the server nodes is down. Currently planning to add a consistent-hashing based load balancing but haven't quite decided on an API yet.
 

When you say "It supports multiple TCP/TLS  connections per host " does it means that we can multiple clients connected to the same node?

Yes, with different names. That way each application can have its own dedicated connection(s) so that it doesn't suffer from sharing connections. For a single named connection, you can also have multiple transport connections. Also, connections are uni-directional so you have complete control over traffic flows.

cheers,
Chandru

 
On Tue, 17 May 2016 at 22:14, Chandru <[hidden email]> wrote:
I'm pleased to announce the first release of erpc. From the README
    
    This application is intended to be a replacement for native
    RPC. It tries to mimic the native rpc API as far as possible. It
    allows unidirectional connections between nodes. Where
    bi-directional connections are required, they need to be
    configured explicitly. There is host level and node level ACLs
    configurable. It is possible to setup application specific
    connections between nodes. It supports multiple TCP/TLS
    connections per host and load balancing of traffic across nodes.

We haven't yet deployed this in production but it is giving us good results in load tests for some of our systems. We are releasing it early so that we can develop this in the open with community feedback and contributions.


Many thanks to bet365 for open sourcing this.

cheers,
Chandru

_______________________________________________
erlang-questions mailing list
[hidden email]
http://erlang.org/mailman/listinfo/erlang-questions


_______________________________________________
erlang-questions mailing list
[hidden email]
http://erlang.org/mailman/listinfo/erlang-questions
Reply | Threaded
Open this post in threaded view
|

Re: [ANN] erpc

Holger Winkelmann
HI,
Yes, with different names. That way each application can have its own dedicated connection(s) so that it doesn't suffer from sharing connections. For a single named connection, you can also have multiple transport connections. Also, connections are uni-directional so you have complete control over traffic flows.
I assume you mean the connection setup being uni-directional but the communication can be bi-directional?

Cheers, Holger

_______________________________________________
erlang-questions mailing list
[hidden email]
http://erlang.org/mailman/listinfo/erlang-questions
Reply | Threaded
Open this post in threaded view
|

Re: [ANN] erpc

Chandru-4
Hi Holger,

On 23 May 2016 at 16:44, Holger Winkelmann <[hidden email]> wrote:
HI,
Yes, with different names. That way each application can have its own dedicated connection(s) so that it doesn't suffer from sharing connections. For a single named connection, you can also have multiple transport connections. Also, connections are uni-directional so you have complete control over traffic flows.
I assume you mean the connection setup being uni-directional but the communication can be bi-directional?

No, communication is uni-directional as well. Only the client side can send requests to the server side. If you want a bi-directional connection between two nodes A and B, you will have to configure a client connection on A to B, and vice versa. This is roughly the third time I'm trying to implement an efficient RPC mechanism for Erlang and I feel this is the most optimal way to design it.

I'm still thinking of supporting bi-directional connections, but I haven't worked out the best way to do it - it may never happen.

cheers,
Chandru

_______________________________________________
erlang-questions mailing list
[hidden email]
http://erlang.org/mailman/listinfo/erlang-questions