前言
开发环境
-
部署环境:阿里云ECS服务器
- 操作系统:CentOS 7.7 64位
- IDEA 版本:2019.3.1
- docker 版本:1.13.1
- docker-compose版本:1.25.0
- spring cloud 版本:Hoxton.SR1
- spring boot 版本:2.2.2.RELEASE
- mysql 版本:5.7
- redis 版本:5.0.7
- rabbitmq 版本:3.8.2-management
- zipkin 版本:2.19.2
-
端口映射信息:
-
eureka1:8761 | eureka2:8762
-
config-server:8888
-
shopping-product:11100
-
shopping-order:11110
-
api-gateway:8080
-
open-api:8081
-
源码地址
https://github.com/lizzie2008/spring-cloud-app.git
创建工程
- 新建一个工程:选择Spring Cloud Bootstrap,对应的Spring Boot 版本2.2.2。
- 项目生成后,看到对应的Spring版本的依赖没有问题。
- 因为是父工程,我们将打包格式改成pom,并把src等无用的文件删除。
<groupId>tech.lancelot</groupId>
<artifactId>spring-cloud-app</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>spring-cloud-app</name>
<description>Demo project for Spring Cloud</description>
<packaging>pom</packaging>
服务注册中心(Eureka)
Eureka Server
- 新建Module->选择Eureka Server
-
因为Module作为子项目,我们改写下对应的POM文件。
<parent> <groupId>tech.lancelot</groupId> <artifactId>spring-cloud-app</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <groupId>tech.lancelot</groupId> <artifactId>eureka-server</artifactId> <version>0.0.1-SNAPSHOT</version> <name>eureka-server</name> <description>Registry Center</description> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> </dependencies>
-
重新Build一下项目,能正常编译。但是此时Eureka Server是不能正常启动工作的,需要在application类增加
@EnableEurekaServer
。
此时,我们再运行Eureka Server,发现可以正常启动服务注册服务器,服务端口8080,注册地址:http://localhost:8761/eureka/。
- 打开浏览器,访问8080端口,查看可视化管理界面。
- 当然,我们没有做任何配置,并且控制台一直报错,这是因为默认情况下,本身也是需要获取注册信息和注册到注册中心,而此时找不到对应服务器。我们可以修改配置文件,做相应的配置。调整服务端口为8761,重新启动后,发现不再报错。
eureka:
client:
fetch-registry: false #设置不从注册中心获取注册信息
register-with-eureka: false #设置自身不作为客户端注册到注册中心
spring:
application:
name: eureka-server #应用名称
server:
port: 8761 #应用服务端口
Eureka Client
- 我们再建一个Module工程,作为服务客户端,向Eureka Server服务中心注册。
-
同样,我们修改POM文件,依赖于父项目,注意这里需要引入
eureka-client
和spring-boot-starter-web
依赖。<parent> <groupId>tech.lancelot</groupId> <artifactId>spring-cloud-app</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <groupId>tech.lancelot</groupId> <artifactId>shopping-provider</artifactId> <version>0.0.1-SNAPSHOT</version> <name>shopping-provider</name> <description>shopping service provider</description> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> </dependencies>
-
需要在application类增加
@EnableDiscoveryClient
,同时修改配置文件。eureka: client: serviceUrl: defaultZone: http://localhost:8761/eureka/ #指定服务注册地址 spring: application: name: shopping-provider #应用名称
-
重启Eureka Client,启动后再次访问Eureka Server管理界面,可以发现order-provider服务已注册。