Framework
Tencent/spring-cloud-tencent avatar
Tencent/spring-cloud-tencent

Spring Cloud Tencent: Polaris-backed service governance for Spring Cloud apps

Spring Cloud Tencent is a Spring Cloud based Service Governance Framework provided by Tencent.

3,297 stars510 forksJavaNOASSERTION

At a glance

What is it?
Spring Cloud Tencent implements the Spring Cloud SPI and wires it to Polaris for discovery, routing, rate limiting, circuit breaking and config. It suits Java teams already on Spring Cloud who want those controls outside the application code, and it assumes you can run a Polaris server.
Who is it for?
Adopt it if your services are already Spring Cloud and you are willing to run or reach a Polaris server, because the starters give you discovery, routing, rate limiting, circuit breaking and config through the standard SPI rather than through hand-written code. Do not adopt it if you cannot operate Polaris or if you need a governance stack outside the Spring Cloud programming model.
Can I use it commercially?
Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
Is it still maintained?
Yes. The repository last received commits 20 days ago.
What is it written in?
Mainly Java, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 29, 2026, and from our analysis. They are not legal advice.

Editorial analysis

The gap Spring Cloud Tencent fills between Spring Cloud and Polaris

Spring Cloud defines a set of interfaces for service discovery, configuration, load balancing and the rest. The implementations behind those interfaces are swappable. Spring Cloud Tencent is one such implementation, and it is built around Polaris, an open source system for service discovery and governance that lives in its own repository. The README describes the project as an "one-stop microservice solution which implements the standard Spring Cloud SPI." That sentence is the whole pitch: you keep writing Spring Cloud applications and the governance behaviour comes from Polaris rather than from code you maintain yourself.

The audience is narrow and specific. It is a Java team that already runs Spring Cloud services and has hit the point where discovery, routing rules, rate limits and circuit breaker thresholds are being reimplemented per service or pasted into config files. The README lists the problems the combination is meant to solve: service management (discovery, registry, health check), traffic control (customizable routing, load balance, rate limiting, access control), fault tolerance (circuit breaker at the service, interface and instance level) and config management (version control, grayscale release, dynamic update). Those are operational concerns, and the project's answer is to move them to a server you can see and change without redeploying every consumer.

If your services are not Spring Cloud, none of this applies. The value comes from plugging into the SPI, and there is no partial version of that.

How the starters map Spring Cloud SPI calls onto Polaris

The repository layout makes the architecture legible. Each governance concern is a separate starter module: spring-cloud-starter-tencent-polaris-discovery, spring-cloud-starter-tencent-polaris-config, spring-cloud-starter-tencent-polaris-router, spring-cloud-starter-tencent-polaris-ratelimit, spring-cloud-starter-tencent-polaris-circuitbreaker and spring-cloud-starter-tencent-polaris-auth. You add the ones you want. There is also spring-cloud-starter-tencent-all for pulling the set together, plus shared modules: spring-cloud-tencent-commons, spring-cloud-tencent-polaris-context and spring-cloud-tencent-rpc-enhancement. Two more starters sit outside the Polaris family: spring-cloud-starter-tencent-metadata-transfer and spring-cloud-starter-tencent-polaris-contract.

That split matters when you debug. A discovery problem belongs to the discovery starter and the Polaris server it talks to. A routing problem belongs to the router starter. Because the modules are separate dependencies, you can read the one that is misbehaving instead of reasoning about a monolith.

The data flow is the standard Spring Cloud one with Polaris as the backing store. The application registers itself and resolves other services through the discovery starter; Polaris holds the registry and the health check state. Traffic rules, rate limits and circuit breaker thresholds are evaluated against what Polaris serves, which is why changing a rule does not require a rebuild. Config is fetched and updated through the config starter, which the README ties to version control, grayscale release and dynamic update. The RPC enhancement and context modules carry the metadata that lets those decisions be made per request rather than per service.

One honest note about the documentation: the README is an index, not a manual. It points to the Wiki for detail, and the mechanism explanations live there. Anyone evaluating this from the README alone will see the shape of the system but not the rule semantics.

Installing Spring Cloud Tencent from Maven Central and registering a service

The README states that all components are on Maven Central, so there is nothing to build unless you are working on the project itself. The first step is the BOM. The README's example imports spring-cloud-tencent-dependencies in dependencyManagement with the version placeholder it tells you to take from the version management wiki page. Do not guess that version; the README explicitly defers to the wiki, and the release list shows the version strings are long and branch-specific, such as 2.1.2.0-2025.1.1.

xml
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.tencent.cloud</groupId>
            <artifactId>spring-cloud-tencent-dependencies</artifactId>
            <version>${LATEST_VERSION_FROM_VERSION_MANAGEMENT_IN_WIKI}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

With the BOM in place, add the starter for the capability you want. The README's example adds spring-cloud-starter-tencent-polaris-discovery with no version, because the BOM supplies it.

xml
<dependencies>
    <dependency>
        <groupId>com.tencent.cloud</groupId>
        <artifactId>spring-cloud-starter-tencent-polaris-discovery</artifactId>
    </dependency>
</dependencies>

Next you need a Polaris server to talk to. The README provides an experience environment for developers: a Polaris Console at http://119.91.66.223:80 and a server address of grpc://119.91.66.223:8091. It also notes that the examples in spring-cloud-tencent-example default to grpc://119.91.66.223:8091. For a first run, pointing a sample service at that address is the shortest path to seeing registration happen in the console. For anything beyond a first run, replace it with your own server.

If you do want to build the project from source rather than consume the artifacts, the README gives the wrapper commands: ./mvnw clean package on Linux and Mac, and .\mvnw.cmd clean package on Windows.

The Polaris dependency is the real adoption cost

Spring Cloud Tencent is not a standalone library you drop into a service and forget. It is a client for Polaris, and the governance features only exist if a Polaris server is reachable. That means the decision to adopt this project is really two decisions: adopt the starters, and run or obtain Polaris. The repository does not ship the server; it links to the separate Polaris repository.

The README's experience environment is convenient for evaluation and unsuitable for production by its own framing. It is offered "for developers," with a public console URL and a public gRPC address. Using it in production would put your service registry and your traffic rules on infrastructure you do not control, and the README gives no availability statement for it.

There is a second limitation worth naming. The project implements the Spring Cloud SPI, which means it inherits Spring Cloud's programming model and its coupling to Spring Boot and Spring Cloud version lines. The release names make this visible: 2.1.2.0-2025.1.1, 2.1.2.1-2021.0.9 and 2.1.2.0-2025.0.2 all encode a Spring Cloud release train in the version string. Upgrading Spring Boot is therefore not an independent decision from upgrading this project. Teams that keep Spring Cloud versions pinned for long periods will find themselves on a matching pinned line here too.

Finally, the README does not document rollback. If a routing rule or a grayscale config release goes wrong, the README does not tell you how to revert it. That may well be covered in the Wiki or in Polaris's own documentation, but from this repository alone it is an open question, and it is one you should answer before you depend on the config starter in production.

Spring Cloud Tencent compared with Spring Cloud Alibaba

The natural comparison is Spring Cloud Alibaba, which appears in the related searches alongside this project. Both take the same architectural position: keep the Spring Cloud SPI and back it with a vendor's middleware instead of writing your own. The difference is what sits behind the SPI. Spring Cloud Alibaba's governance components are built around the Alibaba stack, with Nacos as the registry and config center in the common setup. Spring Cloud Tencent's are built around Polaris.

That difference is not cosmetic. The two projects expose different rule models for routing, rate limiting and circuit breaking, and they have different consoles and different operational surfaces. If your organization already runs Nacos, adding Spring Cloud Tencent means running a second registry and governance system next to it, or migrating. If you are starting fresh, the choice is closer to which server you would rather operate.

There is also a scope difference visible in the module list. Spring Cloud Tencent ships a dedicated auth starter and a contract starter, and it separates metadata transfer and RPC enhancement into their own modules. Whether those match your needs is a question about your architecture, not about which project is better. Read the rule semantics for the features you actually intend to use before deciding, because the starter names tell you what exists but not how the rules behave.

Maintenance, licensing and what upgrading actually involves

The repository is not archived, and the last push was on 2026-09-10. The most recent release listed is 2.1.2.0-2025.1.1, published on 2026-09-01, with two earlier releases on 2026-07-27. The default branch is 2025.1. There is a CHANGELOG.md and a changes directory at the top level, which is where release-by-release detail would live; the README itself does not describe an upgrade procedure.

Upgrade cost is driven by the version string. Each release name pairs a project version with a Spring Cloud release train, so moving to a new release usually means moving Spring Boot and Spring Cloud with it. Budget for that as a coordinated upgrade across every service that uses the starters, not as a patch bump. The BOM is what makes it manageable: because the starters are versionless in the README's example and the BOM pins them, the edit is concentrated in dependencyManagement.

On licensing, there is a discrepancy you should resolve yourself. The repository metadata reports NOASSERTION, while the README badge links to BSD 3-Clause and the top level contains a LICENSE file and a .licenserc.yaml. NOASSERTION from repository metadata usually means the license could not be matched automatically, not that no license exists, but the README badge is not the license text either. Read the LICENSE file before you redistribute anything. This is not legal advice, and if your organization has a policy on license review, that file is the input it needs.

Editorial conclusion

Adopt it if your services are already Spring Cloud and you are willing to run or reach a Polaris server, because the starters give you discovery, routing, rate limiting, circuit breaking and config through the standard SPI rather than through hand-written code. Do not adopt it if you cannot operate Polaris or if you need a governance stack outside the Spring Cloud programming model. Before committing, check the version management wiki page for the release that matches your Spring Boot and Spring Cloud line, confirm the Polaris server address you will point at, and read the LICENSE file, since the repository metadata reports NOASSERTION while the README badge shows BSD 3-Clause.

Frequently asked questions

What is Spring Cloud Tencent used for?

It implements the Spring Cloud SPI and connects Spring Cloud applications to Polaris for service discovery, traffic control, fault tolerance and config management. The README lists its goals as service management, customizable routing and load balancing, rate limiting, access control, circuit breaking at service, interface and instance level, and config version control with grayscale release and dynamic update.

How do I add Spring Cloud Tencent to a project?

Import the spring-cloud-tencent-dependencies BOM in dependencyManagement, taking the version from the version management wiki page, then add the starter for the feature you want, such as spring-cloud-starter-tencent-polaris-discovery, without a version. All components are published to Maven Central, so no local build is required.

What is the difference between Spring Cloud Tencent and Spring Cloud Alibaba?

Both keep the Spring Cloud SPI and back it with vendor middleware, but Spring Cloud Tencent is built around Polaris while Spring Cloud Alibaba is built around the Alibaba stack. The rule models, consoles and operational surfaces differ, so the practical question is which governance server you are willing to run.

What version of Spring Cloud Tencent should I use?

The README does not list versions inline; it points to the Spring Cloud Tencent Version Management wiki page. Release names such as 2.1.2.0-2025.1.1 pair a project version with a Spring Cloud release train, so pick the one matching your Spring Boot and Spring Cloud line.

Official sources

  1. Issues
  2. README
  3. Releases
  4. Tencent/spring-cloud-tencent on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/tencent-spring-cloud-tencent.svg)](https://hysenlabs.com/projects/tencent-spring-cloud-tencent)