preface

A few days ago, I watched Liu Jun’s online live broadcast about the Annual Summary and Outlook of Apache Dubbo from 2019 to 2020, and I plan to write my comments on it.

First, I would like to introduce Liu Jun. He is Apache Dubbo PMC, the core maintainer of the project. He witnessed the whole process of Dubbo from the restart of open source to the graduation of Apache. Currently, I am working in alibaba middleware team, participating in the work related to service framework and micro-services, and mainly promoting Dubbo open source cloud biogenics.

The whole online broadcast lasted for more than an hour, covering three aspects as a whole:

  • Dubbo Community Development Review
  • Important function analysis
  • Roadmap and future outlook

The analysis of important functions is mainly about the features of 2.7.x. I will divide each part into a theme and introduce it one by one in the subsequent articles. This paper will roughly introduce the future outlook discussed in the live broadcast.

Roadmap and future outlook

The future planning is mainly divided into four driving points, which are:

  • Enhancements to microservices-related functions
  • Dubbo 3.0 protocol upgrade
  • Service introspection
  • Cloud native

Enhancements to microservices-related functions

At present, the functions related to microservices include Dubbo authentication, built-in fusing capability and TLS, which have been integrated in version 2.7.5 to enable authentication and secure transmission of links. Dubbo will further enhance its business development capabilities in the future.

Dubbo 3.0 protocol upgrade

In the future, there will be a comprehensive upgrade for Dubbo protocol, which mainly involves the following important directions:

  • Support for Reactive Stream: The previously mentioned support for Reactive Stream at the protocol level to support streaming requests on the consumer side, streaming responses on the server side, or two-way streaming communications.
  • HTTP/2 support: Because the communication protocol constructed based on HTTP/2 has better versatility and penetration in the micro service cloud native scenario, HTTP/2 will be supported in 3.0 protocol.
  • Cross-language support: For cross-language support, more efforts are made in serialization.
  • Support for flow control: such as Request (N) in Reactive programming or flow control in HTTP/2.
  • Protocol upgrade: A protocol of a later version must provide a protocol negotiation mechanism, similar to the protocol negotiation mechanism introduced in HTTP/2. A protocol of a later version must contain a protocol of a earlier version.
  • Scalability enhancements: Mainly in the metadata part of the Header, it is necessary to distinguish protocol extensions from RPC method extensions, since attachments in Dubbo’s original protocol are mostly designed to support method extensions, which need to be supported in the new version of the protocol.
  • Mesh: The new version of the protocol needs to be more Mesh friendly to facilitate collaboration with the Mesh.
  • Strong versatility: protocol design should take into account the versatility and performance, can run on a variety of equipment.

Service introspection

Dubbo, which has previously been based on interface granularity, will plan for service discovery, governance, and site selection with increased application granularity to align with mainstream microservices and cloud native models and address interface performance issues. Next, granularity can be applied in several ways:

  • Register at application granularity, and the registry only cares about address changes.
  • Metadata services provide additional information.
    • Interface list, method list, method signature, etc.
    • Instance specific configuration;
  • Keep the RPC programming style the same
    • Continue programming to the interface with no additional modifications
    • Distinguish between old and new service discovery models through Registry configuration only;

Cloud native

  • Service discovery: Dubbo’s service discovery capability worked well as an SDK on previous infrastructure, but we need to figure out how to work on some of Kubernetes’ infrastructure in the future. We hope to reuse this infrastructure and reuse the underlying service discovery capability based on container scheduling capabilities.

  • On-cloud and off-cloud connectivity: the interoperability of on-cloud and off-cloud Dubbo applications will be considered in the future.

  • Smooth migration: We hope to smooth migration of common applications into containers in the future.

  • Talk to xDS: In mesh scenarios, Dubbo may consider support for SDKS that deliver standard configurations of the xDS protocol.

  • Lifecycle alignment: A future consideration is how dubbo’s lifecycle is bound to container-specific lifecycle. Service governance mechanism adaptation: Under K8S, pod scheduling has its own scheduling mechanism, and its IP is constantly changing. Dubbo has many governance rules that are strongly bound to IP, which are not suitable for cloud native service governance. Therefore, in the future, we need to solve the problem of how dubbo ADAPTS to service governance mechanism.