参考文档:https://www.springcloud.cc/
项目结构说明:订单服务远程去调用商品服务
eureka-server:服务注册中心
order-server:订单服务
product-server:商品服务
1、搭建Eureka注册中心
1.1、创建一个SpringBoot项目名为eureka-server,在pom加入如下依赖
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Hoxton.SR6</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
<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>
1.2、在application.yml中添加如下配置
server:
port: 8761
eureka:
instance:
hostname: localhost
client:
register-with-eureka: false #是否将自己注册到服务中心
fetch-registry: false #屏蔽注册信息
#关闭实例保护,心跳比例低于85%,eureka会将这些实例保护起来,不会过期,如保护期间内该服务刚好下线,消费者就会拿到无效服务实例
server:
enable-self-preservation: false
1.3、在启动类加上@EnableEurekaServer注解,表示启动注册中心。随后可访问http://localhost:8761/地址,查看注册的服务等信息。
2、搭建商品服务项目
2.1、使用SpringBoot创建一个项目,名为product-server,加入如下依赖
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Hoxton.SR6</spring-cloud.version>
</properties>
<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>
<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>
2.2、在application.yml配置文件中加入如下配置,表示将该服务往注册中心注册
server:
port: 8389
#往哪个地址注册
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
#配置本服务名称
spring:
application:
name: product-server
2.3、增加根据ID获取商品的接口
2.4、商品服务我们开启两个,端口分别是8389,8489,方便后面Ribbon做客户端负载平衡器;轮询去调用,可修改,假如有一台挂了,默认情况下,如果RestClient在最后三次未能与其建立连接,则会触发实例。一旦一个实例被电路跳闸,它将停留在这种状态30秒后,电路才会被视为再次关闭。然而,如果它继续失败连接,它将再次成为“电路跳闸”,等待时间成为“电路关闭”将成倍增加的数目连续故障。
Ribbon是一种客户端负载平衡器,可让您对HTTP和TCP客户端的行为进行大量控制。
Ribbon中的中心概念是指定客户的概念。每