Author: Dubbo Community
Apache Dubbo is an RPC service development framework, which is used to solve service governance and communication problems under the microservice architecture. The official provides multi-language SDK implementations such as Java and Golang. Microservices developed with Dubbo natively have the ability to discover and communicate with each other in remote addresses. Using the rich service governance features provided by Dubbo, service governance requirements such as service discovery, load balancing, and traffic scheduling can be achieved. Dubbo is designed to be highly extensible, and users can easily implement various custom logics for traffic interception and address selection.
What is Dubbo 3
Dubbo 3 maintains the classic architecture of Dubbo 2, with the main responsibility of solving microservice inter-process communication, and better manages and controls microservice clusters through rich service governance (such as address discovery, traffic management, etc.) capabilities; The upgrade is comprehensive, which is reflected in almost every link of the core Dubbo features. Through the upgrade, the stability, performance, scalability, and ease of use have been comprehensively improved.
General communication protocol: The new RPC protocol should abandon the private protocol stack, use the more general HTTP/2 protocol as the transport layer carrier, and use the standardized characteristics of the HTTP protocol to solve problems such as traffic versatility and penetration, so that the protocol can be more It can well deal with scenarios such as front-end and back-end docking, gateway proxy, etc. It supports Stream communication mode, which can meet the demands of different business communication models and bring greater throughput to the cluster.
Facing millions of cluster instances, the cluster is highly scalable : With the promotion of microservice practices, the scale of microservice cluster instances is constantly expanding. The entire cluster capacity brings a burden, especially for some centralized service governance components; Dubbo 3 needs to solve various resource bottlenecks caused by instance scale expansion to achieve truly unlimited horizontal expansion.
Embrace cloud-native : In the cloud-native era, changes in underlying infrastructure are profoundly affecting application deployment, operation and maintenance, and even the development process, as well as the selection and deployment mode of Dubbo 3 microservice technology solutions. Dubbo 3 fully aligns the cloud-native infrastructure model on the service discovery model, and can be aligned with container scheduling platforms such as Kubernetes in terms of address and life cycle design.
What problems will the future Dubbo need to solve?
At the moment when Dubbo 3 functions are basically complete, we began to rethink the overall architecture of the current Dubbo, and concluded that there are the following problems:
Business code is directly coupled with each microservice component, making it difficult to upgrade
In the current deployment form, if a component needs to be integrated, the component needs to be adapted in the environment of business code. To give a simple example, if you need to access a custom data format conversion component, you need to weave the corresponding adaptation implementation into the business code based on Dubbo's SPI. This deployment method causes high intrusion to the deployment of the business. If this conversion component needs to be upgraded, it is necessary to push all business parties that have deployed this component to upgrade it. Extremely difficult in a production environment.
High complexity of multi-language implementation
Since all the computing processing logic of Dubbo is currently integrated into the business code in the form of SDK, it inevitably leads to the problem of high implementation complexity when it needs to be called across languages. For Dubbo, in addition to the relatively complete SDK implementations of Java and Golang, other languages still lack corresponding complete implementations. In addition, for an interceptor function, the implementation under the Java SDK cannot be directly reused on the Golang SDK due to differences in language and interface design, which also brings difficulty and instability to middleware development to a certain extent.
Governance capabilities sink in the data plane, and middleware governance capabilities are fragmented
In the current deployment mode of Dubbo, when it needs to access a middleware governance capability, it needs to be integrated through the direct access of the data plane business code. This method will cause each governance component to work independently, and the data plane will be viewed from a global perspective. The access is very chaotic and cannot be unified governance through a unified perspective. At the same time, because these components are connected independently, the work between components cannot be well combined in some scenarios.
Dubbo Mesh
Dubbo Mesh is clearly divided into control plane and data plane in terms of architecture and deployment form.
As the core of service governance, the control plane has an abstract and unified model, is responsible for the connection with the underlying infrastructure, and provides a unified governance entry from startup configuration, service discovery, traffic management to authentication and authentication.
The data plane focuses on business programming models and communication capabilities. It accesses service governance capabilities based on multiple deployment forms (SDK, Sidecar, and Agent), and is decoupled from business code based on dynamic deployment capabilities.
In general, the data plane is lighter and more focused, and the control plane is more cohesive and powerful. You only need to deploy a set of control planes to use production-level service governance capabilities.
The following describes the respective responsibilities and capabilities under Dubbo Mesh from the control plane and the data plane:
Dubbo Control Surface
The control plane is the core of service governance. It has an abstract and unified model, is responsible for the connection with the underlying infrastructure, and provides a unified governance entry from startup configuration, service discovery, traffic management to authentication and authentication.
1. Abstract service governance model : Dubbo control plane inherits Dubbo's feature of high scalability, and divides various fields and extension points for each component to use. Supports custom addition of components, as long as the components are extended in a standard format, rapid deployment, pull-up, hot update and other behaviors can be performed under Dubbo Mesh.
2. Shield infrastructure and components : The Dubbo control plane integrates the access of infrastructure such as Kubernetes through the component mode, shields the differences from various infrastructures for the data plane, and supports native Kubernetes deployment, VM deployment, hybrid deployment and other scenarios .
3. Unified service governance rules: The Dubbo control plane supports docking with unified service governance rules, and supports the governance of multiple frameworks through a set of rules.
4. Cross-language support : The Dubbo control plane issues control data through a common data format, and solves cross-language governance problems with multiple deployment methods of the data plane.
Dubbo data plane
The Dubbo data plane will focus on the business programming model and communication capabilities, provide a variety of access methods, connect to the component management and control from the Dubbo control plane, and support the identification and execution of the governance rules issued by the control plane by dynamically pulling components through hot update. ability.
1. Focus on programming and communication : The Dubbo data plane will focus more on providing support for the programming model to business developers. Users only need to rely on a simple call API to complete the corresponding RPC remote call, and no longer need to care about the access of the underlying governance capabilities.
2. Multiple access methods : In the future, the Dubbo data plane will support SDK-based proxyless access, Agent-based non-aware access, and Sidecar-based cross-language access, covering more usage scenarios as much as possible, improving Ease of use of overall functionality.
3. Component hot update : The Dubbo data plane will support dynamic loading and updating of the corresponding governance component capabilities delivered from the Dubbo control plane, and the management of governance capabilities will be managed on the Dubbo control plane in a unified manner to improve the operation and maintenance process.
4. Governance rule identification and execution : The Dubbo data plane is mainly responsible for the identification and execution of the corresponding governance rules, and loads the corresponding governance capabilities by dynamically loading the capabilities to realize the governance capabilities of the data plane traffic.
Roadmap
At the end of this year, Dubbo Mesh will release a version with service discovery capabilities, which will provide all Dubbo users with the ability to smoothly migrate from low versions to Mesh architecture; a version with governance capabilities will be released in early spring next year; A version with plug-in hot update capability will be released before the end of the year.
Click here to go directly to Dubbo's official website!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。