Community Blog Introduction to Nacos 2.3.0-Beta Version

Introduction to Nacos 2.3.0-Beta Version

This article introduces the major changes of Nacos 2.3.0-Beta version.

By Nacos Community

Let’s look at the changes of Nacos 2.3.0-Beta Version below.

Nacos Control Plugin

After introducing the Alpha version of the control plugin in Nacos version 2.2.0, the community has refactored and modified the plugin multiple times to enhance abstraction and stability. Finally, in Nacos version 2.3.0, the control plugin is officially released. This plugin is designed to prevent capacity issues in Nacos clusters caused by a large number of requests and connections, which can lead to larger-scale failures.

For more information on using the default control implementation plugins and developing custom control plugins, please refer to the Control plugin [1] documentation.

Nacos Configuration Change Plugin

As a core feature of Nacos, configuration management has garnered attention from developers, operations and maintenance personnel, and auditors. Many operations and maintenance personnel, as well as auditors, have requested features such as configuration change auditing and change notification from the community. Developers also desire format verification capabilities in Nacos to prevent application failures resulting from configuration modification errors.

Since Nacos configuration management itself is unaware of the configuration content, and each user company has different auditing and notification systems, Nacos formulated the topic of configuration change plugins to intervene in the configuration change process through plugins, in order to cater to a wider range of user demands.

After long-term efforts by developers, the plugin is released in version 2.3.0. Users can develop custom plugins to connect to their respective auditing and notification systems before and after configuration changes, and perform additional verification operations such as format verification and configuration name standardization. Additionally, the Nacos community provides default plugin implementations that enable webhook integration for configuration change notification and file name verification for configuration imports. For more information, please refer to the Configuration change plugins [2] documentation.

Nacos Request Parameters Verification

Before version 2.3.0, parameter verification logic in Nacos was scattered and separately validated in various request processing methods, making changes and maintenance difficult. As a result, some parameters were left unverified. Moreover, the parameter verification rules were unclear and inconsistent, leading to functions that did not meet user expectations or vulnerabilities arising from the use of special characters. This problem could also result in a large number of push notifications, causing bandwidth congestion, excessive memory usage, and application failures.

In version 2.3.0, Nacos standardized the parameter verification rules, implemented unified parameter verification logic on the server side, and added a parameter verification layer to validate requests from clients to servers based on these rules. You can enable the parameter verification feature, which ensures the validity of parameters, prevents unexpected errors, and mitigates performance issues caused by incorrect usage.

For more information, please see the Parameter verification rules [3] documentation.

Nacos Capability Negotiation

With the increasing number of features and versions in Nacos, maintaining compatibility between clients and servers has become crucial. It becomes increasingly difficult to maintain compatibility through trial and error. Therefore, the Nacos community introduced a topic in last year's Open Source Promotion Program (OSPP) to add a capability negotiation mechanism between clients and servers. This mechanism allows both sides to determine the supported functions of the other side upon connection, enabling corresponding functions when supported. This approach avoids unnecessary communication overhead caused by trial and error.

In version 2.3.0, this capability negotiation feature is integrated as a foundation for future optimization features in Nacos 3.0.

Other Important Changes

Nacos 2.3.0 also introduces the following features: client exception metrics, gRPC long connections with SSL, and the option to disable the open-source console. For more details, please refer to the list of changes.

You are welcome to try these features.

## feature
[#5698] Support nacos control plugin.
[#8458] Support ability negotiations between server and clients.
[#8460] Support config change hook plugin.
[#10117] Support metrics for nacos client request server exception.
[#10150] Support SSL for grpc connection.
[#10223] Support auto build instance id when client request instance id is null.
[#10288] Support get more module state and switches in console.
[#10734] Support validate most of request parameters.
[#10774] Support toml format for configuration in console ui.
[#10831] Support batch deregister instances for service.
[#10971] Support disable console ui and support add guide information.

## Enhancement&Refactor
[#6819] Add page size selector in service details page.
[#8107][#9109][#10169][#10176] Enhance hint when console ui session expired for default auth plugin.
[#9085] Add the Reachability Metadata required by native-image.
[#9821] Enhance datasource plugin to make more datasource implementation easier.
[#9881] Enhance configuration page to supports folding when editing configuration.
[#10067] Enhance Windows compatibility for configuration snapshot.
[#10155] Enhance hints for grpc request when request timeout.
[#10343] Use CMS as default GC when jdk less 9.
[#10361] Refactor module switches to make only load specified module but not only close in console ui.
[#10520] Validate for namespace show name when create new namespace.
[#10521] Enhance the hints for `No DataSourceSet` error by validate datasource after construction.
[#10539] Enhance logs when opeation configuration failed.
[#10730] Link to v2 document for console ui.
[#10811] Enhance compatibility for colorful service healthy status in console ui.
[#10891] Support setting maximum number of push retries.
[#10930] Forward compatible old version secretKey for default auth plugin.
[#11129] Remove the namespace information from the node list page.
[#11231] Optimize the handleSpringBinder method in PropertiesUtil.

## BugFix
[#10056] Fix loss revision of client for distro sync.
[#10128] Fix wrong judgement in raft stateMachine.
[#10149] Fix dead lock on sending connection reset request on server over limit.
[#10271] Fix nacos-client failover switch file path.
[#10318] Fix import configuration problem.
[#10347] Fix only admin role user can register service into default namespace when enabled default auth plugin.
[#10406] Fix jraft install leader snapshot error after disconnection.
[#10427] Fix nacos client no response when handle server request with exception.
[#10464] Fix NPE when concurrent operations for client.
[#10470] Fix some missed i18n for console ui.
[#10509] Fix out data connection not be disconnect problem.
[#10548] Fix switch domain might not load snapshot after restart.
[#10556] Fix index loss for client and service in extreme scenarios.
[#10583] Fix some new API loss auth check.
[#10585] Fix selectInstances and selectOneHealthyInstance methods will not subscribe service problem.
[#10593] Fix invalid create `file:` dir under `nacos.home`.
[#10598] Fix nacos-client not random get server address when using address.
[#10606] Fix memory leak for nacos client when user create and shutdown client frequently.
[#10657] Fix NPE when using derby datasource for cluster mode.
[#10935] Fix startsWith judgement wrong when ignoreCase is true.
[#11056] Fix Batch register count size wrong, when batch register sereval time.
[#11059] Fix RPC_CLIENT_TLS_PROTOCOLS setting error.
[#11192] Fix batchRegisterInstance not recalculate revision prblem.
[#11197] Fix frequent do query service when hit protect empty.

## Dependency
[#7698] Remove httpasyncclient version dependency management to avoid version conflicts.
[#10416] Upgrade console yaml editor.
[#10648] Optimize Guava Dependency.
[#10893] Upgrade spring boot to 2.7.15.
[#11199] Upgrade grpc version to 1.57.2.

Future Plan

2.X Follow-up Plan

It has been nearly two years since the official release of version 2.0.0 in March 2021. Now, version 2.3.0 has been released, completing the plugin refinement of most functions. In the subsequent version 2.3.X, our main focus will be on fixing the issues present in the current version and making small functional optimizations. Additionally, version 2.4.0 will serve as an interim version for Nacos 3.0. In this version, we have optimized and refactored a significant amount of code to improve stability, robustness, and ease of use, making a smooth transition to Nacos 3.0 possible.

About Nacos

Nacos aims to assist you in discovering, configuring, and managing microservices. It provides a user-friendly set of features that facilitate dynamic service discovery, service configuration, service metadata, and traffic management.

By utilizing Nacos, you can build, deliver, and manage microservices platforms more quickly and easily. Nacos serves as a service infrastructure for constructing modern application architectures, such as the microservices paradigm and cloud-native paradigm, with a focus on services.


[1] Control plugins
[2] Configuration change plugins
[3] Parameter verification rules

0 1 0
Share on

You may also like


Related Products