SpringCloud迁移至EDAS微服务——Series1:组件介绍及迁移-阿里云开发者社区

开发者社区> 阿里云SRE技术社区> 正文
登录阅读全文

SpringCloud迁移至EDAS微服务——Series1:组件介绍及迁移

简介: SpringCloud迁移至EDAS微服务——Series1:组件介绍及迁移

image.png

STEP BY STEP的指导客户将微服务从Eureka快速迁移到NACOS注册中心上并使用EDAS联动K8S快速上线应用。

1. 背景信息

企业级分布式应用服务EDAS(Enterprise Distributed ApplicationService)是阿里巴巴中间件团队研发的 PaaS 平台,为企业提供高可用和分布式的互联网架构解决方案。

EDAS支持三大主流微服务框架HSF、Apache Dubbo 和 Spring Cloud,此次介绍的是Spring Cloud应用上云,包括:将客户注册中心Eureka微服务迁移至EDAS,云服务器及容器服务的应用部署。

2. 组件介绍

2.1 Eureka注册中心

Eureka是Netflix开发的服务发现框架,基于REST的服务,主要用于负载均衡和中间层服务故障转移。Spring Cloud将它集成在其子项目spring-cloud-netflix中,以实现Spring Cloud的服务发现功能。

Eureka包含两个组件:Eureka Server和Eureka Client。

  • Eureka Server提供服务注册服务,各个节点启动后,会在Eureka Server中进行注册,这样EurekaServer的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在页面中直观的看到。

  • Eureka Client是一个Java客户端,用于简化与Eureka Server的交互,客户端同时也就是一个内置的、使用轮询(round-robin)负载算法的负载均衡器。

2.2 EDAS注册中心

EDAS产品包含新老两种组件,一种是老版本的ANS组件,一种是功能更为多样的新组件Nacos。

ANS(Application Naming Service) 是隶属于阿里云 EDAS 产品的组件, Spring Cloud AliCloud ANS 提供了 Spring Cloud 规范下商业版的服务注册与发现,可以让用户方便的在本地开发,同时也可以运行在云环境里。

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

2.3 组件关系

image.png
图1:转移关系

3. 应用环境

  • EDAS基于专有云企业版V3.9.0版本。

  • Spring Cloud框架基于Finchley.SR1版本。

4. 注册中心原理图

image.png
图 1:Eureka架构原理图

image.png
图 2:Nacos架构原理图

5. Eureka迁移到EDAS Nacos

Eureka是Spring Cloud套件中常用的服务注册中心。
1.替换pom.xml文件的导入依赖包。
Eureka-Server的pom.xml文件配置:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>

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

Eureka-Client的pom.xml文件配置:

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

Nacos服务注册pom.xml的文件配置:

<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2.1.0.RELEASE</version>
</dependency>

2.替换注册中心配置文件。
Eureka-Server的application.yml:

eureka:
server:
enable-self-preservation: false
instance:
hostname: eureka7001.com #eureka服务端的实例名称,单机配置是localhost
client:
register-with-eureka: false
fetch-registry: false
service-url:
#单机配置 defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
defaultZone: http://eureka7002.com:7002/eureka

Eureka-Client的application.yml:

eureka:
client: #客户端注册进eureka服务列表内
service-url:
#单机配置defaultZone: http://localhost:7001/eureka
defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/
register-with-eureka: true
fetch-registry: true
instance:
instance-id: mircoservicecloud-dept8001
prefer-ip-address: true #访问路径可以显示IP地址
info:
app.name: poc-mircoservicecloud
company.name: www.***.com
build.artifactId: $project.artifactId$
build.version: $project.version$

Nacos服务注册的application.properties:

spring.application.name=nacos-service-consumer
server.port=8082
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

3.替换应用主程序类注解。
Eureka启动类注解:

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class,HibernateJpaAutoConfiguration.class})
@MapperScan(basePackages="com.poc.springcloud.dao")
@EnableEurekaClient
//@EnableDiscoveryClient //服务发现
//@EnableCircuitBreaker //对Hystrix熔断机制支持
public class DeptProvider_App {
public static void main(String[] args) {
SpringApplication.run(DeptProvider_App.class, args);
}
}

Nacos启动类注解:

@SpringBootApplication
@EnableDiscoveryClient
public class ProviderApplication {
public static void main(String[] args) {SpringApplication.run(ProviderApplication.class, args);}
}

6. EDAS ANS迁移到Nacos

当专有云为企业版V3.8.0或V3.8.1时Spring Cloud应用需要从EDAS ANS向EDAS Nacos注册中心进行迁移。
1.替换pom.xml文件的导入依赖包。
ANS的pom.xml文件的配置:

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alicloud-ans</artifactId>
<version>0.2.2.RELEASE</version>
</dependency>

Nacos的pom.xml文件的配置:

<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2.1.0.RELEASE</version>
</dependency>

2.替换注册中心配置文件。
说明:注解无需替换。
ANS的application.properties:

spring.application.name=ans-service-consumer
server.port=8081
# ans directory and amc config
spring.cloud.alicloud.ans.server-list=127.0.0.1
spring.cloud.alicloud.ans.server-port=8080
#alibaba.acm.endpoint=127.0.0.1
logging.path=/home/admin/logs
#logging.path=c:\
logging.file=biz.log
logging.level.root=info

Nacos的application.properties:

spring.application.name=nacos-service-consumer
server.port=8082
# nacos directory and amc config
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
#alibaba.acm.endpoint=127.0.0.1
logging.path=/home/admin/logs
#logging.path=c:\
logging.file=biz.log
logging.level.root=info

后续内容

SpringCloud迁移至EDAS微服务——Series2:在 ECS 集群中部署 Web 应用
SpringCloud迁移至EDAS微服务——Series3:在容器服务K8s集群中部署应用

我们是阿里云智能全球技术服务-SRE团队,我们致力成为一个以技术为基础、面向服务、保障业务系统高可用的工程师团队;提供专业、体系化的SRE服务,帮助广大客户更好地使用云、基于云构建更加稳定可靠的业务系统,提升业务稳定性。我们期望能够分享更多帮助企业客户上云、用好云,让客户云上业务运行更加稳定可靠的技术,您可用钉钉扫描下方二维码,加入阿里云SRE技术学院钉钉圈子,和更多云上人交流关于云平台的那些事。

image.png

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:

阿里云智能全球技术服务部SRE团队,是阿里集团高可用基础技术核心缔造团队,也是阿里为确保客户平台稳定、业务连续而打造的核心支撑团队

官方博客
官网链接