前言:springboot整合springcloud的eureka、配置中心、服务调用、Hystrix、Zuul网关
项目结构:
一、环境准备
1、创建maven父工程,并导入依赖
<properties>
<project-build-sourceEncoding>UTF-8</project-build-sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<maven-compiler.source>1.8</maven-compiler.source>
<maven-compiler.target>1.8</maven-compiler.target>
<junit-version>4.12</junit-version>
</properties>
<dependencyManagement>
<dependencies>
<!--springcloud的依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Greenwich.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--springboot的依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.1.4.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--数据库的依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.22</version>
</dependency>
<!--springboot启动器-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
<!--junit-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit-version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.2.3</version>
</dependency>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.18</version>
</dependency>
<!--log4j日志-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
</plugins>
</build>
二、Eureka注册中心
1、Eureka单机模式
1.1、创建maven子工程(服务),并导入依赖
<!--导入父工程依赖-->
<parent>
<artifactId>springcloud-001</artifactId>
<groupId>com.springcloud</groupId>
<version>1.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<!--导入项目依赖-->
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
<version>1.4.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
</dependencies>
1.2、创建application.yaml配置文件
server:
port: 7001
#Eureka的配置
eureka:
instance:
hostname: springcloud-eureka #Eureka服务端的实例名称(如果配置集群,此处不能写localhost或127.0.0.1)
client:
register-with-eureka: false # 表示是否想eureka注册中心注册自己
fetch-registry: false #结果为false表示自己为注册中心
service-url:
defaultZone: http://${
eureka.instance.hostname}:${
server.port}/eureka/
1.3、开启eureka服务注册功能
@SpringBootApplication
@EnableEurekaServer //服务端的启动类,可以接受别人注册进来
public class SpringCloudEurekaApplication {
public static void main(String[] args) {
SpringApplication.run(SpringCloudEurekaApplication.class,args);
}
}
2、eureka集群模式
2.1、改造单机模式
修改application.yaml文件
注:集群模式下eureka.instance.hostname属性不能写localhost或127.0.0.1
server:
port: 7001
#Eureka的配置
eureka:
instance:
hostname: springcloud-eureka #Eureka服务端的实例名称(如果配置集群,此处不能写localhost或127.0.0.1)
client:
register-with-eureka: false # 表示是否想eureka注册中心注册自己
fetch-registry: false #结果为false表示自己为注册中心
service-url:
defaultZone: http://springcloud-eureka02:7002/eureka/,http://springcloud-eureka03:7003/eureka/ #监控页面
2.2、创建maven子工程(eureka2)
2.2.1、步骤参照eureka单机模式
2.2.2、修改application.yaml文件
server:
port: 7002
#Eureka的配置
eureka:
instance:
hostname: springcloud-eureka02 #Eureka服务端的实例名称(如果配置集群,此处不能写localhost或127.0.0.1)
client:
register-with-eureka: false # 表示是否想eureka注册中心注册自己
fetch-registry: false #结果为false表示自己为注册中心
service-url:
defaultZone: http://springcloud-eureka:7001/eureka/,http://springcloud-eureka03:7003/eureka/ #监控页面
2.3、创建maven子工程(eureka3)
2.3.1、步骤参照eureka单机模式
2.3.2、修改application.yaml文件
server:
port: 7003
#Eureka的配置
eureka:
instance:
hostname: springcloud-eureka03 #Eureka服务端的实例名称(如果配置集群,此处不能写localhost或127.0.0.1)
client:
register-with-eureka: false # 表示是否想eureka注册中心注册自己
fetch-registry: false #结果为false表示自己为注册中心
service-url:
defaultZone: http://springcloud-eureka02:7002/eureka/,http://springcloud-eureka:7001/eureka/ #监控页面
2.4、修改hosts配置文件
添加:
- 127.0.0.1 springcloud-eureka
- 127.0.0.1 springcloud-eureka02
- 127.0.0.1 springcloud-eureka03
# Copyright (c) 1993-2009 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCPIP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example
#
# 102.54.94.97 rhino.acme.com # source server
# 38.25.63.10 x.acme.com # x client host
# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost
# 1 localhost
127.0.0.1 activate.navicat.com
#添加如下配置
127.0.0.1 springcloud-eureka
127.0.0.1 springcloud-eureka02
127.0.0.1 springcloud-eureka03
2.5、分别启动eureka服务
三、springcloud配置中心
1、在远程服务(github)创建配置文件
2、创建配置中心服务端
2.1、创建maven子工程,导入依赖
<!--导入父工程依赖-->
<parent>
<artifactId>springcloud-001</artifactId>
<groupId>com.springcloud</groupId>
<version>1.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<!--导入项目依赖-->
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>
2.2、创建application.yaml文件
server:
port: 3344
spring:
application:
name: springcloud-config-service
#连接远程仓库
cloud:
config:
server:
git