基础模块平面图 :
代码层级图:
01_parent模块
01.创建quickstart项目,把src目录删除,删除多余的依赖,并在pom.xml声明项目类型为pom类型.
02.添加SpringCloud相关的配置信息
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.chen.shop</groupId>
<artifactId>shop-cloud</artifactId>
<packaging>pom</packaging>
<version>1.0.0</version>
<modules>
<module>euraka-server</module>
<module>config-server</module>
<module>zuul-server</module>
<module>common</module>
<module>shop-provider-api</module>
<module>shop-provider</module>
</modules>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.5.RELEASE</version>
<relativePath/>
</parent>
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Greenwich.SR1</spring-cloud.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
</project>
02_注册中心Euraka
01.在cloud-shop项目下创建module,类型为quickstart,名字为
euraka-server
.
02.把pom文件中的多余依赖删除
03.添加eureka-server
依赖
04.添加项目启动类EurakaServerApplication.java
05.在EurakaServerApplication中添加SpringBoot启动的注解及mian方法,同时贴上@EnableEurekaServer
注解
06.在resources目录中添加application.yml
配置文件,并添加端口,注册信息配置.
07.启动测试
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>shop-cloud</artifactId>
<groupId>com.chen.shop</groupId>
<version>1.0.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>euraka-server</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
</project>
application.yml
server:
port: 8761
eureka:
instance:
hostname: localhost
client:
service-url:
defaultZone: http://${eureka.instance.hostname}:${server.port}/euraka
fetch-registry: false
register-with-eureka: false
03_配置中心Config-Server
01.在cloud-shop项目下创建module,类型为quickstart,名字为
config-server
.
02.把pom文件中的多余依赖删除,并添加eureka-client
、config-server
依赖
03.添加项目启动类ConfigServerApplication.java
04.在ConfigServerApplication类上贴上@EnableConfigServer
注解
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>shop-cloud</artifactId>
<groupId>com.chen.shop</groupId>
<version>1.0.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>config-server</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
</dependencies>
</project>
application.yml
server:
port: 9100
spring:
application:
name: config-server
cloud:
config:
server:
git:
uri: https://gitee.com/******/seckill
username: **********@qq.com
password: **********
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
04_网关Zuul
01.在cloud-shop项目下创建module,类型为quickstart,名字为
zuul-server
.
02.把pom文件中的多余依赖删除
03.添加项目启动类ZuulServerApplication.java
04.在pom文件中添加eureka-client
,netflix-zuul
,config-client
依赖
05.在resource目录中添加bootstarp.yml
配置文件
06.在启动类中添加@EnableZuulProxy
注解
07.在config-server项目中添加zuul-server.yml
配置文件,这里我把配置文件统一设置在码云仓库
08.启动测试,查看端口是否9000.如果是说明已经读取了配置中心中的zuul-server.yml的配置信息
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>shop-cloud</artifactId>
<groupId>com.chen.shop</groupId>
<version>1.0.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>zuul-server</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
</dependency>
</dependencies>
</project>
bootstarp.yml
spring:
application:
name: zuul-server
cloud:
config:
discovery:
service-id: config-server
enabled: true
label: master
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
zuul-server.yml
server:
port: 9000
zuul:
host:
socket-timeout-millis: 6000 #zuul的socket超时设置
connect-timeout-millis: 6000 #zuul的connect超时设置
forceOriginalQueryStringEncoding: true #强制采用原始请求的编码格式,即不对Get请求参数做编解码
ignored-patterns: /*-server/** #忽略匹配这个格式的路径
routes: #路由配置
member-server-route: #自定义
path: /member/** #自定义的member服务网关路径
serviceId: member-serve #自定义的服务
sensitive-headers: #支持自定义请求头
custom-sensitive-headers: true
ribbon: #负载均衡
eager-load: #初始化
enabled: true
MaxAutoRetriesNextServer: 0 #重试次数
OkToRetryOnAllOperations: false #是否重试操作
ConnectTimeout: 10000 #设置连接超时时间
ReadTimeout: 10000 #设置读取超时时间
05_公共模块common
01.在cloud-shop项目下创建module,类型为quickstart,名字为
common
.
02.把pom文件中的多余依赖删除,把启动类也删除了
03.再pom文件中添加lombok
依赖.
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>shop-cloud</artifactId>
<groupId>com.chen.shop</groupId>
<version>1.0.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>common</artifactId>
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
</project>
06_服务接口父模块shop-provider-api
01.在cloud-shop项目下创建module,类型为quickstart,名字为
shop-provider-api
02.把src目录删除,删除多余的依赖,项目类型声明为pom类型
03.添加common
、starter-web
、eureka-client
、config-client
、netflix-ribbon
、openfeign
、netflix-hystrix
依赖,shop-provider-server模块直接引入shop-provider-api
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>shop-cloud</artifactId>
<groupId>com.chen.shop</groupId>
<version>1.0.0</version>
</parent>
<packaging>pom</packaging>
<modules>
<module>member-api</module>
</modules>
<modelVersion>4.0.0</modelVersion>
<artifactId>shop-provider-api</artifactId>
<dependencies>
<dependency>
<groupId>com.chen.shop</groupId>
<artifactId>common</artifactId>
<version>1.0.0</version>
</dependency>
<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>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
</dependencies>
</project>
07_服务接口父模块shop-provider-server
01.在cloud-shop项目下创建module,类型为quickstart,名字为
shop-provider-server
02.把src目录删除,删除多余的依赖,项目类型声明为pom类型
03.pom使用dependencyManagement引入shop-provider-api
依赖
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>shop-cloud</artifactId>
<groupId>com.chen.shop</groupId>
<version>1.0.0</version>
</parent>
<packaging>pom</packaging>
<modules>
<module>member-server</module>
</modules>
<modelVersion>4.0.0</modelVersion>
<artifactId>shop-provider</artifactId>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.chen.shop</groupId>
<artifactId>shop-provider-api</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
</dependencyManagement>
</project>