导读:您还在为代码改造而感到烦恼吗?您还在为云平台各种条条框框所限制而闷闷不乐吗?您还在为业务与云服务框架耦合耿耿于怀吗?同志们,福音来啦!最新版腾讯微服务平台 TSF 重磅推出原生应用接入方式,无需改造一行代码,无需重新编译,无需重新构建程序包,原生 Spring Cloud 应用直接上!
张培培
腾讯云微服务团队高级工程师
TSF Mesh研发及负责人
热衷于云原生和开源技术,在容器、Service Mesh、消息队列、区块链等领域拥有丰富经验,目前致力于Service Mesh 技术的落地和推广
Spring Cloud 提供了微服务系统架构的一站式解决方案,并利用 Spring Boot 的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控、分布式调用链等,通过 Spring Cloud 提供的一套简易的编程模型,我们可以在 Spring Boot 的基础上轻松地实现微服务项目的构建。
然而,这仅仅是帮助开发者开发微服务应用带来了便利,最终开发出的应用需要在生产环境运行起来,因此,我们还需要:
也就是说,我们开发者开发完应用、构建好 Jar 包也只是第一步,要让应用稳定运行和持续运营,还需要一个微服务平台来满足上面的要求,这正是 TSF ——腾讯微服务平台 (Tencent Service Framework)的价值所在:
既然 TSF 满足一切运行要求,那对于一个原生的 Spring Cloud 应用,是否能直接接入 TSF 运行起来呢?
TSF 支持原生 Spring Cloud 微服务框架,但对于旧版 TSF(v1.27或之前版本),Spring Cloud 应用需要做些改造才能接入;
旧版 TSF 支持普通应用和 Mesh 应用两种接入方式。
对于普通应用接入,需要进行 SDK 依赖和注解代码的改造:
<parent>
<groupId>com.tencent.tsf</groupId>
<artifactId>spring-cloud-tsf-dependencies</artifactId>
<version><!-- 调整为 SDK 最新版本号 --></version>
</parent>
<dependency>
<groupId>com.tencent.tsf</groupId>
<artifactId>spring-cloud-tsf-starter</artifactId>
<version><!-- 调整为 SDK 最新版本号 --></version>
</dependency>
// 下面省略了无关的代码
import org.springframework.tsf.annotation.EnableTsf;
@SpringBootApplication
@EnableTsf
public class ProviderApplication {
public static void main(String[] args) {
SpringApplication.run(ProviderApplication.class, args);
}
}
对于 Mesh 应用接入,以虚机部署为例,则需要按照 Mesh 方式构建程序包:
1. 添加spec.yaml 文件
apiVersion: v1
kind: Application
spec:
services:
- name: provider
ports:
- targetPort: 10881
protocol: http
healthCheck:
path: /health
2. 添加 start.sh 启动脚本
#!/bin/bash
already_run=`ps -ef|grep "spring-cloud-provider-1.0.jar"|grep -v grep|wc -l`
if [ ${already_run} -ne 0 ];then
echo "provider already Running!!!! Stop it first"
exit -1
fi
nohup java -jar spring-cloud-provider-1.0.jar 1>stdout.log 2>&1 &
3. 添加 stop.sh 停止脚本
#!/bin/bash
pid=`ps -ef|grep "spring-cloud-provider-1.0.jar"|grep -v grep|awk '{print $2}'`
kill -SIGTERM $pid
echo "process ${pid} killed"
4. 添加 cmdline 进程执行命令文件
java -jar spring-cloud-provider-1.0.jar
可以看出,无论是普通应用接入还是 Mesh 应用接入,都需要做些改造才能接入 TSF,这样势必是带来一些问题:
那 TSF 有没有一种接入方式,既不需要引入 TSF 依赖、改造代码,也不需要重新构造程序包呢?
新版TSF(v1.28)来啦!
推出第三种接入方式——原生应用接入,支持原生 Spring Cloud 应用真正的无侵入接入,无需改造一行代码,无需重新编译,无需重新构建程序包,现有应用 Jar 包直接部署接入 TSF !
登录 TSF 控制台,部署原生 Spring Cloud 应用仅需简单 4 个步骤:
1. 创建资源,虚拟机集群或容器集群
2. 创建应用,应用类型选择【原生应用】
3. 导入原生 Spring Cloud 应用 Jar 包或者上传镜像包
4. 创建部署组,部署原生 Spring Cloud 应用
我们知道,Spring Cloud 提供了丰富的服务治理套件,那接入 TSF 后这些治理能力是否兼容呢?以下是 TSF 支持的原生治理能力,基本覆盖了常用的核心能力:
除此之外,TSF还额外提供了以下几个主要能力:
Spring Cloud 微服务架构核心是开发端 SDK 框架和后端支撑服务如注册中心 Eureka,通过引入 SDK 依赖和相关服务治理注解,开发人员能快速实现一个微服务应用,但对于后端支撑服务,特别是要支撑生产环境大规模的微服务接入,将面临巨大挑战;而这恰恰是 TSF 微服务平台的价值所在,TSF 提供了强大的后端支撑服务能力,无论是注册中心、数据运营中心还是服务治理控制中心,都具备工业级别的高可用性。
但原先 TSF 提供的两种接入方式,对原生应用存在其他待优化的问题;因此,为降低 Spring Cloud 应用接入 TSF 的门槛,彻底摆脱对云平台框架的依赖,让用户与云厂商解耦,TSF 推出了原生应用接入方式,无需任何改造即可享用 TSF 各种强大的服务治理能力!
《拥抱 Agent,“0” 代码玩转 Trace 之 OpenTelemetry 系列第二弹!》
扫描下方二维码关注本公众号,了解更多微服务、消息队列的相关信息!解锁超多鹅厂周边!