广告时间
nacos-sdk-rust-binding-node : nacos-sdk-rust binding for NodeJs with napi.
Tip: nacos-sdk-nodejs 仓库暂未提供 2.x gRPC 交互模式,为了能升级它,故而通过 node addon 方式调用 nacos-sdk-rust
npm 包 -> https://www.npmjs.com/package/nacos-sdk-rust-binding-node
客官,走过路过不要错过,买不买瞧一瞧也是好的。行过路过唔好错过啦👆~
缘起?冲突!
如下图,架构选型 Nacos,内部有配置管理相关的定制化诉求,对注册中心无定制诉求,故而把集群拆为两套,并将注册中心托管于阿里云 MSE-Nacos ;
注册中心托管后,网络隔离就引入了 1.x 模式 upd 推送失败问题,目前让 MSE 同学后台设置将兜底 list 频率由 10s 提高至 1s,勉强达到服务变更通知可接受范围;但终究对服务变更的敏感性不足,兜底 list 频率提高了十倍极大增加服务端的负载。
若对 Nacos 未有足够了解而又有兴趣,请阅:「Nacos 注册中心的数据一致性剖析」
Java 应用可以通过升级 nacos-client 2.x 采用 gRPC 交互,然而多语言客户端 NodeJs 社区并未提供 2.x gRPC 的实现。咋办呢?
措施之“曲线救国”
nacos-sdk-nodejs 开源社区没有实现 2.x gRPC 交互,故而走 “曲线救国” 道路:
- 先实现 nacos-sdk-rust 丰富 nacos 多语言体系;请阅:「Rust 从入门到放弃,再入门到贡献 nacos-sdk-rust」
- 再将 rust 客户端 binding to nodejs,继而出现了 nacos-sdk-rust-binding-node。
由此就出现了这篇文章啦~ nacos-sdk-rust binding for NodeJs with napi. 顺带介绍 nacos-sdk-rust 的实现架构图,也多得 napi-rs 库让不懂 node 的小编易于实现绑定。
有兴趣的小伙伴请穿越至 nacos-sdk-rust
拓展
Rust could binding for Anythings!!!~
- https://github.com/jni-rs/jni-rs binding for Java
- https://github.com/napi-rs/napi-rs binding for NodeJs
- https://github.com/PyO3/pyo3 binding for Python
- https://github.com/dtolnay/cxx binding for C++
- …