diff --git a/spring-cloud/spring-cloud-eureka-cluster/README.md b/spring-cloud/spring-cloud-eureka-cluster/README.md
index e749bb8..46d3529 100644
--- a/spring-cloud/spring-cloud-eureka-cluster/README.md
+++ b/spring-cloud/spring-cloud-eureka-cluster/README.md
@@ -1,39 +1,19 @@
-# eureka 高可用注册中心的搭建
-
-## 目录
-一、项目结构
-二、三步搭建eureka 高可用注册中心
- 2.1 引入eureka服务端依赖
- 2.2 创建三份配置文件,分别代表不同注册中心的配置
- 2.3 启动类上增加注解@EnableEurekaServer激活eureka服务端自动配置
-三、三步搭建eureka 客户端
- 3.1 引入eureka客户端依赖
- 3.2 eureka 客户端配置,指定注册中心地址
- 3.3 启动类上增加注解@EnableDiscoveryClient激活eureka客户端自动配置
-4.启动项目
- 4.1 这里我们可以采用命令行方式指定配置,分别启动三个注册中心
- 4.2 高可用集群搭建成功的判定
- 4.3 prefer-ip-address 参数说明
-## 正文
+# Eureka 高可用注册中心的搭建
## 一、项目结构
-eureka-server 为服务注册中心,负责服务的管理;
-
-eureka-client 为 eureka 客户端;
+- **eureka-server** 为服务注册中心,负责服务的管理;
+- **eureka-client** 为 Eureka 客户端。
-
-
-## 二、三步搭建eureka 高可用注册中心
+## 二、三步搭建 Eureka 高可用注册中心
这里我们以单机伪集群的方式搭建,让三个单机注册中心互相注册,实现注册中心的高可用。配置示意图如下:
-
-#### 2.1 引入eureka服务端依赖
+### 2.1 服务端依赖
```xml
@@ -42,10 +22,11 @@ eureka-client 为 eureka 客户端;
```
-#### 2.2 创建三份配置文件,分别代表不同注册中心的配置
+### 2.2 服务端配置
+
+创建三份配置文件,分别代表不同注册中心的配置:
-
application-01.yml:
```yaml
@@ -105,7 +86,9 @@ eureka:
需要注意的是 Eureka 互相注册要求各个 Eureka 实例的 eureka.instance.hostname 不同,如果相同,则会被 Eureka 标记为 unavailable-replicas(不可用副本)。
-#### 2.3 启动类上增加注解@EnableEurekaServer激活eureka服务端自动配置
+### 2.3 @EnableEurekaServer
+
+在启动类上增加 @EnableEurekaServer 注解来激活 Eureka 服务端自动配置:
```java
@SpringBootApplication
@@ -121,9 +104,9 @@ public class EurekaServerApplication {
-## 三、三步搭建eureka 客户端
+## 三、三步搭建 Eureka 客户端
-#### 3.1 引入eureka客户端依赖
+### 3.1 客户端依赖
```xml
@@ -132,7 +115,7 @@ public class EurekaServerApplication {
```
-#### 3.2 eureka 客户端配置,指定注册中心地址
+### 3.2 客户端配置
```yaml
server:
@@ -148,7 +131,9 @@ eureka:
defaultZone: http://127.0.0.1:8010/eureka/,http://localhost:8020/eureka/,http://192.168.200.228:8030/eureka/
```
-#### 3.3 启动类上增加注解@EnableDiscoveryClient激活eureka客户端自动配置
+### 3.3 @EnableDiscoveryClient
+
+在启动类上增加 @EnableDiscoveryClient 注解来激活 Eureka 客户端自动配置:
```java
@SpringBootApplication
@@ -164,49 +149,49 @@ public class EurekaClientApplication {
## 4.启动项目
-### 4.1 这里我们可以采用命令行方式指定配置,分别启动三个注册中心
+### 4.1 启动注册中心
+
+这里我们可以采用命令行方式指定配置,分别启动三个注册中心:
+### 4.2 集群搭建成功的判定
-### 4.2 高可用集群搭建成功的判定
+这里需要注意的是仅仅 Status 中出现其他注册中心时,并不一定是搭建成功的,**一定是当注册中心的 DS Replicas 和 available replicas 中显示其余的注册中心时候,才代表搭建成功**。
-这里需要主要的是仅仅 status 中出现其他注册中心时,并不一定是搭建成功的,**一定是当注册中心的 DS Replicas 和 available replicas 中显示其余的注册中心时候**,才代表搭建成功。
+8010 注册中心:
-#### 4.2.1 点击下面注册中心的可用实例列表中的地址,访问链接分以下几个情况:
+
+8020 注册中心:
-1. hostname 和 prefer-ip-address 都没有配置,则访问 主机名:服务名:端口号,
+
+8030 注册中心:
+
+
+Status 下的每个注册中心都可以点击跳转到其监控页面,但其监控页面地址链接可能是动态变化的,主要情况如下:
+
++ 当 hostname 和 prefer-ip-address 都没有配置,则访问 `主机名:服务名:端口号`:
```
如:http://desktop-8jgsflj:8761/info
```
-2. 配置了 hostname 而没有配置 prefer-ip-address,则访问 hostname:服务名:端口号,
++ 当配置了 hostname 而没有配置 prefer-ip-address,则访问 `hostname:服务名:端口号`:
```
如:http://server:8761/info
```
-3. 如果配置了 prefer-ip-address,则访问 ipAddress:服务名:端口号,
++ 如果配置了 prefer-ip-address,则访问 `ipAddress:服务名:端口号`:
+
```
如:http://192.168.200.228:8761/info
```
-8010 注册中心:
-
+### 4.3 prefer-ip-address 参数
-8020 注册中心:
-
-
-
-8030 注册中心:
-
-
-
-### 4.3 prefer-ip-address 参数说明
-
-在有的配置示例中,配置了 prefer-ip-address 为 true。
+在有的配置示例中,配置了 prefer-ip-address 为 true:
```properties
eureka.instance.prefer-ip-address=true
```
-在多机器独立部署的情况下是没有问题的,配置 prefer-ip-address 为 ture,代表发现服务时候优先按照 ip 去搜寻,对于多集群而言,可以保证尽快准确搜索到服务。而对于单机部署来说,ip 地址都是相同的,这会导致其余注册中心出现在 unavailable-replicas(不可用副本) 中。所以单机部署时候不建议开启这个参数(默认值为 false),多机部署时候可以开启。
+在多机器独立部署的情况下是没有问题的,配置 prefer-ip-address 为 ture,代表发现服务时候优先按照 IP 去搜寻,对于多集群而言,可以保证尽快准确搜索到服务。而对于单机部署来说,IP 地址都是相同的,这会导致其余注册中心出现在 unavailable-replicas (不可用副本) 中。所以单机部署时候不建议开启这个参数(默认值为 false),多机部署时候可以开启。
diff --git a/spring-cloud/spring-cloud-eureka/README.md b/spring-cloud/spring-cloud-eureka/README.md
index 73d2c4d..5a9ccfa 100644
--- a/spring-cloud/spring-cloud-eureka/README.md
+++ b/spring-cloud/spring-cloud-eureka/README.md
@@ -1,44 +1,26 @@
-# eureka 服务的注册与发现
-
-## 目录
-一、eureka 简介
-二、项目结构
-三、三步搭建eureka 服务注册中心
- 3.1 引入eureka服务端依赖
- 3.2 eureka 服务端配置
- 3.3 启动类上增加注解@EnableEurekaServer激活eureka服务端自动配置
-四、三步搭建eureka 客户端
- 4.1 引入eureka客户端依赖
- 4.2 eureka 客户端配置
- 4.3 启动类上增加注解@EnableDiscoveryClient激活eureka客户端自动配置
-五、启动项目
- 5.1 进入注册中心控制台,查看服务注册情况
-## 正文
+# Eureka 服务的注册与发现
-## 一、eureka 简介
+## 一、Eureka 简介
-Spring Cloud Eureka 使用 Netflix Eureka 来实现服务注册与发现,它既包含了服务端组件,也包含了客户端组件。
+Spring Cloud Eureka 使用 Netflix Eureka 来实现服务注册与发现,它既包含了服务端组件,也包含了客户端组件:
-**Eureka 服务端**:服务的注册中心,负责维护注册的服务列表。
+- **Eureka 服务端**:服务的注册中心,负责维护注册的服务列表。
+- **Eureka 客户端**: 在应用程序运行时,Eureka 客户端向注册中心注册自身提供的服务,并周期性地发送心跳来更新它的服务租约。同时它也能把从服务端查询到服务信息缓存到本地,并周期性地刷新服务状态。
-**Eureka 客户端**: 在应用程序运行时,Eureka 客户端向注册中心注册自身提供的服务,并周期性地发送心跳来更新它的服务租约。同时它也能把从服务端查询到服务信息缓存到本地,并周期性地刷新服务状态。
## 二、项目结构
-eureka-server 为服务注册中心,负责服务的管理;
-
-eureka-client 为 eureka 客户端;
+- **eureka-server** 为服务注册中心,负责服务的管理;
+- **eureka-client** 为 Eureka 客户端。
+## 三、三步搭建 Eureka 服务注册中心
-
-## 三、三步搭建eureka 服务注册中心
-
-#### 3.1 引入eureka服务端依赖
+### 3.1 服务端依赖
```xml
@@ -47,7 +29,7 @@ eureka-client 为 eureka 客户端;
```
-#### 3.2 eureka 服务端配置
+### 3.2 服务端配置
```yaml
server:
@@ -64,7 +46,9 @@ eureka:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
```
-#### 3.3 启动类上增加注解@EnableEurekaServer激活eureka服务端自动配置
+### 3.3 @EnableEurekaServer
+
+在启动类上增加 @EnableEurekaServer 注解来激活 Eureka 服务端自动配置:
```java
@SpringBootApplication
@@ -80,9 +64,9 @@ public class EurekaServerApplication {
-## 四、三步搭建eureka 客户端
+## 四、三步搭建 Eureka 客户端
-#### 4.1 引入eureka客户端依赖
+### 4.1 客户端依赖
```xml
@@ -91,7 +75,7 @@ public class EurekaServerApplication {
```
-#### 4.2 eureka 客户端配置
+### 4.2 客户端配置
```yaml
server:
@@ -107,7 +91,9 @@ eureka:
defaultZone: http://localhost:8010/eureka/
```
-#### 4.3 启动类上增加注解@EnableDiscoveryClient激活eureka客户端自动配置
+### 4.3 @EnableDiscoveryClient
+
+在启动类上增加 @EnableDiscoveryClient 注解来激活 Eureka 客户端自动配置:
```java
@SpringBootApplication
@@ -123,6 +109,6 @@ public class EurekaClientApplication {
## 五、启动项目
-#### 5.1 进入注册中心控制台,查看服务注册情况
+进入注册中心控制台,查看服务注册情况:
diff --git a/spring-cloud/spring-cloud-feign/README.md b/spring-cloud/spring-cloud-feign/README.md
index 2345319..b2f353b 100644
--- a/spring-cloud/spring-cloud-feign/README.md
+++ b/spring-cloud/spring-cloud-feign/README.md
@@ -1,39 +1,30 @@
-# spring-cloud-feign
-
-## 目录
-一、feign 简介
-二、项目结构
-三、服务提供者的实现
-四、服务消费者的实现
-五、启动测试
-六、 feign 的服务容错
-## 正文
+# Spring-Cloud-Feign
-## 一、feign 简介
+## 一、Feign 简介
-在上一个用例中,我们使用 ribbon+restTemplate 实现服务之间的远程调用,实际上每一个调用都是模板化的内容,所以 spring cloud Feign 在此基础上进行了进一步的封装。我们只需要定义一个接口并使用 feign 注解的方式来进行配置,同时采用 springMvc 注解进行参数绑定就可以完成服务的调用。feign 同时还内置实现了负载均衡、服务容错等功能。
+在上一个用例中,我们使用 Ribbon + RestTemplate 实现服务之间的远程调用,实际上每一个调用都是模板化的内容,所以 Spring Cloud Feign 在此基础上进行了进一步的封装。我们只需要定义一个接口并使用 Feign 注解的方式来进行配置,同时采用 springMvc 注解进行参数绑定就可以完成服务的调用。Feign 同时还内置实现了负载均衡、服务容错等功能。
## 二、项目结构
-+ common: 公共的接口和实体类;
-+ consumer: 服务的消费者,采用 feign 调用产品服务;
-+ producer:服务的提供者;
-+ eureka: 注册中心。
++ **common**:公共的接口和实体类;
++ **consumer**:服务的消费者,采用 Feign 调用产品服务;
++ **producer**:服务的提供者;
++ **eureka**:注册中心。
-
## 三、服务提供者的实现
+### 3.1 定义服务
-#### 3.1 产品服务由`ProductService`提供,并通过`ProducerController`将服务暴露给外部调用。
+产品服务由 `ProductService` 提供,并通过 `ProducerController` 将服务暴露给外部调用:
ProductService.java:
@@ -97,7 +88,9 @@ public class ProducerController implements ProductFeign {
}
```
-#### 3.2 指定注册中心地址,并在启动类上开启自动注册@EnableDiscoveryClient
+### 3.2 服务注册
+
+指定注册中心地址,并在启动类上开启自动注册 @EnableDiscoveryClient:
```java
server:
@@ -131,8 +124,7 @@ public class ProducerApplication {
## 四、服务消费者的实现
-
-#### 4.1 导入openfeign依赖
+### 4.1 基本依赖
```xml
@@ -142,9 +134,9 @@ public class ProducerApplication {
```
-#### 4.2 指定注册中心地址,并在启动类上添加注解@EnableDiscoveryClient和@EnableFeignClients
+### 4.2 @EnableFeignClients
-@EnableFeignClients 会去扫描工程中所有用 @FeignClient 声明的 feign 客户端。
+指定注册中心地址,并在启动类上添加注解 @EnableDiscoveryClient 和 @EnableFeignClients,@EnableFeignClients 会去扫描工程中所有用 @FeignClient 声明的 Feign 客户端:
```java
server:
@@ -173,7 +165,7 @@ public class ConsumerApplication {
}
```
-#### 4.3 创建服务调用公共接口
+### 4.3 创建服务调用接口
```java
/**
@@ -203,9 +195,9 @@ public interface ProductFeign {
+### 4.4 Feign 客户端
-
-#### 4.4 继承公共接口,创建CProductFeign, 用@FeignClient声明为feign客户端
+继承公共接口,创建 CProductFeign, 用 @FeignClient 声明为 Feign 客户端:
```java
/**
@@ -218,7 +210,9 @@ public interface CProductFeign extends ProductFeign {
}
```
-#### 4.5 注入使用 feign 服务调用接口
+### 4.5 调用远程服务
+
+注入并使用 Feign 接口调用远程服务:
```java
@Controller
@@ -257,37 +251,34 @@ public class SellController {
## 五、启动测试
-#### 5.1 启动一个Eureka服务、三个producer服务(注意区分端口)、和一个消费者服务
+### 5.1 启动服务
-feign 的依赖中导入了 spring-cloud-starter-netflix-ribbon 依赖,并且在内部实现了基于 ribbon 的客户端负载均衡,所以我们这里启动三个 producer 实例来观察负载均衡的情况。
+启动一个Eureka服务、三个生产者服务(注意区分端口)、和一个消费者服务。Feign 的依赖中导入了 spring-cloud-starter-netflix-ribbon 依赖,并且在内部实现了基于 Ribbon 的客户端负载均衡,所以我们这里启动三个生产者服务来观察负载均衡的情况:
-
**服务注册中心:**
+### 5.2 验证负载均衡
-#### 5.2 访问http://localhost:8080/sell/products 查看负载均衡的调用结果
+访问 http://localhost:8080/sell/products 查看负载均衡的调用结果:
-
-
+## 六、Feign 的服务容错
-## 六、 feign 的服务容错
+### 6.1 开启容错配置
-#### 6.1 feign 的依赖中默认导入了hystrix 的相关依赖,我们不需要额外导入,只需要开启相关配置即可
+Feign 的依赖中默认导入了 Hystrix (熔断器)的相关依赖,我们不需要额外导入,只需要开启相关配置即可:
-
-
-#### 6.2 在application.yml 中开启hystrix
+ 在 application.yml 中开启 Hystrix :
```yml
feign:
@@ -296,12 +287,14 @@ feign:
enabled: true
```
-#### 6.3 创建`CProductFeignImpl`,继承feign接口(CProductFeign),定义熔断时候的回退处理
+### 6.2 定义降级处理
+
+创建 `CProductFeignImpl`,继承 Feign接口(CProductFeign),定义熔断时候的降级处理机制:
```java
/**
* @author : heibaiying
- * @description : 定义发生熔断时候的回退处理。除了继承自 CProductFeign,还需要用@Component 声明为 spring 的组件
+ * @description : 定义发生熔断时候的降级处理。除了继承自 CProductFeign,还需要用 @Component 声明为 spring 的组件
*/
@Component
public class CProductFeignImpl implements CProductFeign {
@@ -353,7 +346,9 @@ public class CProductFeignImpl implements CProductFeign {