Dubbo¶
https://cn.dubbo.apache.org/zh-cn/overview/what/
Apache Dubbo 是一款 RPC 服务开发框架,用于解决微服务架构下的服务治理与通信问题。
但它不仅仅是一款 RPC 框架。首先,可以使用多种通信协议,其次,提供了丰富的服务治理能力与生态。
支持多种协议
协议 | 描述 | 适用场景 | 默认端口 |
---|---|---|---|
tri | 基于 HTTP/2 的 Triple 协议(Dubbo 3 默认) | 多语言互通、云原生、gRPC 兼容场景 | 50051 |
dubbo | Dubbo 2 的私有协议(基于 TCP + Hessian2 序列化) | 高性能 Java 内部服务调用 | 20880 |
http | 基于 HTTP/1.1 的 RESTful 协议(如 JSON-RPC) | 需要通用 HTTP 调用的场景 | 8080 |
grpc | 标准 gRPC 协议(Dubbo 3 兼容) | 需要与原生 gRPC 服务互操作 | |
rest | REST over HTTP(如 JSON/XML) | 开放给前端或移动端的 API | |
thrift | Apache Thrift 协议 | 需要与 Thrift 生态交互 |
自 Dubbo3 开始,默认使用基于 HTTP/2 的 Triple 协议,提供了除 Java 外的多语言 SDK 实现,比如 Python SDK
由于 dubbo 协议默认使用 Hessian2 序列化,Python 中缺乏完善支持,索性移除了序列化层,支持自定义实现:https://cn.dubbo.apache.org/zh-cn/overview/mannual/python-sdk/custom-serialization/,比如使用 protobuf 或 json。
git clone https://github.com/apache/dubbo-python.git
cd dubbo-python
pip install . # 安装 pyproject.toml 中 apache-dubbo 相关依赖
# 启动服务端 & 客户端
python samples/helloworld/server.py
python samples/helloworld/client.py
- 搭配 zookeeper 使用
# 启动 zookeeper 服务
cd apache-zookeeper-3.8.0-bin
bin/zkServer.sh start
# dubbo 环境中安装 zookeeper 相关依赖,即 kazoo
pip install .[zookeeper]
pip install protobuf
# 启动 dubbo 服务端 & 客户端
python samples/registry/zookeeper/server.py
python samples/registry/zookeeper/client.py