Skip to content

[Feature][Dubbo-python] Implement the basic functions of an RPC framework. #14494

@cnzakii

Description

@cnzakii

Pre-check

  • I am sure that all the content I provide is in English.

Search before asking

  • I had searched in the issues and found no similar feature requirement.

Apache Dubbo Component

Python SDK (apache/dubbo-python)

Descriptions

This is a subtask of the GSoC project. (Relevant repository: dubbo-python)

The completed milestones include:

  1. User API Calls: Users can reference and expose services through the Client and Server.
  2. Proxy Layer: Abstracted and implemented RpcCallable (Proxy) and ServiceHandler (Invoker).
  3. Protocol Layer: Implemented the Triple protocol, fully compatible with the gRPC protocol. Also supports multiple compression methods, including Identity, Gzip, and Bzip2.
  4. Transport Layer: Based on asyncio and combined with the h2 library, the Http2 protocol is implemented, along with connection-level DATA frame flow control, stream-level frame inbound and outbound order control, and stream multiplexing. And it supports significantly improving asyncio's performance by incorporating uvloop.
  5. Serialization Layer: Supports user-defined serialization and deserialization methods.
  6. Plugin Extension Mechanism: Achieved plugin registration and loading through importlib and registries.
  7. Logging Wrapper: Abstracted and encapsulated logging, including log coloring, console output, and log file output.

Note:
According to the official report from uvloop(http://magic.io/blog/uvloop-blazing-fast-python-networking/), using uvloop is 2-4 times faster than using asyncio alone. The reason for not using uvloop fully is that its not supported on windows.
2024-08-04_16 41 21

Related issues

No response

Are you willing to submit a pull request to fix on your own?

  • Yes I am willing to submit a pull request on my own!

Code of Conduct

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    Status

    Todo

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions