3 releases (breaking)
Uses old Rust 2015
0.3.0 | Oct 19, 2017 |
---|---|
0.2.0 | Mar 1, 2017 |
0.1.0 | Oct 15, 2016 |
#15 in #name-service
64 downloads per month
Used in 9 crates
(7 directly)
50KB
854 lines
Abstract Name Service
Status: Beta
Documentation | Github | Crate
This rust crate provides just abstract traits which may be used to build interoperable implementations of name dicovery.
We want abstract_ns to have implementations not only for DNS-based name discovery but also Zookeeper, Eureka, Etcd, Consul, and whatever other thing you might imagine. All of them easily configured and interchangeable.
Features:
- Defines what is a name and what is a result of service discovery
- Uses futures-rs for asynchronous stuff
- Has interface to receive updates (name changes)
- Allows some kind of name service routing, i.e. has a way to specify different
resolvers for different names, for example: serve
*.consul
from local consul, other names from conventional DNS servers.
This repository also contains the following crates:
ns-std-threaded
a name resolution implementation that uses stdlib resolver running in a thread poolns-dns-tokio
an pure-rust implementation that usesdomain
crate to resolve domains asynchronously intokio-core
main loop
Note: abstract-ns v0.2 is very different product than v0.1
License
Licensed under either of
- Apache License, Version 2.0, (./LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (./LICENSE-MIT or http://opensource.org/licenses/MIT) at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
lib.rs
:
This crate provides a simple name resolver that uses lib's name resolution.
Unfortunately libc doesn't provide asyncrhonous name resolution for many reasons so we run requests in a thread pool.
For high-performance server applications this way is far from being performant, still it is the most compatible to everything else. So it might be used:
- To provide maximum compatibility (i.e. good default for dev environment)
- In applications where name resolution is not slow part
- As a fallthrough resolver for
ns_router::Router
where more frequently used name suffixes are overriden with faster resolver for that namespace
Dependencies
~480–720KB
~10K SLoC