Spring Cloud Tencent 是什么

Spring Cloud Tencent 是腾讯开源的一站式微服务解决方案。Spring Cloud Tencent 实现了 Spring Cloud 标准微服务 SPI,开发者可以基于 Spring Cloud Tencent 快速开发 Spring Cloud 微服务架构应用。Spring Cloud Tencent 的核心依托腾讯开源的一站式服务发现与治理平台 Polarismesh ,实现各种分布式微服务场景。

Spring Cloud Tencent 提供的能力包括但不限于:

架构图

一、安装北极星

北极星是腾讯开源的服务发现和治理中心,致力于解决分布式或者微服务架构中的服务可见、故障容错、流量控制和安全问题。虽然,业界已经有些组件可以解决其中一部分问题,但是缺少一个标准的、多语言的、框架无关的实现。

腾讯具有海量的分布式服务,加上业务线和技术栈的多样性,沉淀了大大小小数十个相关组件。从 2019 年开始,我们通过北极星对这些组件进行抽象和整合,打造公司统一的服务发现和治理方案,帮助业务提升研发效率和运营质量。

北极星安装非常的简单下载响应平台的 zip 直接运行即可[1]

北极星界面展示

二、服务注册与发现

  • 服务增加 polaris-discovery 依赖
<dependency>    <groupId>com.tencent.cloud</groupId>    <artifactId>spring-cloud-starter-tencent-polaris-discovery</artifactId></dependency>
  • application.yaml 接入 polaris server
spring:  cloud:    polaris:      address: grpc://127.0.0.1:8091
  • 启动服务观察 polaris console

  • 服务调用示例
@Bean@LoadBalancedpublic RestTemplate restTemplate() {  return new RestTemplate();}

@Autowiredprivate RestTemplate restTemplate;

@GetMapping("/consumer")public String consumer() {  return restTemplate.getForObject("http://lengleng-tencent-discovery-provider/provider/lengleng", String.class);}

三、 配置管理

在应用启动 Bootstrap 阶段,Spring Cloud 会调用 PolarisConfigFileLocator 从 Polaris 服务端获取配置文件并加载到 Spring 上下文里。通过 Spring Boot 标准的 @Value,@ConfigurationProperties 注解即可获取配置内容。动态配置刷新能力,则通过 Spring Cloud 标准的 @RefreshScope 机制实现。

  • 服务增加 polaris-config 依赖
<dependency>    <groupId>com.tencent.cloud</groupId>    <artifactId>spring-cloud-starter-tencent-polaris-config</artifactId></dependency>
  • bootstrap.yaml 接入 polaris-config
spring:  cloud:    polaris:      address: grpc://127.0.0.1:8081      config:        groups:          - name: ${spring.application.name}            files: "application"

特别注意: 这里需要配置在 bootstrap, spring-cloud-tencent 未适配 spring boot 最新的文件加载机制

  • 北极星控制台增加配置


  • 代码使用配置
@Value("${name:}")private String name;

四、服务限流

服务限流是最常见的一种服务自我保护措施之一,防止流量洪峰打垮服务。Spring Cloud Tencent Rate Limit 模块内置了针对 Spring Web 和 Spring WebFlux 场景的限流 Filter,结合 Polaris 的限流功能帮忙业务快速接入限流能力。

  • 服务增加 polaris-ratelimit 依赖

使用限流组件时添加 discovery ,方便在服务列表编辑

<dependency>    <groupId>com.tencent.cloud</groupId>    <artifactId>spring-cloud-starter-tencent-polaris-discovery</artifactId></dependency><dependency>    <groupId>com.tencent.cloud</groupId>    <artifactId>spring-cloud-starter-tencent-polaris-ratelimit</artifactId></dependency>
  • 服务接入 polaris-ratelimit
spring:  cloud:    polaris:      address: grpc://127.0.0.1:8091      namespace: default      ratelimit:        reject-http-code: 403        reject-request-tips: "lengleng test rate limit"
  • 北极星控制台增加限流规则

五、服务路由

polaris 能够实现的路由形式较多元数据路由、就近路由、规则路由、自定义路由等形式,本文以元数据路由演示,如下图只会路由至相同元数据信息的服务


  • 服务增加 polaris-router 依赖
<dependency>    <groupId>com.tencent.cloud</groupId>    <artifactId>spring-cloud-starter-tencent-polaris-router</artifactId></dependency>
  • 服务标记元数据
spring:  cloud:    polaris:      address: grpc://127.0.0.1:8091    tencent:      metadata:        content:          version: local

六、限流熔断

故障实例熔断是常见的一种容错保护机制。故障实例熔断能实现主调方迅速自动屏蔽错误率高或故障的服务实例,并启动定时任务对熔断实例进行探活。在达到恢复条件后对其进行半开恢复。在半开恢复后,释放少量请求去进行真实业务探测。并根据真实业务探测结果去判断是否完全恢复正常。


  • 添加限流熔断相关的依赖 polaris-circuitbreaker
<dependency>    <groupId>com.tencent.cloud</groupId>    <artifactId>spring-cloud-starter-tencent-polaris-circuitbreaker</artifactId></dependency>

<dependency>    <groupId>org.springframework.cloud</groupId>    <artifactId>spring-cloud-starter-loadbalancer</artifactId></dependency>

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

<dependency>    <groupId>org.springframework.cloud</groupId>    <artifactId>spring-cloud-circuitbreaker-spring-retry</artifactId></dependency>

<dependency>    <groupId>org.springframework.cloud</groupId>    <artifactId>spring-cloud-starter-openfeign</artifactId></dependency>
  • 提供 Feign 服务调用实现

spring-cloud-tencent 当前版本仅支持 feign 熔断

@FeignClient(contextId = "demoFeign", value = "lengleng-circuitbreaker-tencent-circuitbreaker-provider",  fallback = DemoFeignFallback.class)public interface DemoFeign { @GetMapping("/provider") String get(@RequestParam String name);

}
  • 服务接入 polaris-circuitbreaker
spring:  cloud:    polaris:      address: grpc://127.0.0.1:8091

#开启断路器feign:  circuitbreaker:    enabled: true

  • 编写熔断规则 polaris.yml
consumer:  circuitBreaker:    checkPeriod: 100ms    chain:      - errorCount      - errorRate    plugin:      errorCount:        continuousErrorThreshold: 1        metricNumBuckets: 1      errorRate:        errorRateThreshold: 100        metricStatTimeWindow: 1s        requestVolumeThreshold: 1

全文配套源码: https://github.com/lltx/spring-cloud-tencent-demo[2]

参考资料

[1]

北极星下载: https://github.com/polarismesh/polaris/releases/tag/v1.9.0

[2]

spring-cloud-tencent-demo: https://github.com/lltx/spring-cloud-tencent-demo

本文由 mdnice 多平台发布

一文入门 Spring Cloud Tencent相关推荐

  1. spring cloud tencent:框架概括及组件详解(一)

    0.引言 近期腾讯开源了自己的spring cloud体系技术,称职的技术从业者除做好自己的本职工作外,还需要紧跟技术潮流,实时了解前沿技术,所以本期我们就来一起学习spring cloud tenc ...

  2. 腾讯开源Spring Cloud Tencent 是什么

    Spring Cloud Tencent 是腾讯开源的一站式微服务解决方案.Spring Cloud Tencent 实现了 Spring Cloud 标准微服务 SPI,开发者可以基于 Spring ...

  3. 带你玩转Spring Cloud Tencent(一)概述

    项目地址 spring-cloud-tencent 介绍 Spring Cloud Tencent 是腾讯开源的一站式微服务解决方案. Spring Cloud Tencent 实现了Spring C ...

  4. 重磅!腾讯正式开源 Spring Cloud Tencent,功能真心强大!

    你好,我是 Guide.在 手写一个简化版的 Spring Cloud!这篇文章中,我推荐了 Spring Cloud Tencent 这个项目,这篇文章就简单带着大家来看看腾讯开源的这款一站式微服务 ...

  5. 二、Spring Cloud 极简入门-Spring Cloud简介

    二.Spring Cloud与微服务 1.什么是Spring Cloud 1.1.Spring Cloud基本概念 Spring cloud 是一个基于 Spring Boot 实现的服务治理工具包, ...

  6. 一文了解Spring Cloud Stream体系

    点击蓝色"程序猿DD"关注我哟 加个"星标",不忘签到哦 来源:阿里巴巴中间件 Spring Cloud Stream 在 Spring Cloud 体系内用于 ...

  7. SpringCloud 微服务入门-Spring Cloud 与微服务概述

    导语   首先要了解的是微服务是一种架构风格,跟SOA类似.而Spring Cloud 则是实现这种架构风格的一种技术栈.类似于实现SOA架构风格,用到的具体的技术栈就是ESB.博主也在之前的博客中分 ...

  8. 一文入门 Spring Boot

    文章目录 No.1 创建 Spring Boot 的三种方式 1.在线创建 2.使用开发工具创建 3.Maven 创建 No.2 纯 Java 搭建 SSM 环境 1.创建工程 2.添加 Spring ...

  9. Spring Cloud入门系列(1)- Spring生态体系发展史+全系框架介绍

    Spring发展史 2000年,Java EE和EJB迅速发展,很多知名公司都是采用此技术方案进行项目开发,但是EJB 属于重量级框架,开发繁琐.于是一个叫Rod Johnson的大佬写了一本叫做&l ...

最新文章

  1. web应用的绝对路径和相对路径
  2. 谷歌无人车之父刚推出的“无人驾驶入门”课,到底能学到啥?
  3. 耶鲁大学等机构提出的脑机接口软硬件协同设计,增加脑机的更大潜力
  4. 算法 msrcr_一种快速简便优秀的全局曲线调整与局部信息想结合的非线性彩色增强算法(多图深度分析和探索)...
  5. 获取extjs 选择后的表头_批量写入审计底稿的表头信息设定页面
  6. 怎样在PHP中通过ADO调用Asscess数据库和COM程序
  7. Java并发编程-ReadWriteLock读写锁
  8. [Git]4.1 分支与合并
  9. 计算机专业教研成绩,2018学年第一学期计算机组教研组工作计划
  10. 成都刘女士的第一场锤子科技发布会 | 现场特写
  11. Java中List.forEach()方法使用
  12. 电子工业出版社博文视点在2010年系统架构师大会上集锦
  13. classmethod作用
  14. mysql concat字符串拼接函数使用
  15. EEG有效连接工具包SIFT的介绍与安装
  16. 文本自动生成研究进展与趋势之总结与展望
  17. PM_24 项目管理成熟度模型(了解)、26 知识产权与标准规范、收尾管理
  18. 苹果开发者账号申请需要注意的三要素
  19. 屏蔽百度搜索结果页的推送广告
  20. 蓝牙HC05模块,AT其他指令爆出ERROR[0] 解决方法

热门文章

  1. 暴力破解:利用正则功能自动提取爆破结果中的特征值
  2. 国外android 邮件工具,对比测评国内外四个邮箱APP 邮箱大师表现最全能
  3. ACP报名考试有学历限制吗?
  4. c语言移动光标到指定坐标,C语言实现光标移动
  5. 本地搭建乌云漏洞平台
  6. Python爬虫入门教程:超级简单的Python爬虫教程
  7. 贺世界智能网联汽车大会-速锐得V8翻开智能驾驶汽车新篇章
  8. Windows防火墙使用
  9. 微信小程序的前世今生
  10. Apple开启双重认证过程