腾讯开源的一站式微服务解决方案


大家好,我是开源大叔!

微服务现在大家都很熟悉了,国内最常见的是 Spring Cloud Alibaba,今天给大家介绍腾讯开源的一站式微服务解决方案– Spring Cloud Tencent。

项目简介

Spring Cloud Tencent 主要提供了微服务领域常见的服务注册与发现、配置中心、服务路由、限流熔断、服务监控以及元数据链路透传能力。

功能介绍

1、服务注册与发现

服务注册发现是 SCT 核心功能,任何 Spring Cloud 应用都可以注册到 Polaris 服务端。

2、配置中心

通过反射的方式实现配置中心有动态刷新能力,性能更好。

3、服务路由

A 服务调用 B 服务时,先从注册中心获取全量 B 服务地址信息。没有服务路由,根据负载均衡算法从B服务列表中挑选一个地址进行调用。有了服务路由后,先从从全量服务地址中根据路由规则选取一批目标服务地址,再根据负载均衡算法挑选实例调用。

使用场景包括灰度发布、金丝雀发布、按机房收敛流量等。

4、服务限流

服务限流是服务自我保护措施的一种,SCT 支持服务级限流、 path 限流、请求头等参数级别限流。

限流规则支持按 QPS 快速失败或者匀速排队。

5、服务熔断

服务熔断是一种容错保护机制,SCT支持熔断策略包括故障比例熔断、连续故障熔断、熔断隔离时间。

项目使用

1、安装北极星服务端

官网测试环境:http://14.116.241.63:8080/

  • 用户名: polaris
  • 密码: polaris

2、搭建 Spring Cloud 项目, 添加 Spring Cloud Tencent 依赖

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.tencent.cloud</groupId>
<artifactId>spring-cloud-tencent-dependencies</artifactId>
<version>1.8.1-2021.0.3</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

<!-- 新项目建议使用 all 依赖,一次性引 sct 所有 starter。 -->
<dependencies>
<dependency>
<groupId>com.tencent.cloud</groupId>
<artifactId>spring-cloud-starter-tencent-all</artifactId>
<!-- 注意需要指定 type=pom-->
<type>pom</type>
</dependency>
</dependencies>

3、添加配置文件

1
2
3
4
5
6
7
8
9
10
11
12
server:
port: 8080
spring:
application:
name: quickstart-caller
config:
import: polaris
cloud:
polaris:
# 接入北极星服务端
address: grpc://183.47.111.80:8091
namespace: default

4、启动项目

项目注册成功!

5、服务调用

Spring Cloud 中可通过 RestTemplate 或者 Feign 发起服务调用。

1
2
3
4
<dependency>
<groupId>com.tencent.cloud</groupId>
<artifactId>spring-cloud-starter-tencent-polaris-discovery</artifactId>
</dependency>
1
2
3
4
@GetMapping("/user-info")
public String getUser() {
return restTemplate.getForEntity("http://xxxx/users", String.class).getBody();
}

项目地址

1
https://github.com/Tencent/spring-cloud-tencent

总结

Spring Cloud Tencent 相比于 Spring Cloud Alibaba 增加了服务路由功能,同时北极星平台中增加了熔断限流功能,对于使用者更友好,更多功能,感兴趣的同学赶快是试试吧~


  目录