Is there any distributed framework in rust?

is there any mature and stable distributed framework in rust?i have find one,“rain”,but not suitable for build project now,it's not perfect and mature, stability is unknown.
also i have find thrift support to rust too,i have learn it before,but not use very long,
i use zeroc before,it's very good and easy to use,but not support to rust,it's pity.
so,is there anyone know or used a good distributed framework that i don't know?

I googled "distributed framework" and got about 463M matches. Can you be more specific about your query? What exactly is it that you are looking for?

2 Likes

yes,i know, googled "distributed framework" will has very much matches.
i mean,i need about rust's distributed framework,because i use rust build the server.
It is expected to carry at the million level,this server should has high capacity, high throughput, disaster - tolerant mechanism and stable.
If I write a distributed architecture from 0,it costs too much,
so i looking for the distributed framework in rust,but rust has no some like spring could,zeroc,dubbo,thrift,or zookeeper.
i know rust is young,so,maybe there some framework i do not know?

I think there is not so much in Rust, we search for a distributed system to develop our service, but we can't find anything stable at the time.

I think you can look to some Actor framework like actix and actix-web, that can help if your protocols are web based. There are other Actor model, and maybe they are distributed in some way.

About zookeeper, there is a video of @jonhoo writing a zookeeper client in Rust:

There is the ghithub repo, I think, so you can have a look.

Many of the distributed framework you cited can be integrated with Rust in a way or another.

You can use the C++ lib and create binding to your Rust client, or you can integrate through Python (PuO3) or JavaScript (I heard about a way to compile rust as nodejs module).

3 Likes

yes,the same as me,could not find any stable distributed system.
i already build the server basic on mio,it could be work now,but not distributed system.
oh,build a zookeeper client in rust,it a good idea.
so,if i build a zookeeper client by zookeeper's API like build a redis client by redis's API,but it still will costs too much time and energy for develop and test for it can be work stable.
well,maybe there is only way to build it,that's by our self, not search a stable distributed system.
i will think about it and assess the pros and cons of doing this and look for other compromises.
thanks bro!

You can find a Redis client for Rust, the only issue is that is blocking, at least the one I used it was, and, of course, single thread, so you have to get your connection pool (https://github.com/sfackler/r2d2).

But that is Redis issue/use case, not Rust fault, it is the same on any language.

About the Zookeeper client, keep in mind that you don't have to test Zookeeper again, just your client, if you build one yourself because you can't find one.

And that has a lower cost to test the whole system all together.

What I ment, is that you can think about an hybrid system where you use Rust for the parts you want to use it, and the distributed part can be done with a different language, where you have more mature distributed systems.

Microservices have gained a lot of popularity recently and seem to fit the bill nicely. As an architecture paradigm, it's well suited to distributed systems and needing to handle thousands (or millions) of users.

Plus, with technologies like docker and kubernetes, creating a microservice can be reduced to writing a server that talks to a database and exposes an API to the world using some standard protocol (e.g. by using GRPC via the tonic crate or JSON over HTTP using a typical web server framework like actix or rocket).

Googling zeroc brought up the zeroc company's Ice Framework. From what I can tell, the Ice Framework is just another RPC library that uses its own DSL for defining messages. I wouldn't be surprised if they had a Rust client library in the works, but if you're just looking for a RPC layer there are already loads out there. I've personally found GRPC to be really nice to work with.

1 Like

yes,i have find the client of redis in rust crates.io, and already encapsulate into my system.
yes,i not mean build all the client of zookeeper,just build what i need,i think maby use java(zookeeper base on java) build some API for rust could be easy

yeah,i visit Zerc,they support a lot of language,but not rust,because rust is very popular now i think?
i have take a look GRPC,em...not support rust too?
but they use goodle's protobuf is friendly than the way of zeroc i think,before I used zeroc, I always felt that their custom protocol syntax was strange.

I found about 80 results when searching crates.io.

Sure there is no official library mentioned on the grpc website, but there are several Rust implementations. In particular, the following implementations look quite promising:

  • hyperium/tonic - a promising async implementation from the same organization that created hyper, arguably one of the best HTTP client/server implementations available and underpinning most of Rust's HTTP libraries or frameworks
  • tikv/grpc-rs - bindings to the official C library written by the tikv project
  • stepancheg/grpc-rust - another implementation. Skimming through the API docs shows it to be fairly well done, although it says it's not ready for production yet
1 Like

oh,very helpful
i need more learn grpc to know why is grpc,and what great trait grpc have and what different to other distributed framework.
it's helpful
thank u :slight_smile:

There is libp2p, to build distributed networks with pubsub, DHT, etc. However it seems very complex to use, and documentation is far from complete.

For data storage, there is also IPFS which aims to be resilient (but not always fast). (should be compatible with libp2p)

maybe is not what I need?but thanks for reply