Feat: cluster and extension (#185)

* feat(dubbo): add unix feature

* Rft: replace feature with target_os cfg

* Rft(dubbo): add ClientBuilder for client

* Rftï(dubbo-build): add build api for client

* style(examples): cargo fmt

* Rft: move connection from client to transport mod

* Rft(dubbo): add default timeout for client

* Ftr: add serverBuilder for Server, support multiple ways to start server

* Rft(examples): update yaml

* refactor(dubbo): update invoker trait

* refactor(cluster): add Cluster MockImpl

* refactor(triple): use ClientBuilder to init Cluster ability

* Update builder.rs

update default direct value

* Update triple.rs

handle unused var

* Update mod.rs

comment some codes

* refactor(triple): rm unused var in clientBuilder

* refactor(dubbo): delete some codes

* refactor(cluster): rm some duplicate codes

* refactor(registry): rm unused import

* refactor(triple): use two build func for different usage

* style: cargo fmt --all

* refactor(cluster): rm registryWrapper

* refactor(cluster): delete print

* chore(dubbo): upgrade hyper version in cargo.toml

* refactor(cluster): comment the logic of clone body

* Rft(triple): remove Clone of Invoker

* Rft(cluster): use ready_cache to manage Invokers, add ready_cache in FailoverCluster

* Rft(protocol): use interface Inheritance to redesign Invoker

* Feat(cluster): Cluster Policy Impl (#146)

* refactor(cluster): comment the logic of clone body

* Rft(triple): remove Clone of Invoker

* Rft(cluster): use ready_cache to manage Invokers, add ready_cache in FailoverCluster

* Rft(protocol): use interface Inheritance to redesign Invoker

---------

Co-authored-by: G-XD <38717659+G-XD@users.noreply.github.com>
Co-authored-by: GXD <gexiangdong@highlight.mobi>

* chore(github): rm workflow_dispatch in workflow (#149)

* feat: Add Router Module(#144) (#153)

add condition router,
add tag router,
use nacos as router config center

* Ftr: failover cluster (#156)

* Ftr: add ServiceNameDirectory (#157)

* Ftr: failover cluster

* Ftr: add ServiceNameDirectory

* Feat/cluster Optimized the Router module (#160)

* perf: Optimized the logic of the routing module.

Refactored route logic decision-making, eliminating unnecessary cloning
and improving performance.

* perf: Optimized the logic of the routing module.

Refactored route logic decision-making, eliminating unnecessary cloning
and improving performance.

* perf: Removed unnecessary configurations.

* perf: Removed unnecessary configurations.

* perf: Optimized the Router module

Optimized the Router module
Added Router Chain to MockDirectory

* Refactor: refactor Cluster component (#165)

* Refactor: refactor Cluster component

- add p2c loadbalance component
- add simple router component
- add replay body component
- add failover component
- add service directory compoent

* Enhance: add cache for routers

* Tst: local test passed (#166)

* Tst: local test passed

* Enhance: remove unnecessary key

* Enhance: add BUFFER SIZE const variable

* style(dubbo): cargo fmt --all

* style(dubbo): cargo fix --lib -p dubbo --allow-dirty

* chore(github): update branch in pr

* Mod: format code and fix some warnings (#167)

* style(dubbo): cargo fmt --all

* style(dubbo): cargo fix --lib -p dubbo --allow-dirty

* chore(github): update branch in pr

* Rft: adapt nacos registry and zookeeper registry (#169)

* Rft: adapt nacos registry and zookeeper registry

Close #168

* Rft: adapt static registry

* Rft: cargo fmt

* Ftr: add extension module (#181)

* Ftr: add extension module

- adapt static registry by extension
- adapt nacos  registry by extension

link #180

* cargo fmt all

* fix ci error

* fix nacos image version error

* Rft: re-design extension register

* Fix: cargo fix

* Fix: add some license for every files

- extract UrlParam to single file
- fix github ci error

* Fix: fmt all

* Fix: Add license for extension_param.rs and registry_param.rs

* Fix: rename query_param_by_kv method name

* Fix: get stuck when load extension in the concurrency environment (#184)

* Fix: get stuck when load extension in the concurrency environment

- Add a new struct called LoadExtensionPromise
- Remove async modifier in ExtensionDirectory

Close #183

* Ftr: use RwLock instead of unsafe

* Rft: simplify the code of extension promise resolve

* refeat(extensions): add sync for Registry trait

* chore: cargo fmt

* chore: cargo fmt

* chore: cargo fmt

* chore: cargo fmt

---------

Co-authored-by: G-XD <38717659+G-XD@users.noreply.github.com>
Co-authored-by: GXD <gexiangdong@highlight.mobi>
Co-authored-by: Urara <95117705+AdachiAndShimamura@users.noreply.github.com>
Co-authored-by: 毛文超 <admin@onew.me>
73 files changed
tree: 11e375aec5db2746ab780fa08f9b3139de875670
  1. .github/
  2. common/
  3. config/
  4. docs/
  5. dubbo/
  6. dubbo-build/
  7. examples/
  8. metadata/
  9. protocol/
  10. registry/
  11. remoting/
  12. .asf.yaml
  13. .gitignore
  14. .licenserc.yaml
  15. .rustfmt.toml
  16. application.yaml
  17. Cargo.toml
  18. CONTRIBUTING.md
  19. LICENSE
  20. NOTICE
  21. README.md
  22. README_CN.md
  23. release.toml
README.md

Apache Dubbo-rust

Apache Dubbo-rust, an RPC framework that implements Dubbo written in Rust.Please visit the official website for more information.

Build Status License

[ 中文 ]

Overview

Dubbo-rust is still under development. For now, gRPC calls based on HTTP2 have been implemented.

The following libraries are mainly dependent on:

  • Tokio is an event-driven, non-blocking I/O platform for writing asynchronous applications with Rust.

  • Prost is a Protocol Buffers implementation for Rust.

  • Hyper is a fast and correct HTTP implementation for Rust.

  • Serde is a framework for serializing and deserializing Rust data structures efficiently and generically.

Features

  • :white_check_mark: RPC synchronous / asynchronous call
  • :white_check_mark: IDL code automatic generation
  • :construction: Multiple RPC protocol support (like Triple, Dubbo, gRPC, JSONRPC)
  • :construction: Support TCP/HTTP2 transport protocol
  • :construction: Service registration and discovery

Get started

Project structure

.
├── Cargo.toml
├── LICENSE
├── README.md
├── README_CN.md
├── common
│   ├── Cargo.toml
│   └── src
│       └── lib.rs
├── config
│   ├── Cargo.toml
│   └── src
│       ├── config.rs
│       ├── lib.rs
│       ├── protocol.rs
│       └── service.rs
├── contributing.md
├── docs
│   ├── filter-design.md
│   ├── generic-protocol-design.md
│   ├── readme.md
│   └── services.md
more ...

Contact Us

  • Subscribe to the official Wechat Account officialAccount

  • Search and join the DingTalk group: 44694199

Contribute

Welcome more developers to join us. About more details please check “How to contribute”.

License

Apache Dubbo-rust software is licenced under the Apache License Version 2.0. See the LICENSE file for details.