你好,我是 Guide。在 手写一个简化版的 Spring Cloud!这篇文章中,我推荐了 Spring Cloud Tencent 这个项目,这篇文章就简单带着大家来看看腾讯开源的这款一站式微服务框架。
一、为什么要做 Spring Cloud Tencent
Spring Boot + Spring Cloud 仍是 Java 生态最主流的框架
2014 年 4 月 Spring Boot 发布 1.0 版本,经过 8 年时间的发展,Spring Boot 已然成为 Java 开发框架的事实标准。在分布式微服务领域,2016 年 1 月 Spring Cloud 发布 Angel.SR5 版本。Spring Cloud 延承了 Spring Boot 最核心的组件化、低配置快速集成的核心思想,同时定义了一套标准的微服务 SPI。基于这套 SPI 出现了 Spring Cloud Netfix 等优秀的微服务解决方案实现套件。在远程服务调用框架方面,Feign 和 RestTemplate 基于普适的 HTTP 协议,在易用性、可观测性、跨语言等方面具备天然的优势。所以 Spring Cloud 自 2016 年发布第一个版本之后蓬勃发展。
从行业情况看,Spring Boot + Spring Cloud 是目前 Java 使用最广泛的开发框架之一。
2018 年开始以 Istio 为代表的 ServiceMesh 开始在社区中孵化,到 2022 年已经有非常多的 ServiceMesh 产品。ServiceMesh 核心思想是下沉服务调用相关的基础能力到独立的 Sidecar 进程,通过流量代理的方式治理流量。任何一种方案都不是万能药, Sidecar 模式也存在一些问题。例如:高度依赖底层 Paas 能力治理 Sidecar (注入、版本管理、升级等)、Sidecar 需要额外占用一定的资源、增加一定的网络延迟、增加排障难度等。所以国内真正能够落地 ServiceMesh 的企业并不多。
综上所述,我们认为在未来很长一段时间内 Spring Boot + Spring Cloud 仍是 Java 主流的微服务解决方案,虽然它看上去没有像 Istio、Dapr 那样的先进。在满足企业业务发展诉求的前提下,低成本、高效、稳定的架构方案才是最好的方案。
腾讯 2021 年开源的北极星(PolarisMesh)提供了一站式微服务解决方案
北极星是一款集注册中心、配置中心、服务治理中心为一体的一站式微服务解决方案,在腾讯内部已覆盖 90% 的业务,注册的实例节点数更是达到了 500 万的规模。在 21 年开源之后,在社区内也有外部公司生产落地。
公司内部的架构师经常会做一些技术选型,比如注册中心用 Zookeeper、Consul、Nacos 等,配置中心用 Apollo、Nacos,限流熔断用 Sentinel 。多组件也意味着需要维护多套服务,占用更多的资源,用户体验上也难以做到一致性。
所以一站式微服务解决方案能够大大简化技术选型、运维、资源成本。当然也可以把北极星当做方案里的一部分,例如只用北极星的服务注册发现,配置中心仍然选型 Apollo。毕竟还是那个道理,没有万能的方案,适合企业业务自身诉求的方案才是最好的方案。
另外北极星在某些能力横向对比上也有一定的优势。例如完全无状态的注册中心更加便于运维,强大的服务路由能力支持复杂的业务场景等。具体的产品功能在第二部分会更加详细的介绍。
小结
基于以上两点核心原因,把北极星作为 Spring Cloud 一个开箱即用的实现套件就顺理成章了。既能满足 Spring Cloud 的用户,又能满足北极星 Java 的用户。当然 Spring Cloud Tencent 目前只对接了北极星的能力,后续会支持更多腾讯开源的优秀产品。
二、Spring Cloud Tencent 模块详细介绍
目前 Spring Cloud Tencent 主要提供了微服务领域常见的服务注册与发现、配置中心、服务路由、限流熔断以及元数据链路透传能力。接下去会详细介绍每一部分的能力。
Spring Cloud Tencent 能力大图
2.1 服务注册与发现 (Spring Cloud Tencent Polaris Discovery)
服务注册与发现是