Comments (16)
I would be happy to help implement this.
from rust-etcd.
https://github.com/jimmycuadra/rust-etcd/pull/25/files
done
from rust-etcd.
I'd prefer to leave the existing support for v2. This could be done by nesting API-version-specific items in top level modules called v2
and v3
.
from rust-etcd.
Of course I'd like to support v3, though I hadn't spent any time thinking about it yet. I'm not sure what the state of gRPC in Rust is right now. Last I looked it was in early development, but it's been a while.
from rust-etcd.
I've not done too much investigation yet either, and I'm not sure whether I'll need this, but I'll get back in touch if I think that extending your work is the best bet. Thanks for the swift response!
from rust-etcd.
Adding etcd v3 support would be very nice. Using gRPC with Rust is not too bad. There are a couple of quirks, protobuf manipulation in Rust is not as nice as in Go, but overall its doable.
from rust-etcd.
PRs most welcome! Which approach to gRPC in Rust do you all think is best these days?
from rust-etcd.
would it be better to create a new version that only supports v3, or implement it in a way that supports both v2 and v3? Looking at clients in other languages, it looks like most only support one version of the API for a single version of the library. But that is just from a cursory search.
from rust-etcd.
Which approach to gRPC in Rust do you all think is best these days?
I don't know, the grpcio crate seems to be more popular on crates.io, and more active on github, but depends on the grpc-core c library (which could be good since that is standard implemenation, or bad because it requires building a c library and a fair amount of unsafe code). The grpc crate on the other hand is implemented in pure rust using tokio and futures. Another possiblity is using the protobuf crate for serializing/deserializing messages, but then use hyper/h2 directly for the transport. I don't know what the best approach for this is.
@VoyTechnology what are your thoughts? Since it sounds like you might have some experience with grpc in rust.
from rust-etcd.
Hey all, I've used the grpc
create quite a lot, it should definitely work. I was hoping to see tower grpc stabilize by now, but it looks like it has not yet. Which is unfortunate because it has a significantly more simple interface.
I would be happy to help will getting things rolling on this front.
- We can just create a
proto
directory in this repo with all of the needed protos. - Introduce a
build.rs
which will generate the Rust code from the protos for us. - Then we just build out the interface on top of that, nest it under a
v3
module or something like that (as proposed above).
I am definitely interested in being able to use the transaction system & leases.
from rust-etcd.
I created a branch that has the protobuf files in a proto directory (and a script to pull down new versions if/when necessary) at https://github.com/tmccombs/rust-etcd/tree/etcdv3
from rust-etcd.
Awesome. Happy to take a look. Are you planning on opening a PR for it against this repo??
from rust-etcd.
I am new to etcd. Can't we just call etcd-3 via HTTP requests?
from rust-etcd.
etcd-3 uses GRPC, which does use HTTP, but it uses HTTP/2 instead of HTTP/1.1 and protobufs instead of json.
from rust-etcd.
In case if it's going to help, I found some code:
https://github.com/angelrain1/grpc_etcd
https://github.com/ccc13/etcd-rs
from rust-etcd.
In additions to gRPC, etcd v3 also provides a JSON gRPC gateway.
from rust-etcd.
Related Issues (14)
- Mimic --forever option of etcdctl watch HOT 2
- Build failure under Rust 0.11.0 HOT 3
- Multithread support HOT 2
- Support for managing users, roles HOT 6
- Connection leak from watch timeout. HOT 5
- watch_recursive test is not deterministic HOT 1
- There is no isLeader attribute in the result of member list HOT 2
- 0.9.0 does not with tokio 1.x
- Allow using certificates to connect to the cluster.
- Relicense under dual MIT/Apache-2.0
- etcd 2.2 HOT 3
- build fails to resolve syntex::Registry HOT 1
- Any way to cancel watch? HOT 12
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rust-etcd.