快捷搜索:  汽车  科技

springcloud怎么部署到阿里云?腾云忆想架构师教你从Spring

springcloud怎么部署到阿里云?腾云忆想架构师教你从Spring<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency>

导读

本文描述从Spring Cloud Alibaba应用(以Nacos作为注册中心和配置中心)迁移到TSF平台所需的改造工作,经过改造后,服务可以在TSF平台上成功注册和互相调用,就目前Spring Cloud Alibaba常见的Restful和Dubbo两类服务框架,分别说明改造方法。应用迁移到TSF平台后即可享受平台一站式微服务解决方案,管理资源和应用更加便利,丰富的服务治理能力、多维度的监控和跨可用区高可用方案等等。

springcloud怎么部署到阿里云?腾云忆想架构师教你从Spring(1)

作者简介

杨运领

腾云忆想微服务产品架构师,有多年分布式微服务架构和技术研发经验,曾参与过电商、P2P、互联网教育等平台的架构设计和研发工作。目前主要致力于腾讯微服务框架(TSF)和消息队列等产品的研究和推广工作,帮助企业客户打造技术中台,完成应用微服务化转型。

一、Restful服务改造

Restful服务改造涉及依赖调整、配置调整、代码调整和应用部署四个环节,这部分改造主要包括删除Nacos依赖和配置,添加TSF的依赖和启动类的注解。

1.依赖调整

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <!-- Spring Cloud OPEN Feign --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>

添加TSF依赖,TSF SDK已经包含Spring Boot、Spring Cloud的依赖。

<!-- TSF 启动器 --> <dependency> <groupId>com.tencent.tsf</groupId> <artifactId>spring-cloud-tsf-starter</artifactId> <version><!-- 调整为 SDK 版本号 --></version> </dependency>

2.配置调整

以下是Nacos服务注册中心和配置中心的配置项示例,在迁移时,要删除配置文件中这部分内容。

Nacos服务注册中心

spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848 spring.cloud.nacos.username=nacos spring.cloud.nacos.password=nacos management.endpoints.web.exposure.include=* management.endpoint.health.show-details=always

Nacos配置中心

spring.cloud.nacos.config.server-addr=127.0.0.1:8848 #nacos certification information spring.cloud.nacos.username=nacos spring.cloud.nacos.password=nacos spring.cloud.nacos.config.refreshable-dataids=common.properties spring.cloud.nacos.config.shared-data-ids=common.properties base-common.properties spring.cloud.nacos.config.shared-configs[0]= common333.properties spring.cloud.nacos.config.shared-configs[1].data-id= common111.properties spring.cloud.nacos.config.shared-configs[1].group= GROUP_APP1 spring.cloud.nacos.config.shared-configs[1].refresh= true spring.cloud.nacos.config.shared-configs[2]= common222.properties spring.cloud.nacos.config.ext-config[0]=ext.properties spring.cloud.nacos.config.extension-configs[0].data-id= extension1.properties spring.cloud.nacos.config.extension-configs[0].refresh= true spring.cloud.nacos.config.extension-configs[1]= extension2.properties spring.cloud.nacos.config.extension-configs[2].data-id= extension3.json

3.代码调整

向应用启动类中添加@EnableTsf注解。

4.应用部署

实现以上三步操作并且成功编译打包后,即完成改造,进入应用部署环节。TSF平台支持多种应用类型,Restful应用可以采用普通应用类型进行部署。

更多信息请参考:https://cloud.tencent.com/document/product/649/16931,按照文档指引操作即可。

二、Dubbo服务改造

TSF平台纳管Spring Cloud Alibaba dubbo应用采用的是TSF Mesh技术,TSF Mesh支持Dubbo、Http等协议,通过Sidecar注册到服务注册中心、处理服务间通信。

Dubbo服务相比Restful服务多了Mesh改造环节,改造主要涉及两方面内容,一个是Mesh化,引入Sidecar,另一个是移除原有注册中心的依赖和配置,TSF兼容双注册,在不移除原有注册中心的情况下,经过少量代码调整,也可以成功部署应用,但是为了降低程序包的大小,加快应用部署和启动速度,建议要移除原因注册中心的依赖和配置。

1.Mesh改造

服务定义和注册(必选)

创建spec.yaml文件,定义服务名、暴露的端口和协议,服务名和接口名相同。由于Dubbo 2采用的是接口级服务发现,所以需要每个接口都要进行定义,在最新版的Dubbo 3中,采用了应用级服务发现,操作会简化很多。

apiVersion: v1 kind: Application spec: services: - name: com.dubbo.service.UserService ports: - targetPort: 20881 protocol: dubbo healthCheck: path:

API 定义和上报(可选)

创建apis目录,该目录放置服务的 API 定义。一个服务对应一个 yaml 文件,文件名即服务名,API 遵循 openapi 3.0 规范。

openapi: 3.0.0 info: version: "1.0.0" title: user service paths: /api/v6/user/create: get: responses: '200': description: OK '401': description: Unauthorized '402': description: Payment Required '403': description: Forbidden /api/v6/user/account/query: get: responses: '200': description: OK '401': description: Unauthorized '402': description: Payment Required '403': description: Forbidden /health: get: responses: '200': description: OK '401': description: Unauthorized '402': description: Payment Required '403': description: Forbidden

调用链 header 传递(可选)

要实现 Mesh 应用调用链和服务依赖拓扑功能,需要在请求中带上9个相关 header。

traceHeaders = ['x-request-id' 'x-trace-service' 'x-ot-span-context' 'x-client-trace-id' 'x-b3-traceid' 'x-b3-spanid' 'x-b3-parentspanid' 'x-b3-sampled' 'x-b3-flags']

请参考:https://cloud.tencent.com/document/product/649/19049

2.依赖调整

删除nacos服务注册和配置的依赖,如下例:

<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>

3.配置调整


关闭Dubbo服务注册中心配置,如下例:

spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848 spring.cloud.nacos.username=nacos spring.cloud.nacos.password=nacos management.endpoints.web.exposure.include=* management.endpoint.health.show-details=always

删除Nacos配置中心的配置,如下例:

spring.cloud.nacos.config.server-addr=127.0.0.1:8848 #nacos certification information spring.cloud.nacos.username=nacos spring.cloud.nacos.password=nacos spring.cloud.nacos.config.refreshable-dataids=common.properties spring.cloud.nacos.config.shared-data-ids=common.properties base-common.properties spring.cloud.nacos.config.shared-configs[0]= common333.properties spring.cloud.nacos.config.shared-configs[1].data-id= common111.properties spring.cloud.nacos.config.shared-configs[1].group= GROUP_APP1 spring.cloud.nacos.config.shared-configs[1].refresh= true spring.cloud.nacos.config.shared-configs[2]= common222.properties spring.cloud.nacos.config.ext-config[0]=ext.properties spring.cloud.nacos.config.extension-configs[0].data-id= extension1.properties spring.cloud.nacos.config.extension-configs[0].refresh= true spring.cloud.nacos.config.extension-configs[1]= extension2.properties spring.cloud.nacos.config.extension-configs[2].data-id= extension3.json

删除Hystrix配置

feign: hystrix: enabled: true

4.代码调整

1.删除服务发现的注解@EnableDiscoveryClient;
2.服务消费端的@Reference注解添加url属性,属性值为“dubbo://服务名:端口”,添加check=fales属性。在兼容双注册的场景下,这个代码需要额外添加。

5.应用部署

代码改造完并且成功编译打包后,进入应用部署环节。在TSF平台创建Mesh应用类型进行部署.

更多信息请参考:

https://cloud.tencent.com/document/product/649/16931,按照文档指引操作即可。

总结

通过实践迁移Spring Cloud Alibaba框架业务应用到TSF平台,体现了TSF拥抱开源框架的开放性。以较小的迁移成本支持客户上云平台,利于客户协调开发资源,迁移上云后即可享受云平台带来的各种好处,达到降本增效的效果。

猜您喜欢: