关于SpringCloud
官网介绍
Spring Cloud致力于为典型的用例和扩展机制提供良好的开箱即用体验,以涵盖其他用例。
分布式/版本化配置
服务注册和发现
路由
服务到服务的呼叫
负载均衡
断路器
分布式消息传递
一句话,就是SpringCloud是用来做微服务的.
搭建Eureka Server
因为SpringCloud是基于springBoot 所以要导入SpringBoot
建立一个父工程 统一管理包
<?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.marui</groupId>
<artifactId>srping-cloud-myproject</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>eureka-server-1000</module>
<module>user-service-server-2000</module>
<module>order-service-server-3000</module>
</modules>
<!--继承springBoot,没有被dependencyManagement管理的包会被直接继承
子模块要使用,必须在Dependences中不加版本号的声明出来
-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.5.RELEASE</version>
<relativePath/>
</parent>
<!--设置jdk版本-->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<!--导入spring Cloud的jar包,dependencyManagement统一管理jar包-->
<dependencyManagement>
<dependencies>
<!--导入springCloud的jar包,SpringBoot和SpringCloud版本要对应-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<!--这里的jar包会被所有子模块共享-->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
</dependencies>
</project>
第一步: 创建Eureka 服务端模块
在pom.xml中声明jar包
<?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>srping-cloud-myproject</artifactId>
<groupId>com.marui</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>eureka-server-1000</artifactId>
<name>eureka-server-1000</name>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId><!-- 服务端依赖 -->
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId><!--springBoot WEB 环境-->
</dependency>
</dependencies>
</project>
第二步 配置application.yml
server:
port: 1000
# 配置eurka服务端
eureka:
instance:
hostname: localhost
client:
fetch-registry: false
register-with-eureka: false
service-url:
defaultZone: http://localhost:1000/eureka # 注册地址
spring:
application:
name: eureka-server
第三步: 编写一个主配置类
在主配置类上打上注解 @EnableEurekaServer 开启Eureka自动配置
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class, args);
}
}
搭建Eureka 客户端(服务提供者)
第一步:声明jar包
<?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>srping-cloud-myproject</artifactId>
<groupId>com.marui</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>user-service-server-2000</artifactId>
<name>user-service-server-2000</name>
<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><!-- spring cloud 客户端依赖 -->
</dependency>
</dependencies>
</project>
第二步: 配置application.yml
spring:
application:
name: user-server # 服务名
server:
port: 2000
eureka:
instance:
hostname: localhost # 实例主机名,如果不配置,服务名转host:port格式时host为系统生成的ASUS_PC,无法访问
prefer-ip-address: true #使用ip地址注册
instance-id: user-server #指定服务的id
client:
service-url:
defaultZone: http://localhost:1000/eureka/ 服务端的注册地址
第三步: 编写主配置类
开启客户端自动配置注解 @EnableEurekaClient
@SpringBootApplication
@EnableEurekaClient
public class UserServiceApplication {
public static void main(String[] args) {
SpringApplication.run(UserServiceApplication.class, args);
}
}
Eureka 客户端(消费者搭建)
第一步: 声明包
<?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>srping-cloud-myproject</artifactId>
<groupId>com.marui</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>order-service-server-3000</artifactId>
<name>order-service-server-3000</name>
<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><!-- spring cloud 客户端依赖 -->
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId><!-- 客户端负载均衡 -->
</dependency>
</dependencies>
</project>
其他剩余两个步骤与搭建服务提供者相同