0.引言
近期腾讯开源了自己的spring cloud体系技术,称职的技术从业者除做好自己的本职工作外,还需要紧跟技术潮流,实时了解前沿技术,所以本期我们就来一起学习spring cloud tencent的技术体系
1. 框架概括
如果大家已经熟悉spring cloud技术体系再来学习spring cloud tencent的话,会比较轻松,如果你还没有掌握spring cloud技术体系,那么更加建议先将spring cloud的基础组件学习完成后再来学习spring cloud tencent,毕竟当前主流仍然是spring cloud、spring cloud alibaba
快速入门spring cloud alibaba可以参考我之前的专栏:
从零开始学习微服务
以下内容基于spring cloud tencent官方文档
1.1 框架介绍
框架本身是标准的微服务框架,包含了网关/路由、配置中心、注册中心等基础组件,也包含了限流模块、熔断模块等。框架本身是基于Polaris
(北极星)服务的,Polaris
服务整合了以上所有组件,提供了一站式微服务综合解决方案
我们可以基于spring cloud tencent快速搭建微服务项目框架。
其配置中心、注册中心、熔断限流配置中心服务端管理后台如图所示。我们将在后续带大家实际搭建。
1.2 组成组件
spring cloud tencent本身是微服务框架,所以离不开微服务的基础组件:
注册中心 Spring Cloud Tencent Discovery
配置中心 Spring Cloud Tencent Config
网关/路由 Spring Cloud Tencent Router
服务限流 Spring Cloud Tencent Rate Limit
服务熔断 Spring Cloud Tencent CircuitBreaker
组间调用 Feign或RestTemplate,这点与spring cloud一致
但这里与spring cloud不同的是,以上的注册中心、配置中心、路由、服务限流、熔断降级实际上都是通过Polaris
服务来完成的,也就是说比起spring cloud alibaba,我们不需要再单独安装nacos,sentinel等服务
,只需要安装一个Polaris
即可,妥妥的‘一个打5个’
1.3 项目目录结构
spring cloud tencent项目的相关依赖已经上传到maven中央仓库,我们只需要引入依赖即可,同时分布式微服务框架的搭建也不需要我们再手动的创建网关模块、各类基础模块等,只需要在github上下载spring cloud tencent提供的框架源码,更加方便快捷
其框架自带的模块包括以下几个:
2. 组件介绍
2.1 注册中心
discovery使用文档
注册中心同样分成服务端和客户端,服务端基于Polaris,客户端只需要引入依赖即可,更加详细的配置我们将在下一章的实操搭建中演示
<dependencies><dependency><groupId>com.tencent.cloud</groupId><artifactId>spring-cloud-starter-tencent-polaris-discovery</artifactId></dependency></dependencies>
与nacos的服务模型一样,polaris的服务模型也分成了三层:命名空间、服务、服务实例
基于命名空间我们就可以实现不同环境的服务隔离了。polaris默认提供了2个命名空间:Polaris和default。其中Polaris命名空间用来存放Polaris的系统服务
polaris注册中心控制台如图所示
值得一提的是poralis提供了服务别名服务,即可以自定义别名,然后让这个别名指向一个服务,访问这个别名等同于访问这个服务名,可以设置多个别名指向同一个服务,这样可以更加灵活的实现服务请求
2.2 配置中心
config使用文档
配置中心也分成服务端和客户端,服务端就是我们的polaris服务,客户端只需要引入以下依赖即可
<dependency><groupId>com.tencent.cloud</groupId><artifactId>spring-cloud-starter-tencent-polaris-config</artifactId></dependency>
通过配置中心可以更加方便的管理微服务的配置文件,并且实现动态刷新配置文件的作用
与nacos有所差别的是poralis配置文件的创建,需要先创建命名空间
再创建一个分组
最后点击分组名进入分组,才能创建服务配置文件
他在每个配置文件之上挂载了一个分组,实际上这种方式更加适用于多服务架构,更加方便配置文件管理
2.3 路由/网关
poralis提供了路由的功能,实际就是通过设定的规则来进行动态的请求转发。通过该功能我们可以实现多测试环境隔离、全链路灰度、金丝雀测试、A/B测试等功能
poralis配置路由也非常简单,只需要在控制台的服务列表,点击进入对应服务,然后在路由规则页面设置即可
除此之外,polaris还支持强悍的就近路由能力,也就是说他能够根据访问者的地理位置,转发请求到距离最近的服务上,这不就是CDN的区域就近访问功能吗。
如此我们就可以轻松实现我们的异地多活、跨机房容灾方案了!
安装好CMDB插件
后,我们在控制台,服务列表,编辑服务中即可直接开启就近访问
2.4 服务限流
当面临流量峰值、恶意攻击时,我们不得不限制最大并发量,以此来保证我们一部分用户的正常使用,这就是服务限流。
以往的spring cloud中我们需要使用hytrix、setinel或者通过guava包结合redis实现限流,今天什么都不用了, polaris就能搞定。
其配置在控制台的服务列表,点击进入对应服务,然后在限流规则页面设置即可
2.5 服务熔断降级
当服务报错时,我们需要通过熔断降级的手段来避免单个或某几个服务报错而导致整个业务不能使用的情况
以往我们可以使用sentinel
、hytrix
来实现熔断降级,但今天,还是它——poralis,他又来了
在poralis中配置熔断降级也很简单,同样在服务实例的熔断规则中配置
2.6 组间调用
spring cloud tencent的组件调用依然采用feign来实现,这里就不再详细讲解了,如果还不了解feign组件的,可以看看往期的文章:
微服务如何通信?组件通信组件:feign详解
3. 兼容性
考虑大量企业还在使用eureka作为服务发现、注册中心,polaris还提供了兼容eureka客户端的功能,polaris通过暴露8761端口,来实现了eureka客户端的无缝切换,只需要在配置文件中将ip改为polaris服务的ip即可
eureka:client:serviceUrl:defaultZone: http://127.0.0.1:8761/eureka/
5. 权限控制
微服务开发中,常常分组开发,不同的人开发不同的模块,因此我们经常需要通过权限来把控不同服务在polaris上的操作权限,体贴的polaris自然也想到了
它提供了鉴权功能,可以方便的管理用户的访问权限。它基于命名空间和服务资源两个维度来进行权限把控
权限配置也相当简单,只需要在权限控制模块操作即可
总结
那么本期,我们针对spring cloud tencent的分享就到此结束了,下一期我们将来实际操作从零完整的搭建一套spring cloud tencent框架,有兴趣的小伙伴不妨点个关注,不迷路~