This is an automated email from the ASF dual-hosted git repository. albumenj pushed a commit to branch 3.3 in repository https://gitbox.apache.org/repos/asf/dubbo.git
commit da2dd6d2a1f5a5266a343b6cb1bf0a73b2f53233 Merge: cb92fcc19e 501bdfaaef Author: Albumen Kevin <jhq0...@gmail.com> AuthorDate: Tue Mar 12 11:36:55 2024 +0800 Merge branch 'apache-3.2' into apache-3.3 # Conflicts: # README.md # dubbo-container/dubbo-container-api/src/main/java/org/apache/dubbo/container/Main.java .../general.yml} | 66 ++++++++++---------- .../question.yml} | 66 ++++++++++---------- .github/ISSUE_TEMPLATE/1-bug.yml | 20 ++++++- .github/ISSUE_TEMPLATE/2-feature.yml | 18 +++++- .../PULL_REQUEST_TEMPLATE.md | 0 README.md | 70 +++++++++++++++++++--- .../filter/support/ConsumerContextFilter.java | 6 +- .../common/beans/factory/ScopeBeanFactory.java | 6 +- .../threadpool/support/AbortPolicyWithReport.java | 4 +- .../java/org/apache/dubbo/config/ModuleConfig.java | 2 +- .../builder/PrimitiveTypeDefinitionBuilder.java | 2 +- .../dubbo/remoting/codec/ExchangeCodecTest.java | 2 +- .../dubbo/rpc/protocol/dubbo/DubboInvoker.java | 2 + .../dubbo/rpc/protocol/tri/TripleInvoker.java | 1 + .../endpoint/metadata/AbstractDubboMetadata.java | 2 +- 15 files changed, 175 insertions(+), 92 deletions(-) diff --cc README.md index 7e1d6569bf,975deece80..520c2b04a1 --- a/README.md +++ b/README.md @@@ -6,101 -6,249 +6,156 @@@ ![License](https://img.shields.io/github/license/alibaba/dubbo.svg) [![Average time to resolve an issue](http://isitmaintained.com/badge/resolution/apache/dubbo.svg)](http://isitmaintained.com/project/apache/dubbo "Average time to resolve an issue") [![Percentage of issues still open](http://isitmaintained.com/badge/open/apache/dubbo.svg)](http://isitmaintained.com/project/apache/dubbo "Percentage of issues still open") - [![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/intent/tweet?text=Apache%20Dubbo%20is%20a%20high-performance%2C%20java%20based%2C%20open%20source%20RPC%20framework.&url=http://dubbo.apache.org/&via=ApacheDubbo&hashtags=rpc,java,dubbo,micro-service) - [![Twitter Follow](https://img.shields.io/twitter/follow/ApacheDubbo.svg?label=Follow&style=social&logoWidth=0)](https://twitter.com/intent/follow?screen_name=ApacheDubbo) - [![Gitter](https://badges.gitter.im/alibaba/dubbo.svg)](https://gitter.im/alibaba/dubbo?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) -Apache Dubbo is a high-performance, Java-based open-source RPC framework. Please visit the [official site](http://dubbo.apache.org) for the quick start guide and documentation, as well as the [wiki](https://github.com/apache/dubbo/wiki) for news, FAQ, and release notes. +Apache Dubbo is an easy-to-use Web and RPC framework that provides multiple +language implementations(Java, [Go](https://github.com/apache/dubbo-go), [Rust](https://github.com/apache/dubbo-rust), [Node.js](https://github.com/apache/dubbo-js), [Web](https://github.com/apache/dubbo-js)) for communication, service discovery, traffic management, +observability, security, tools, and best practices for building enterprise-ready microservices. - Visit [the official website](https://dubbo.apache.org/) for more information. + We are now collecting Dubbo user info to help us to improve Dubbo further. Kindly support us by providing your usage information on [Wanted: who's using dubbo](https://github.com/apache/dubbo/discussions/13842), thanks :) ## Architecture - ![Architecture](https://dubbo.apache.org/imgs/architecture.png) -## Features - -* Transparent interface based RPC -* Intelligent load balancing -* Automatic service registration and discovery -* High extensibility -* Runtime traffic routing -* Visualized service governance +* Consumer and provider communicate with each other using RPC protocol like triple, tcp, rest, etc. +* Consumers automatically trace provider instances registered in registries(Zookeeper, Nacos) and distribute traffic among them by following traffic strategies. +* Rich features for monitoring and managing the cluster with dynamic configuration, metrics, tracing, security, and visualized console. ## Getting started +Follow the instructions below to learn how to: -The following code snippet comes from [Dubbo Samples](https://github.com/apache/dubbo-samples.git). You may clone the sample project and step into the `dubbo-samples-api` subdirectory before proceeding. - -```bash -git clone https://github.com/apache/dubbo-samples.git -cd dubbo-samples/1-basic/dubbo-samples-api -``` - -There's a [README](https://github.com/apache/dubbo-samples/blob/389cd612f1ea57ee6e575005b32f195c442c35a2/1-basic/dubbo-samples-api/README.md) file under `dubbo-samples-api` directory. We recommend referencing the samples in that directory by following the below-mentioned instructions: - -### Maven dependency - -```xml -<properties> - <dubbo.version>3.2.11</dubbo.version> -</properties> - -<dependencies> - <dependency> - <groupId>org.apache.dubbo</groupId> - <artifactId>dubbo</artifactId> - <version>${dubbo.version}</version> - </dependency> - <dependency> - <groupId>org.apache.dubbo</groupId> - <artifactId>dubbo-dependencies-zookeeper</artifactId> - <version>${dubbo.version}</version> - <type>pom</type> - </dependency> -</dependencies> -``` - -### Define service interfaces - -```java -package org.apache.dubbo.samples.api; - -public interface GreetingsService { - String sayHi(String name); -} -``` - -*See [api/GreetingsService.java](https://github.com/apache/dubbo-samples/blob/389cd612f1ea57ee6e575005b32f195c442c35a2/1-basic/dubbo-samples-api/src/main/java/org/apache/dubbo/samples/api/GreetingsService.java) on GitHub.* - -### Implement service interface for the provider - -```java -package org.apache.dubbo.samples.provider; - -import org.apache.dubbo.samples.api.GreetingsService; - -public class GreetingsServiceImpl implements GreetingsService { - @Override - public String sayHi(String name) { - return "hi, " + name; - } -} -``` - -*See [provider/GreetingsServiceImpl.java](https://github.com/apache/dubbo-samples/blob/389cd612f1ea57ee6e575005b32f195c442c35a2/1-basic/dubbo-samples-api/src/main/java/org/apache/dubbo/samples/provider/GreetingsServiceImpl.java) on GitHub.* - -### Start service provider - -```java -package org.apache.dubbo.samples.provider; - - -import org.apache.dubbo.config.ApplicationConfig; -import org.apache.dubbo.config.RegistryConfig; -import org.apache.dubbo.config.ServiceConfig; -import org.apache.dubbo.samples.api.GreetingsService; - -import java.util.concurrent.CountDownLatch; - -public class Application { - private static String zookeeperHost = System.getProperty("zookeeper.address", "127.0.0.1"); - - public static void main(String[] args) throws Exception { - ServiceConfig<GreetingsService> service = new ServiceConfig<>(); - service.setApplication(new ApplicationConfig("first-dubbo-provider")); - service.setRegistry(new RegistryConfig("zookeeper://" + zookeeperHost + ":2181")); - service.setInterface(GreetingsService.class); - service.setRef(new GreetingsServiceImpl()); - service.export(); - - System.out.println("dubbo service started"); - new CountDownLatch(1).await(); - } -} -``` +### Programming with lightweight RPC API +[5 minutes step-by-step guide](https://dubbo.apache.org/zh-cn/overview/quickstart/rpc/java) -*See [provider/Application.java](https://github.com/apache/dubbo-samples/blob/389cd612f1ea57ee6e575005b32f195c442c35a2/1-basic/dubbo-samples-spring-xml/src/main/java/org/apache/dubbo/samples/provider/Application.java) on GitHub.* +Dubbo supports building RPC services with only a few lines of code while depending only on a lightweight SDK (<10MB). The protocol on the wire can be [Triple](https://dubbo.apache.org/zh-cn/overview/reference/protocols/triple/)(fully gRPC compatible and HTTP-friendly), Dubbo2(TCP), REST, or any protocol of your choice. -### Build and run the provider -```bash -mvn clean package -mvn -Djava.net.preferIPv4Stack=true -Dexec.mainClass=org.apache.dubbo.samples.provider.Application exec:java -``` +### Building a microservice application with Spring Boot +[5 minutes step-by-step guide](https://dubbo.apache.org/zh-cn/overview/quickstart/microservice) -### Call remote service in the consumer +It's highly recommended to start your microservice application with the Spring Boot Starter `dubbo-spring-boot-starter` provided by Dubbo. With only a single dependency and yaml file, and optionally a bunch of other useful spring boot starters, you can enable all of the Dubo features like service discovery, observability, tracing, etc. -```java -package org.apache.dubbo.samples.client; +Next, learn how to [deploy](https://dubbo.apache.org/zh-cn/overview/tasks/deploy/), [monitor](https://dubbo.apache.org/zh-cn/overview/tasks/observability/), and [manage the traffic](https://dubbo.apache.org/zh-cn/overview/tasks/traffic-management/) of your Dubbo application and cluster. +## More Features +Get more details by visiting the links below to get your hands dirty with some well-designed tasks on our website. -import org.apache.dubbo.config.ApplicationConfig; -import org.apache.dubbo.config.ReferenceConfig; -import org.apache.dubbo.config.RegistryConfig; -import org.apache.dubbo.samples.api.GreetingsService; +* [Launch a Dubbo project](https://dubbo.apache.org/zh-cn/overview/tasks/develop/template/) +* [RPC protocols](https://dubbo.apache.org/zh-cn/overview/core-features/protocols/) +* [Traffic management](https://dubbo.apache.org/zh-cn/overview/core-features/traffic/) +* [Service discovery](https://dubbo.apache.org/zh-cn/overview/core-features/service-discovery/) +* [Observability](https://dubbo.apache.org/zh-cn/overview/core-features/observability/) +* [Extensibility](https://dubbo.apache.org/zh-cn/overview/core-features/extensibility/) +* [Security](https://dubbo.apache.org/zh-cn/overview/core-features/security/) +* [Visualized console and control plane](https://dubbo.apache.org/zh-cn/overview/reference/admin/) +* [Kubernetes and Service mesh](https://dubbo.apache.org/zh-cn/overview/core-features/service-mesh/) -public class Application { - private static String zookeeperHost = System.getProperty("zookeeper.address", "127.0.0.1"); +## Which Dubbo version should I use? +| **Dubbo3** | **JDK** | **Dependencies** | **Description** | +| --- | --- | --- | --- | +| 3.3.0-beta| 1.8 ~ 17 | [dependency list](https://github.com/apache/dubbo/blob/3.3/dubbo-dependencies-bom/pom.xml#L94) | **- Unstable version** <br/> **- Features** <br/> - Triple - gRPC and cURL compatible.<br/> - Rest-style programming support.<br/> - Spring Boot Starters. | +| 3.2.5 | 1.8 ~ 17 | [dependency list](https://github.com/apache/dubbo/blob/dubbo-3.2.5/dubbo-dependencies-bom/pom.xml#L94) | **- Stable version (active)** <br/> **- Features** <br/> - Out-of-box metrics and tracing support.<br/> - Threadpool Isolation<br/> - 30% performance<br/> - Native Image| +| 3.1.11 | 1.8 ~ 11 | [dependency list](https://github.com/apache/dubbo/blob/dubbo-3.2.11/dubbo-dependencies-bom/pom.xml#L94) | **Stable version (not active)** | - public static void main(String[] args) { - ReferenceConfig<GreetingsService> reference = new ReferenceConfig<>(); - reference.setApplication(new ApplicationConfig("first-dubbo-consumer")); - reference.setRegistry(new RegistryConfig("zookeeper://" + zookeeperHost + ":2181")); - reference.setInterface(GreetingsService.class); - GreetingsService service = reference.get(); - String message = service.sayHi("dubbo"); - System.out.println(message); - } -} -``` -*See [client/Application.java](https://github.com/apache/dubbo-samples/blob/389cd612f1ea57ee6e575005b32f195c442c35a2/1-basic/dubbo-samples-api/src/main/java/org/apache/dubbo/samples/client/Application.java) on GitHub.* +| **Dubbo2** | **JDK** | **Dependencies** | **Description** | +| --- | --- | --- | --- | +| 2.7.23 | 1.8 | [dependency list](https://github.com/apache/dubbo/blob/dubbo-2.7.23/dubbo-dependencies-bom/pom.xml#L92) | EOL | +| 2.6.x, 2.5.x | 1.6 ~ 1.7 | | EOL | -### Build and run the consumer - -```bash -mvn clean package -mvn -Djava.net.preferIPv4Stack=true -Dexec.mainClass=org.apache.dubbo.samples.client.Application exec:java -``` - -The consumer will print out `hi, dubbo` on the screen. - - -### Next steps - -* [Your first Dubbo application](https://dubbo.apache.org/en/blog/2018/08/07/dubbo-101/) - A 101 tutorial to reveal more details, with the same code above. -* [Dubbo user manual](https://dubbo.apache.org/en/overview/what/) - How to use Dubbo and all its features. -* [Dubbo developer guide](https://dubbo.apache.org/en/docs3-v2/java-sdk/) - How to involve in Dubbo development. -* [Dubbo admin manual](https://dubbo.apache.org/en/docs/v2.7/admin/ops/) - How to admin and manage Dubbo services. - -## Building - -If you want to try out the cutting-edge features, you can build with the following commands. (Java 1.8 is needed to build the master branch) - -``` - mvn clean install -``` - -## Recommended Test Environment -To avoid intermittent test failures (i.e., flaky tests), it is recommended to have a machine or virtual machine with the following specifications: - -* Minimum of 2CPUs. -* Minimum of 2Gb of RAM. +## Contributing +See [CONTRIBUTING](https://github.com/apache/dubbo/blob/master/CONTRIBUTING.md) for details on submitting patches and the contribution workflow. + ### How does the Dubbo Community collaborate? + + The Dubbo Community primarily communicates on GitHub through issues, discussions, and pull requests. + + - Issues: We use issues to track bugs and tasks. Any **work-related** item is associated with an issue. + - Discussions: We use discussions for questions, early proposals, and announcements. Any **idea-related** item is associated with a discussion. + - Pull Requests: We use pull requests to merge a set of changes from contributors into Dubbo. + + We have also implemented [a project board](https://github.com/orgs/apache/projects/337) to monitor all the items. + + Any essential changes should be discussed on the mailing list before they happen. + + ### Seeking for help + + If you have questions such as: + + - What is Dubbo? + - How do I use Dubbo? + - Why did an unexpected result occur? + + Please start a discussion at https://github.com/apache/dubbo/discussions. + + However, if you encounter the following situations: + + - You're certain there's a bug that Dubbo needs to fix, + - You believe a feature could be enhanced, + - You have a detailed proposal for improving Dubbo, + + Please open an issue at https://github.com/apache/dubbo/issues. + + To ask effective questions, we recommend reading **[How To Ask Questions The Smart Way](https://github.com/selfteaching/How-To-Ask-Questions-The-Smart-Way/blob/master/How-To-Ask-Questions-The-Smart-Way.md)** first. + + ### Contribution + + - Browse the "help wanted" tasks in the [Dubbo project board](https://github.com/orgs/apache/projects/337). + - Participate in discussions on the mailing list. See the subscription [guide](https://github.com/apache/dubbo/wiki/Mailing-list-subscription-guide). + - Respond to queries in the [discussions](https://github.com/apache/dubbo/issues). + - Resolve bugs reported in [issues](https://github.com/apache/dubbo/issues) and send us a pull request. + - Review existing [pull requests](https://github.com/apache/dubbo/pulls). + - Enhance the [website](https://github.com/apache/dubbo-website). We typically need: + - Blog posts + - Translations for documentation + - Use cases showcasing Dubbo integration in enterprise systems. + - Improve the [dubbo-admin](https://github.com/apache/dubbo-admin). + - Contribute to the projects listed in the [ecosystem](https://github.com/apache/?q=dubbo&type=all&language=&sort=). + - Any other forms of contribution not listed above are also welcome. + - If you're interested in contributing, please send an email to [d...@dubbo.apache.org](mailto:d...@dubbo.apache.org) to let us know! + + For further details, please refer our [guide](https://github.com/apache/dubbo/blob/master/CONTRIBUTING.md) about how to contribute Dubbo. + + ## Reporting bugs + + Please follow the [template](https://github.com/apache/dubbo/issues/new?template=dubbo-issue-report-template.md) for reporting any issues. + + ## Reporting a security vulnerability + + Please report security vulnerabilities to [us](mailto:secur...@dubbo.apache.org) privately. + ## Contact +* WeChat: apachedubbo +* DingTalk group: 37290003945 +* Mailing list: [guide](https://dubbo.apache.org/zh-cn/contact/) +* Twitter: [@ApacheDubbo](https://twitter.com/ApacheDubbo) +* Security issues: please mail to [us](mailto:secur...@dubbo.apache.org) privately. -* Mailing list: - * dev list: for dev/user discussion. [subscribe](mailto:dev-subscr...@dubbo.apache.org), [unsubscribe](mailto:dev-unsubscr...@dubbo.apache.org), [archive](https://lists.apache.org/list.html?d...@dubbo.apache.org), [guide](https://github.com/apache/dubbo/wiki/Mailing-list-subscription-guide) +## Contributing -* Bugs: [Issues](https://github.com/apache/dubbo/issues/new?template=dubbo-issue-report-template.md) -* Gitter: [Gitter channel](https://gitter.im/alibaba/dubbo) -* Twitter: [@ApacheDubbo](https://twitter.com/ApacheDubbo) +See [CONTRIBUTING](https://github.com/apache/dubbo/blob/master/CONTRIBUTING.md) for details on submitting patches and the contribution workflow. + +### How can I contribute? + +* Take a look at issues with tags marked [`Good first issue`](https://github.com/apache/dubbo/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22) or [`Help wanted`](https://github.com/apache/dubbo/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22). +* Join the discussion on the mailing list, subscription [guide](https://github.com/apache/dubbo/wiki/Mailing-list-subscription-guide). +* Answer questions on [issues](https://github.com/apache/dubbo/issues). +* Fix bugs reported on [issues](https://github.com/apache/dubbo/issues), and send us a pull request. +* Review the existing [pull request](https://github.com/apache/dubbo/pulls). +* Improve the [website](https://github.com/apache/dubbo-website), typically we need - * blog post - * translation on documentation - * use cases around the integration of Dubbo in enterprise systems. ++ * blog post ++ * translation on documentation ++ * use cases around the integration of Dubbo in enterprise systems. +* Improve the [dubbo-admin/dubbo-monitor](https://github.com/apache/dubbo-admin). +* Contribute to the projects listed in [ecosystem](https://github.com/dubbo). +* Other forms of contribution not explicitly enumerated above. +* If you would like to contribute, please send an email to d...@dubbo.apache.org to let us know! + +## Reporting bugs + +Please follow the [template](https://github.com/apache/dubbo/issues/new?template=dubbo-issue-report-template.md) for reporting any issues. + +## Reporting a security vulnerability + +Please report security vulnerabilities to [us](mailto:secur...@dubbo.apache.org) privately. ## Dubbo ecosystem