diff --git a/springcloud/第一篇所用代码/confsvr/pom.xml b/springcloud/spring-cloud-config配置中心/confsvr/pom.xml
similarity index 100%
rename from springcloud/第一篇所用代码/confsvr/pom.xml
rename to springcloud/spring-cloud-config配置中心/confsvr/pom.xml
diff --git a/springcloud/第一篇所用代码/confsvr/src/main/java/com/fxb/demo/ConfsvrApplication.java b/springcloud/spring-cloud-config配置中心/confsvr/src/main/java/com/fxb/demo/ConfsvrApplication.java
similarity index 100%
rename from springcloud/第一篇所用代码/confsvr/src/main/java/com/fxb/demo/ConfsvrApplication.java
rename to springcloud/spring-cloud-config配置中心/confsvr/src/main/java/com/fxb/demo/ConfsvrApplication.java
diff --git a/springcloud/第一篇所用代码/confsvr/src/main/resources/application.yml b/springcloud/spring-cloud-config配置中心/confsvr/src/main/resources/application.yml
similarity index 100%
rename from springcloud/第一篇所用代码/confsvr/src/main/resources/application.yml
rename to springcloud/spring-cloud-config配置中心/confsvr/src/main/resources/application.yml
diff --git a/springcloud/第一篇所用代码/confsvr/src/test/java/com/fxb/demo/ConfsvrApplicationTests.java b/springcloud/spring-cloud-config配置中心/confsvr/src/test/java/com/fxb/demo/ConfsvrApplicationTests.java
similarity index 100%
rename from springcloud/第一篇所用代码/confsvr/src/test/java/com/fxb/demo/ConfsvrApplicationTests.java
rename to springcloud/spring-cloud-config配置中心/confsvr/src/test/java/com/fxb/demo/ConfsvrApplicationTests.java
diff --git a/springcloud/第一篇所用代码/licensingservice/pom.xml b/springcloud/spring-cloud-config配置中心/licensingservice/pom.xml
similarity index 100%
rename from springcloud/第一篇所用代码/licensingservice/pom.xml
rename to springcloud/spring-cloud-config配置中心/licensingservice/pom.xml
diff --git a/springcloud/第一篇所用代码/licensingservice/src/main/java/com/fxb/licensingservice/LicensingserviceApplication.java b/springcloud/spring-cloud-config配置中心/licensingservice/src/main/java/com/fxb/licensingservice/LicensingserviceApplication.java
similarity index 100%
rename from springcloud/第一篇所用代码/licensingservice/src/main/java/com/fxb/licensingservice/LicensingserviceApplication.java
rename to springcloud/spring-cloud-config配置中心/licensingservice/src/main/java/com/fxb/licensingservice/LicensingserviceApplication.java
diff --git a/springcloud/第一篇所用代码/licensingservice/src/main/resources/application.yml b/springcloud/spring-cloud-config配置中心/licensingservice/src/main/resources/application.yml
similarity index 100%
rename from springcloud/第一篇所用代码/licensingservice/src/main/resources/application.yml
rename to springcloud/spring-cloud-config配置中心/licensingservice/src/main/resources/application.yml
diff --git a/springcloud/第一篇所用代码/licensingservice/src/main/resources/bootstrap.yml b/springcloud/spring-cloud-config配置中心/licensingservice/src/main/resources/bootstrap.yml
similarity index 100%
rename from springcloud/第一篇所用代码/licensingservice/src/main/resources/bootstrap.yml
rename to springcloud/spring-cloud-config配置中心/licensingservice/src/main/resources/bootstrap.yml
diff --git a/springcloud/第一篇所用代码/licensingservice/src/test/java/com/fxb/licensingservice/LicensingserviceApplicationTests.java b/springcloud/spring-cloud-config配置中心/licensingservice/src/test/java/com/fxb/licensingservice/LicensingserviceApplicationTests.java
similarity index 100%
rename from springcloud/第一篇所用代码/licensingservice/src/test/java/com/fxb/licensingservice/LicensingserviceApplicationTests.java
rename to springcloud/spring-cloud-config配置中心/licensingservice/src/test/java/com/fxb/licensingservice/LicensingserviceApplicationTests.java
diff --git a/springcloud/第三篇所用代码/confsvr/pom.xml b/springcloud/spring-cloud弹性客户端/confsvr/pom.xml
similarity index 100%
rename from springcloud/第三篇所用代码/confsvr/pom.xml
rename to springcloud/spring-cloud弹性客户端/confsvr/pom.xml
diff --git a/springcloud/第三篇所用代码/confsvr/src/main/java/com/fxb/demo/ConfsvrApplication.java b/springcloud/spring-cloud弹性客户端/confsvr/src/main/java/com/fxb/demo/ConfsvrApplication.java
similarity index 100%
rename from springcloud/第三篇所用代码/confsvr/src/main/java/com/fxb/demo/ConfsvrApplication.java
rename to springcloud/spring-cloud弹性客户端/confsvr/src/main/java/com/fxb/demo/ConfsvrApplication.java
diff --git a/springcloud/第三篇所用代码/confsvr/src/main/resources/application.yml b/springcloud/spring-cloud弹性客户端/confsvr/src/main/resources/application.yml
similarity index 100%
rename from springcloud/第三篇所用代码/confsvr/src/main/resources/application.yml
rename to springcloud/spring-cloud弹性客户端/confsvr/src/main/resources/application.yml
diff --git a/springcloud/第三篇所用代码/confsvr/src/test/java/com/fxb/demo/ConfsvrApplicationTests.java b/springcloud/spring-cloud弹性客户端/confsvr/src/test/java/com/fxb/demo/ConfsvrApplicationTests.java
similarity index 100%
rename from springcloud/第三篇所用代码/confsvr/src/test/java/com/fxb/demo/ConfsvrApplicationTests.java
rename to springcloud/spring-cloud弹性客户端/confsvr/src/test/java/com/fxb/demo/ConfsvrApplicationTests.java
diff --git a/springcloud/第三篇所用代码/eurekasvr/pom.xml b/springcloud/spring-cloud弹性客户端/eurekasvr/pom.xml
similarity index 100%
rename from springcloud/第三篇所用代码/eurekasvr/pom.xml
rename to springcloud/spring-cloud弹性客户端/eurekasvr/pom.xml
diff --git a/springcloud/第三篇所用代码/eurekasvr/src/main/java/com/fxb/eurekasvr/EurekasvrApplication.java b/springcloud/spring-cloud弹性客户端/eurekasvr/src/main/java/com/fxb/eurekasvr/EurekasvrApplication.java
similarity index 100%
rename from springcloud/第三篇所用代码/eurekasvr/src/main/java/com/fxb/eurekasvr/EurekasvrApplication.java
rename to springcloud/spring-cloud弹性客户端/eurekasvr/src/main/java/com/fxb/eurekasvr/EurekasvrApplication.java
diff --git a/springcloud/第三篇所用代码/eurekasvr/src/main/resources/application.yml b/springcloud/spring-cloud弹性客户端/eurekasvr/src/main/resources/application.yml
similarity index 100%
rename from springcloud/第三篇所用代码/eurekasvr/src/main/resources/application.yml
rename to springcloud/spring-cloud弹性客户端/eurekasvr/src/main/resources/application.yml
diff --git a/springcloud/第三篇所用代码/eurekasvr/src/test/java/com/fxb/eurekasvr/EurekasvrApplicationTests.java b/springcloud/spring-cloud弹性客户端/eurekasvr/src/test/java/com/fxb/eurekasvr/EurekasvrApplicationTests.java
similarity index 100%
rename from springcloud/第三篇所用代码/eurekasvr/src/test/java/com/fxb/eurekasvr/EurekasvrApplicationTests.java
rename to springcloud/spring-cloud弹性客户端/eurekasvr/src/test/java/com/fxb/eurekasvr/EurekasvrApplicationTests.java
diff --git a/springcloud/第三篇所用代码/licensingservice/pom.xml b/springcloud/spring-cloud弹性客户端/licensingservice/pom.xml
similarity index 100%
rename from springcloud/第三篇所用代码/licensingservice/pom.xml
rename to springcloud/spring-cloud弹性客户端/licensingservice/pom.xml
diff --git a/springcloud/第三篇所用代码/licensingservice/src/main/java/com/fxb/licensingservice/Entity/Licensing.java b/springcloud/spring-cloud弹性客户端/licensingservice/src/main/java/com/fxb/licensingservice/Entity/Licensing.java
similarity index 100%
rename from springcloud/第三篇所用代码/licensingservice/src/main/java/com/fxb/licensingservice/Entity/Licensing.java
rename to springcloud/spring-cloud弹性客户端/licensingservice/src/main/java/com/fxb/licensingservice/Entity/Licensing.java
diff --git a/springcloud/第三篇所用代码/licensingservice/src/main/java/com/fxb/licensingservice/Entity/Organization.java b/springcloud/spring-cloud弹性客户端/licensingservice/src/main/java/com/fxb/licensingservice/Entity/Organization.java
similarity index 100%
rename from springcloud/第三篇所用代码/licensingservice/src/main/java/com/fxb/licensingservice/Entity/Organization.java
rename to springcloud/spring-cloud弹性客户端/licensingservice/src/main/java/com/fxb/licensingservice/Entity/Organization.java
diff --git a/springcloud/第三篇所用代码/licensingservice/src/main/java/com/fxb/licensingservice/LicensingserviceApplication.java b/springcloud/spring-cloud弹性客户端/licensingservice/src/main/java/com/fxb/licensingservice/LicensingserviceApplication.java
similarity index 100%
rename from springcloud/第三篇所用代码/licensingservice/src/main/java/com/fxb/licensingservice/LicensingserviceApplication.java
rename to springcloud/spring-cloud弹性客户端/licensingservice/src/main/java/com/fxb/licensingservice/LicensingserviceApplication.java
diff --git a/springcloud/第三篇所用代码/licensingservice/src/main/java/com/fxb/licensingservice/client/OrganizationFeignClient.java b/springcloud/spring-cloud弹性客户端/licensingservice/src/main/java/com/fxb/licensingservice/client/OrganizationFeignClient.java
similarity index 100%
rename from springcloud/第三篇所用代码/licensingservice/src/main/java/com/fxb/licensingservice/client/OrganizationFeignClient.java
rename to springcloud/spring-cloud弹性客户端/licensingservice/src/main/java/com/fxb/licensingservice/client/OrganizationFeignClient.java
diff --git a/springcloud/第三篇所用代码/licensingservice/src/main/java/com/fxb/licensingservice/client/OrganizationFeignClientImpl.java b/springcloud/spring-cloud弹性客户端/licensingservice/src/main/java/com/fxb/licensingservice/client/OrganizationFeignClientImpl.java
similarity index 100%
rename from springcloud/第三篇所用代码/licensingservice/src/main/java/com/fxb/licensingservice/client/OrganizationFeignClientImpl.java
rename to springcloud/spring-cloud弹性客户端/licensingservice/src/main/java/com/fxb/licensingservice/client/OrganizationFeignClientImpl.java
diff --git a/springcloud/第三篇所用代码/licensingservice/src/main/java/com/fxb/licensingservice/controller/LicensingController.java b/springcloud/spring-cloud弹性客户端/licensingservice/src/main/java/com/fxb/licensingservice/controller/LicensingController.java
similarity index 100%
rename from springcloud/第三篇所用代码/licensingservice/src/main/java/com/fxb/licensingservice/controller/LicensingController.java
rename to springcloud/spring-cloud弹性客户端/licensingservice/src/main/java/com/fxb/licensingservice/controller/LicensingController.java
diff --git a/springcloud/第三篇所用代码/licensingservice/src/main/java/com/fxb/licensingservice/service/OrganizationByRibbonService.java b/springcloud/spring-cloud弹性客户端/licensingservice/src/main/java/com/fxb/licensingservice/service/OrganizationByRibbonService.java
similarity index 100%
rename from springcloud/第三篇所用代码/licensingservice/src/main/java/com/fxb/licensingservice/service/OrganizationByRibbonService.java
rename to springcloud/spring-cloud弹性客户端/licensingservice/src/main/java/com/fxb/licensingservice/service/OrganizationByRibbonService.java
diff --git a/springcloud/第三篇所用代码/licensingservice/src/main/java/com/fxb/licensingservice/service/OrganizationService.java b/springcloud/spring-cloud弹性客户端/licensingservice/src/main/java/com/fxb/licensingservice/service/OrganizationService.java
similarity index 100%
rename from springcloud/第三篇所用代码/licensingservice/src/main/java/com/fxb/licensingservice/service/OrganizationService.java
rename to springcloud/spring-cloud弹性客户端/licensingservice/src/main/java/com/fxb/licensingservice/service/OrganizationService.java
diff --git a/springcloud/第三篇所用代码/licensingservice/src/main/resources/application.yml b/springcloud/spring-cloud弹性客户端/licensingservice/src/main/resources/application.yml
similarity index 100%
rename from springcloud/第三篇所用代码/licensingservice/src/main/resources/application.yml
rename to springcloud/spring-cloud弹性客户端/licensingservice/src/main/resources/application.yml
diff --git a/springcloud/第三篇所用代码/licensingservice/src/main/resources/bootstrap.yml b/springcloud/spring-cloud弹性客户端/licensingservice/src/main/resources/bootstrap.yml
similarity index 100%
rename from springcloud/第三篇所用代码/licensingservice/src/main/resources/bootstrap.yml
rename to springcloud/spring-cloud弹性客户端/licensingservice/src/main/resources/bootstrap.yml
diff --git a/springcloud/第三篇所用代码/licensingservice/src/test/java/com/fxb/licensingservice/LicensingserviceApplicationTests.java b/springcloud/spring-cloud弹性客户端/licensingservice/src/test/java/com/fxb/licensingservice/LicensingserviceApplicationTests.java
similarity index 100%
rename from springcloud/第三篇所用代码/licensingservice/src/test/java/com/fxb/licensingservice/LicensingserviceApplicationTests.java
rename to springcloud/spring-cloud弹性客户端/licensingservice/src/test/java/com/fxb/licensingservice/LicensingserviceApplicationTests.java
diff --git a/springcloud/第三篇所用代码/organizationservice/pom.xml b/springcloud/spring-cloud弹性客户端/organizationservice/pom.xml
similarity index 100%
rename from springcloud/第三篇所用代码/organizationservice/pom.xml
rename to springcloud/spring-cloud弹性客户端/organizationservice/pom.xml
diff --git a/springcloud/第三篇所用代码/organizationservice/src/main/java/com/fxb/organizationservice/OrganizationserviceApplication.java b/springcloud/spring-cloud弹性客户端/organizationservice/src/main/java/com/fxb/organizationservice/OrganizationserviceApplication.java
similarity index 100%
rename from springcloud/第三篇所用代码/organizationservice/src/main/java/com/fxb/organizationservice/OrganizationserviceApplication.java
rename to springcloud/spring-cloud弹性客户端/organizationservice/src/main/java/com/fxb/organizationservice/OrganizationserviceApplication.java
diff --git a/springcloud/第三篇所用代码/organizationservice/src/main/java/com/fxb/organizationservice/controller/OrganizationController.java b/springcloud/spring-cloud弹性客户端/organizationservice/src/main/java/com/fxb/organizationservice/controller/OrganizationController.java
similarity index 100%
rename from springcloud/第三篇所用代码/organizationservice/src/main/java/com/fxb/organizationservice/controller/OrganizationController.java
rename to springcloud/spring-cloud弹性客户端/organizationservice/src/main/java/com/fxb/organizationservice/controller/OrganizationController.java
diff --git a/springcloud/第三篇所用代码/organizationservice/src/main/resources/application.properties b/springcloud/spring-cloud弹性客户端/organizationservice/src/main/resources/application.properties
similarity index 100%
rename from springcloud/第三篇所用代码/organizationservice/src/main/resources/application.properties
rename to springcloud/spring-cloud弹性客户端/organizationservice/src/main/resources/application.properties
diff --git a/springcloud/第三篇所用代码/organizationservice/src/main/resources/bootstrap.yml b/springcloud/spring-cloud弹性客户端/organizationservice/src/main/resources/bootstrap.yml
similarity index 100%
rename from springcloud/第三篇所用代码/organizationservice/src/main/resources/bootstrap.yml
rename to springcloud/spring-cloud弹性客户端/organizationservice/src/main/resources/bootstrap.yml
diff --git a/springcloud/第三篇所用代码/organizationservice/src/test/java/com/fxb/organizationservice/OrganizationserviceApplicationTests.java b/springcloud/spring-cloud弹性客户端/organizationservice/src/test/java/com/fxb/organizationservice/OrganizationserviceApplicationTests.java
similarity index 100%
rename from springcloud/第三篇所用代码/organizationservice/src/test/java/com/fxb/organizationservice/OrganizationserviceApplicationTests.java
rename to springcloud/spring-cloud弹性客户端/organizationservice/src/test/java/com/fxb/organizationservice/OrganizationserviceApplicationTests.java
diff --git a/springcloud/第二篇代码/confsvr/pom.xml b/springcloud/spring-cloud服务发现/confsvr/pom.xml
similarity index 100%
rename from springcloud/第二篇代码/confsvr/pom.xml
rename to springcloud/spring-cloud服务发现/confsvr/pom.xml
diff --git a/springcloud/第二篇代码/confsvr/src/main/java/com/fxb/demo/ConfsvrApplication.java b/springcloud/spring-cloud服务发现/confsvr/src/main/java/com/fxb/demo/ConfsvrApplication.java
similarity index 100%
rename from springcloud/第二篇代码/confsvr/src/main/java/com/fxb/demo/ConfsvrApplication.java
rename to springcloud/spring-cloud服务发现/confsvr/src/main/java/com/fxb/demo/ConfsvrApplication.java
diff --git a/springcloud/第二篇代码/confsvr/src/main/resources/application.yml b/springcloud/spring-cloud服务发现/confsvr/src/main/resources/application.yml
similarity index 100%
rename from springcloud/第二篇代码/confsvr/src/main/resources/application.yml
rename to springcloud/spring-cloud服务发现/confsvr/src/main/resources/application.yml
diff --git a/springcloud/第二篇代码/confsvr/src/test/java/com/fxb/demo/ConfsvrApplicationTests.java b/springcloud/spring-cloud服务发现/confsvr/src/test/java/com/fxb/demo/ConfsvrApplicationTests.java
similarity index 100%
rename from springcloud/第二篇代码/confsvr/src/test/java/com/fxb/demo/ConfsvrApplicationTests.java
rename to springcloud/spring-cloud服务发现/confsvr/src/test/java/com/fxb/demo/ConfsvrApplicationTests.java
diff --git a/springcloud/第二篇代码/eurekasvr/pom.xml b/springcloud/spring-cloud服务发现/eurekasvr/pom.xml
similarity index 100%
rename from springcloud/第二篇代码/eurekasvr/pom.xml
rename to springcloud/spring-cloud服务发现/eurekasvr/pom.xml
diff --git a/springcloud/第二篇代码/eurekasvr/src/main/java/com/fxb/eurekasvr/EurekasvrApplication.java b/springcloud/spring-cloud服务发现/eurekasvr/src/main/java/com/fxb/eurekasvr/EurekasvrApplication.java
similarity index 100%
rename from springcloud/第二篇代码/eurekasvr/src/main/java/com/fxb/eurekasvr/EurekasvrApplication.java
rename to springcloud/spring-cloud服务发现/eurekasvr/src/main/java/com/fxb/eurekasvr/EurekasvrApplication.java
diff --git a/springcloud/第二篇代码/eurekasvr/src/main/resources/application.yml b/springcloud/spring-cloud服务发现/eurekasvr/src/main/resources/application.yml
similarity index 100%
rename from springcloud/第二篇代码/eurekasvr/src/main/resources/application.yml
rename to springcloud/spring-cloud服务发现/eurekasvr/src/main/resources/application.yml
diff --git a/springcloud/第二篇代码/eurekasvr/src/test/java/com/fxb/eurekasvr/EurekasvrApplicationTests.java b/springcloud/spring-cloud服务发现/eurekasvr/src/test/java/com/fxb/eurekasvr/EurekasvrApplicationTests.java
similarity index 100%
rename from springcloud/第二篇代码/eurekasvr/src/test/java/com/fxb/eurekasvr/EurekasvrApplicationTests.java
rename to springcloud/spring-cloud服务发现/eurekasvr/src/test/java/com/fxb/eurekasvr/EurekasvrApplicationTests.java
diff --git a/springcloud/第二篇代码/licensingservice/pom.xml b/springcloud/spring-cloud服务发现/licensingservice/pom.xml
similarity index 100%
rename from springcloud/第二篇代码/licensingservice/pom.xml
rename to springcloud/spring-cloud服务发现/licensingservice/pom.xml
diff --git a/springcloud/第二篇代码/licensingservice/src/main/java/com/fxb/licensingservice/Entity/Licensing.java b/springcloud/spring-cloud服务发现/licensingservice/src/main/java/com/fxb/licensingservice/Entity/Licensing.java
similarity index 100%
rename from springcloud/第二篇代码/licensingservice/src/main/java/com/fxb/licensingservice/Entity/Licensing.java
rename to springcloud/spring-cloud服务发现/licensingservice/src/main/java/com/fxb/licensingservice/Entity/Licensing.java
diff --git a/springcloud/第二篇代码/licensingservice/src/main/java/com/fxb/licensingservice/Entity/Organization.java b/springcloud/spring-cloud服务发现/licensingservice/src/main/java/com/fxb/licensingservice/Entity/Organization.java
similarity index 100%
rename from springcloud/第二篇代码/licensingservice/src/main/java/com/fxb/licensingservice/Entity/Organization.java
rename to springcloud/spring-cloud服务发现/licensingservice/src/main/java/com/fxb/licensingservice/Entity/Organization.java
diff --git a/springcloud/第二篇代码/licensingservice/src/main/java/com/fxb/licensingservice/LicensingserviceApplication.java b/springcloud/spring-cloud服务发现/licensingservice/src/main/java/com/fxb/licensingservice/LicensingserviceApplication.java
similarity index 100%
rename from springcloud/第二篇代码/licensingservice/src/main/java/com/fxb/licensingservice/LicensingserviceApplication.java
rename to springcloud/spring-cloud服务发现/licensingservice/src/main/java/com/fxb/licensingservice/LicensingserviceApplication.java
diff --git a/springcloud/第二篇代码/licensingservice/src/main/java/com/fxb/licensingservice/client/OrganizationFeignClient.java b/springcloud/spring-cloud服务发现/licensingservice/src/main/java/com/fxb/licensingservice/client/OrganizationFeignClient.java
similarity index 100%
rename from springcloud/第二篇代码/licensingservice/src/main/java/com/fxb/licensingservice/client/OrganizationFeignClient.java
rename to springcloud/spring-cloud服务发现/licensingservice/src/main/java/com/fxb/licensingservice/client/OrganizationFeignClient.java
diff --git a/springcloud/第二篇代码/licensingservice/src/main/java/com/fxb/licensingservice/controller/LicensingController.java b/springcloud/spring-cloud服务发现/licensingservice/src/main/java/com/fxb/licensingservice/controller/LicensingController.java
similarity index 100%
rename from springcloud/第二篇代码/licensingservice/src/main/java/com/fxb/licensingservice/controller/LicensingController.java
rename to springcloud/spring-cloud服务发现/licensingservice/src/main/java/com/fxb/licensingservice/controller/LicensingController.java
diff --git a/springcloud/第二篇代码/licensingservice/src/main/java/com/fxb/licensingservice/service/OrganizationByRibbonService.java b/springcloud/spring-cloud服务发现/licensingservice/src/main/java/com/fxb/licensingservice/service/OrganizationByRibbonService.java
similarity index 100%
rename from springcloud/第二篇代码/licensingservice/src/main/java/com/fxb/licensingservice/service/OrganizationByRibbonService.java
rename to springcloud/spring-cloud服务发现/licensingservice/src/main/java/com/fxb/licensingservice/service/OrganizationByRibbonService.java
diff --git a/springcloud/第二篇代码/licensingservice/src/main/java/com/fxb/licensingservice/service/OrganizationService.java b/springcloud/spring-cloud服务发现/licensingservice/src/main/java/com/fxb/licensingservice/service/OrganizationService.java
similarity index 100%
rename from springcloud/第二篇代码/licensingservice/src/main/java/com/fxb/licensingservice/service/OrganizationService.java
rename to springcloud/spring-cloud服务发现/licensingservice/src/main/java/com/fxb/licensingservice/service/OrganizationService.java
diff --git a/springcloud/第二篇代码/licensingservice/src/main/resources/application.yml b/springcloud/spring-cloud服务发现/licensingservice/src/main/resources/application.yml
similarity index 100%
rename from springcloud/第二篇代码/licensingservice/src/main/resources/application.yml
rename to springcloud/spring-cloud服务发现/licensingservice/src/main/resources/application.yml
diff --git a/springcloud/第二篇代码/licensingservice/src/main/resources/bootstrap.yml b/springcloud/spring-cloud服务发现/licensingservice/src/main/resources/bootstrap.yml
similarity index 100%
rename from springcloud/第二篇代码/licensingservice/src/main/resources/bootstrap.yml
rename to springcloud/spring-cloud服务发现/licensingservice/src/main/resources/bootstrap.yml
diff --git a/springcloud/第二篇代码/licensingservice/src/test/java/com/fxb/licensingservice/LicensingserviceApplicationTests.java b/springcloud/spring-cloud服务发现/licensingservice/src/test/java/com/fxb/licensingservice/LicensingserviceApplicationTests.java
similarity index 100%
rename from springcloud/第二篇代码/licensingservice/src/test/java/com/fxb/licensingservice/LicensingserviceApplicationTests.java
rename to springcloud/spring-cloud服务发现/licensingservice/src/test/java/com/fxb/licensingservice/LicensingserviceApplicationTests.java
diff --git a/springcloud/第二篇代码/organizationservice/pom.xml b/springcloud/spring-cloud服务发现/organizationservice/pom.xml
similarity index 100%
rename from springcloud/第二篇代码/organizationservice/pom.xml
rename to springcloud/spring-cloud服务发现/organizationservice/pom.xml
diff --git a/springcloud/第二篇代码/organizationservice/src/main/java/com/fxb/organizationservice/OrganizationserviceApplication.java b/springcloud/spring-cloud服务发现/organizationservice/src/main/java/com/fxb/organizationservice/OrganizationserviceApplication.java
similarity index 100%
rename from springcloud/第二篇代码/organizationservice/src/main/java/com/fxb/organizationservice/OrganizationserviceApplication.java
rename to springcloud/spring-cloud服务发现/organizationservice/src/main/java/com/fxb/organizationservice/OrganizationserviceApplication.java
diff --git a/springcloud/第二篇代码/organizationservice/src/main/java/com/fxb/organizationservice/controller/OrganizationController.java b/springcloud/spring-cloud服务发现/organizationservice/src/main/java/com/fxb/organizationservice/controller/OrganizationController.java
similarity index 100%
rename from springcloud/第二篇代码/organizationservice/src/main/java/com/fxb/organizationservice/controller/OrganizationController.java
rename to springcloud/spring-cloud服务发现/organizationservice/src/main/java/com/fxb/organizationservice/controller/OrganizationController.java
diff --git a/springcloud/第二篇代码/organizationservice/src/main/resources/application.properties b/springcloud/spring-cloud服务发现/organizationservice/src/main/resources/application.properties
similarity index 100%
rename from springcloud/第二篇代码/organizationservice/src/main/resources/application.properties
rename to springcloud/spring-cloud服务发现/organizationservice/src/main/resources/application.properties
diff --git a/springcloud/第二篇代码/organizationservice/src/main/resources/bootstrap.yml b/springcloud/spring-cloud服务发现/organizationservice/src/main/resources/bootstrap.yml
similarity index 100%
rename from springcloud/第二篇代码/organizationservice/src/main/resources/bootstrap.yml
rename to springcloud/spring-cloud服务发现/organizationservice/src/main/resources/bootstrap.yml
diff --git a/springcloud/第二篇代码/organizationservice/src/test/java/com/fxb/organizationservice/OrganizationserviceApplicationTests.java b/springcloud/spring-cloud服务发现/organizationservice/src/test/java/com/fxb/organizationservice/OrganizationserviceApplicationTests.java
similarity index 100%
rename from springcloud/第二篇代码/organizationservice/src/test/java/com/fxb/organizationservice/OrganizationserviceApplicationTests.java
rename to springcloud/spring-cloud服务发现/organizationservice/src/test/java/com/fxb/organizationservice/OrganizationserviceApplicationTests.java
diff --git a/springcloud/spring-cloud服务路由/confsvr/pom.xml b/springcloud/spring-cloud服务路由/confsvr/pom.xml
new file mode 100644
index 0000000..5c8cec2
--- /dev/null
+++ b/springcloud/spring-cloud服务路由/confsvr/pom.xml
@@ -0,0 +1,65 @@
+
+
+ 4.0.0
+
+ com.fxb
+ demo
+ 0.0.1-SNAPSHOT
+ jar
+
+ confsvr
+ Demo project for Spring Boot
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 1.4.4.RELEASE
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-dependencies
+ Camden.SR5
+ pom
+ import
+
+
+
+
+
+ UTF-8
+ UTF-8
+ 1.8
+ Camden.SR5
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-config-server
+
+
+ org.springframework.cloud
+ spring-cloud-starter-eureka
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
+
+
diff --git a/springcloud/spring-cloud服务路由/confsvr/src/main/java/com/fxb/demo/ConfsvrApplication.java b/springcloud/spring-cloud服务路由/confsvr/src/main/java/com/fxb/demo/ConfsvrApplication.java
new file mode 100644
index 0000000..3c94900
--- /dev/null
+++ b/springcloud/spring-cloud服务路由/confsvr/src/main/java/com/fxb/demo/ConfsvrApplication.java
@@ -0,0 +1,16 @@
+package com.fxb.demo;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+import org.springframework.cloud.config.server.EnableConfigServer;
+
+@SpringBootApplication
+@EnableConfigServer
+@EnableDiscoveryClient
+public class ConfsvrApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(ConfsvrApplication.class, args);
+ }
+}
diff --git a/springcloud/spring-cloud服务路由/confsvr/src/main/resources/application.yml b/springcloud/spring-cloud服务路由/confsvr/src/main/resources/application.yml
new file mode 100644
index 0000000..528c81c
--- /dev/null
+++ b/springcloud/spring-cloud服务路由/confsvr/src/main/resources/application.yml
@@ -0,0 +1,29 @@
+server:
+ port: 8888
+
+eureka:
+ instance:
+ #注册服务的IP,而不是服务器名
+ prefer-ip-address: true
+ client:
+ #向eureka注册服务
+ register-with-eureka: true
+ #拉取注册表的本地副本
+ fetch-registry: true
+ service-url:
+ #Eureka服务的位置(如果有多个注册中心,使用,分隔)
+ defaultZone: http://localhost:8761/eureka/
+
+spring:
+ profiles:
+ # 使用文件系统来存储配置信息,需要设置为native
+ active: native
+ application:
+ name: confsvr
+ cloud:
+ config:
+ server:
+ native:
+ # 使用文件来存放配置文件,为每个应用程序提供用逗号分隔的文件夹列表
+ searchLocations: file:///D:/configFolder/licensingservice,file:///D:/configFolder/organizationservice
+
diff --git a/springcloud/spring-cloud服务路由/confsvr/src/test/java/com/fxb/demo/ConfsvrApplicationTests.java b/springcloud/spring-cloud服务路由/confsvr/src/test/java/com/fxb/demo/ConfsvrApplicationTests.java
new file mode 100644
index 0000000..3096743
--- /dev/null
+++ b/springcloud/spring-cloud服务路由/confsvr/src/test/java/com/fxb/demo/ConfsvrApplicationTests.java
@@ -0,0 +1,16 @@
+package com.fxb.demo;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest
+public class ConfsvrApplicationTests {
+
+ @Test
+ public void contextLoads() {
+ }
+
+}
diff --git a/springcloud/spring-cloud服务路由/eurekasvr/pom.xml b/springcloud/spring-cloud服务路由/eurekasvr/pom.xml
new file mode 100644
index 0000000..5337b2a
--- /dev/null
+++ b/springcloud/spring-cloud服务路由/eurekasvr/pom.xml
@@ -0,0 +1,72 @@
+
+
+ 4.0.0
+
+ com.fxb
+ eurekasvr
+ 0.0.1-SNAPSHOT
+ jar
+
+ eurekasvr
+ Demo project for Spring Boot
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 1.4.4.RELEASE
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-dependencies
+ Camden.SR5
+ pom
+ import
+
+
+
+
+
+ UTF-8
+ UTF-8
+ 1.8
+ Camden.SR5
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-eureka-server
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
+
+
+ spring-milestones
+ Spring Milestones
+ https://repo.spring.io/milestone
+
+ false
+
+
+
+
+
+
diff --git a/springcloud/spring-cloud服务路由/eurekasvr/src/main/java/com/fxb/eurekasvr/EurekasvrApplication.java b/springcloud/spring-cloud服务路由/eurekasvr/src/main/java/com/fxb/eurekasvr/EurekasvrApplication.java
new file mode 100644
index 0000000..0ee3302
--- /dev/null
+++ b/springcloud/spring-cloud服务路由/eurekasvr/src/main/java/com/fxb/eurekasvr/EurekasvrApplication.java
@@ -0,0 +1,14 @@
+package com.fxb.eurekasvr;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
+
+@SpringBootApplication
+@EnableEurekaServer
+public class EurekasvrApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(EurekasvrApplication.class, args);
+ }
+}
diff --git a/springcloud/spring-cloud服务路由/eurekasvr/src/main/resources/application.yml b/springcloud/spring-cloud服务路由/eurekasvr/src/main/resources/application.yml
new file mode 100644
index 0000000..12cd213
--- /dev/null
+++ b/springcloud/spring-cloud服务路由/eurekasvr/src/main/resources/application.yml
@@ -0,0 +1,12 @@
+server:
+ port: 8761
+
+eureka:
+ client:
+ #不注册自己
+ register-with-eureka: false
+ #不在本地缓存注册表信息
+ fetch-registry: false
+ server:
+ #接受请求前的等待实际,开发模式下不要开启
+ #wait-time-in-ms-when-sync-empty: 5
diff --git a/springcloud/spring-cloud服务路由/eurekasvr/src/test/java/com/fxb/eurekasvr/EurekasvrApplicationTests.java b/springcloud/spring-cloud服务路由/eurekasvr/src/test/java/com/fxb/eurekasvr/EurekasvrApplicationTests.java
new file mode 100644
index 0000000..3d21ad6
--- /dev/null
+++ b/springcloud/spring-cloud服务路由/eurekasvr/src/test/java/com/fxb/eurekasvr/EurekasvrApplicationTests.java
@@ -0,0 +1,16 @@
+package com.fxb.eurekasvr;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest
+public class EurekasvrApplicationTests {
+
+ @Test
+ public void contextLoads() {
+ }
+
+}
diff --git a/springcloud/spring-cloud服务路由/licensingservice/pom.xml b/springcloud/spring-cloud服务路由/licensingservice/pom.xml
new file mode 100644
index 0000000..1588d1a
--- /dev/null
+++ b/springcloud/spring-cloud服务路由/licensingservice/pom.xml
@@ -0,0 +1,81 @@
+
+
+ 4.0.0
+
+ com.fxb
+ licensingservice
+ 0.0.1-SNAPSHOT
+ jar
+
+ licensingservice
+ Demo project for Spring Boot
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 1.4.4.RELEASE
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-dependencies
+ Camden.SR5
+ pom
+ import
+
+
+
+
+
+ UTF-8
+ UTF-8
+ 1.8
+ Camden.SR5
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-eureka
+
+
+ org.springframework.cloud
+ spring-cloud-config-client
+
+
+ org.springframework.cloud
+ spring-cloud-starter-feign
+
+
+ org.springframework.cloud
+ spring-cloud-starter-hystrix
+
+
+
+ com.netflix.hystrix
+ hystrix-javanica
+ 1.5.9
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
+
+
diff --git a/springcloud/spring-cloud服务路由/licensingservice/src/main/java/com/fxb/licensingservice/Entity/Licensing.java b/springcloud/spring-cloud服务路由/licensingservice/src/main/java/com/fxb/licensingservice/Entity/Licensing.java
new file mode 100644
index 0000000..f5c5d3b
--- /dev/null
+++ b/springcloud/spring-cloud服务路由/licensingservice/src/main/java/com/fxb/licensingservice/Entity/Licensing.java
@@ -0,0 +1,31 @@
+package com.fxb.licensingservice.Entity;
+
+import java.io.Serializable;
+
+/**
+ * 类功能简述:
+ * 类功能详述:
+ *
+ * @author fanxb
+ * @date 2018/11/22 19:52
+ */
+public class Licensing implements Serializable {
+ private Organization organization;
+ private boolean isValid;
+
+ public Organization getOrganization() {
+ return organization;
+ }
+
+ public void setOrganization(Organization organization) {
+ this.organization = organization;
+ }
+
+ public boolean isValid() {
+ return isValid;
+ }
+
+ public void setValid(boolean valid) {
+ isValid = valid;
+ }
+}
diff --git a/springcloud/spring-cloud服务路由/licensingservice/src/main/java/com/fxb/licensingservice/Entity/Organization.java b/springcloud/spring-cloud服务路由/licensingservice/src/main/java/com/fxb/licensingservice/Entity/Organization.java
new file mode 100644
index 0000000..357bfa3
--- /dev/null
+++ b/springcloud/spring-cloud服务路由/licensingservice/src/main/java/com/fxb/licensingservice/Entity/Organization.java
@@ -0,0 +1,40 @@
+package com.fxb.licensingservice.Entity;
+
+import java.io.Serializable;
+
+/**
+ * 类功能简述:
+ * 类功能详述:
+ *
+ * @author fanxb
+ * @date 2018/11/22 19:30
+ */
+public class Organization implements Serializable {
+
+ private String id;
+ private String name;
+
+ public Organization() {
+ }
+
+ public Organization(String id, String name) {
+ this.id = id;
+ this.name = name;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+}
diff --git a/springcloud/spring-cloud服务路由/licensingservice/src/main/java/com/fxb/licensingservice/LicensingserviceApplication.java b/springcloud/spring-cloud服务路由/licensingservice/src/main/java/com/fxb/licensingservice/LicensingserviceApplication.java
new file mode 100644
index 0000000..bb3a3f4
--- /dev/null
+++ b/springcloud/spring-cloud服务路由/licensingservice/src/main/java/com/fxb/licensingservice/LicensingserviceApplication.java
@@ -0,0 +1,30 @@
+package com.fxb.licensingservice;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+import org.springframework.cloud.client.loadbalancer.LoadBalanced;
+import org.springframework.cloud.netflix.feign.EnableFeignClients;
+import org.springframework.context.annotation.Bean;
+import org.springframework.web.client.RestTemplate;
+
+@SpringBootApplication
+@EnableDiscoveryClient //使用不带Ribbon功能的Spring RestTemplate,其他情况下可删除
+@EnableFeignClients //使用Feign客户端进行服务调用,其他情况下可删除
+@EnableCircuitBreaker //告诉Spring Cloud将要使用Hystrix
+public class LicensingserviceApplication {
+
+ /**
+ * 使用带有Ribbon 功能的Spring RestTemplate,其他情况可删除
+ */
+ @LoadBalanced
+ @Bean
+ public RestTemplate getRestTemplate(){
+ return new RestTemplate();
+ }
+
+ public static void main(String[] args) {
+ SpringApplication.run(LicensingserviceApplication.class, args);
+ }
+}
diff --git a/springcloud/spring-cloud服务路由/licensingservice/src/main/java/com/fxb/licensingservice/client/OrganizationFeignClient.java b/springcloud/spring-cloud服务路由/licensingservice/src/main/java/com/fxb/licensingservice/client/OrganizationFeignClient.java
new file mode 100644
index 0000000..6e92dd9
--- /dev/null
+++ b/springcloud/spring-cloud服务路由/licensingservice/src/main/java/com/fxb/licensingservice/client/OrganizationFeignClient.java
@@ -0,0 +1,32 @@
+package com.fxb.licensingservice.client;
+
+import com.fxb.licensingservice.Entity.Organization;
+import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
+import com.netflix.hystrix.contrib.javanica.annotation.HystrixProperty;
+import org.springframework.cloud.netflix.feign.FeignClient;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+/**
+ * 类功能简述:
+ * 类功能详述:
+ *
+ * @author fanxb
+ * @date 2018/11/23 17:24
+ */
+@FeignClient(name="organizationservice",fallback = OrganizationFeignClientImpl.class)//使用FeignClient注解指定目标服务
+public interface OrganizationFeignClient {
+
+ /**
+ * 获取组织信息
+ *
+ * @param orgId 组织id
+ * @return Organization
+ */
+ @HystrixCommand(commandProperties = {
+ @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "2000")
+ })
+ @RequestMapping(method = RequestMethod.GET, value = "/organization/{orgId}", consumes = "application/json")
+ Organization getOrganization(@PathVariable("orgId") String orgId);
+}
diff --git a/springcloud/spring-cloud服务路由/licensingservice/src/main/java/com/fxb/licensingservice/client/OrganizationFeignClientImpl.java b/springcloud/spring-cloud服务路由/licensingservice/src/main/java/com/fxb/licensingservice/client/OrganizationFeignClientImpl.java
new file mode 100644
index 0000000..540d36b
--- /dev/null
+++ b/springcloud/spring-cloud服务路由/licensingservice/src/main/java/com/fxb/licensingservice/client/OrganizationFeignClientImpl.java
@@ -0,0 +1,23 @@
+package com.fxb.licensingservice.client;
+
+import com.fxb.licensingservice.Entity.Organization;
+import org.springframework.stereotype.Component;
+
+/**
+ * 类功能简述:
+ * 类功能详述:
+ *
+ * @author fanxb
+ * @date 2018/12/7 11:30
+ */
+@Component
+public class OrganizationFeignClientImpl implements OrganizationFeignClient{
+
+ @Override
+ public Organization getOrganization(String orgId) {
+ Organization organization=new Organization();
+ organization.setId("0");
+ organization.setName("后备模式返回的数据");
+ return organization;
+ }
+}
diff --git a/springcloud/spring-cloud服务路由/licensingservice/src/main/java/com/fxb/licensingservice/controller/LicensingController.java b/springcloud/spring-cloud服务路由/licensingservice/src/main/java/com/fxb/licensingservice/controller/LicensingController.java
new file mode 100644
index 0000000..85dea2f
--- /dev/null
+++ b/springcloud/spring-cloud服务路由/licensingservice/src/main/java/com/fxb/licensingservice/controller/LicensingController.java
@@ -0,0 +1,56 @@
+package com.fxb.licensingservice.controller;
+
+import com.fxb.licensingservice.Entity.Licensing;
+import com.fxb.licensingservice.client.OrganizationFeignClient;
+import com.fxb.licensingservice.service.OrganizationByRibbonService;
+import com.fxb.licensingservice.service.OrganizationService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 类功能简述:
+ * 类功能详述:
+ *
+ * @author fanxb
+ * @date 2018/11/22 19:51
+ */
+@RestController
+public class LicensingController {
+
+ private OrganizationService organizationService;
+ private OrganizationByRibbonService ribbonService;
+ private OrganizationFeignClient organizationFeignClient;
+
+ @Autowired
+ public LicensingController(OrganizationService organizationService, OrganizationByRibbonService ribbonService, OrganizationFeignClient feignClient) {
+ this.organizationService = organizationService;
+ this.ribbonService = ribbonService;
+ this.organizationFeignClient = feignClient;
+ }
+
+ @GetMapping("/licensing/{orgId}")
+ public Licensing getLicensing(@PathVariable("orgId") String orgId) {
+ Licensing licensing = new Licensing();
+ licensing.setValid(false);
+ licensing.setOrganization(organizationService.getOrganization(orgId));
+ return licensing;
+ }
+
+ @GetMapping("/licensingByRibbon/{orgId}")
+ public Licensing getLicensingByRibbon(@PathVariable("orgId") String orgId) throws Exception{
+ Licensing licensing = new Licensing();
+ licensing.setValid(false);
+ licensing.setOrganization(ribbonService.getOrganizationWithRibbon(orgId));
+ return licensing;
+ }
+
+ @GetMapping("/licensingByFeign/{orgId}")
+ public Licensing getLicensingByFeign(@PathVariable("orgId") String orgId) {
+ Licensing licensing = new Licensing();
+ licensing.setValid(false);
+ licensing.setOrganization(organizationFeignClient.getOrganization(orgId));
+ return licensing;
+ }
+}
diff --git a/springcloud/spring-cloud服务路由/licensingservice/src/main/java/com/fxb/licensingservice/service/OrganizationByRibbonService.java b/springcloud/spring-cloud服务路由/licensingservice/src/main/java/com/fxb/licensingservice/service/OrganizationByRibbonService.java
new file mode 100644
index 0000000..829d7de
--- /dev/null
+++ b/springcloud/spring-cloud服务路由/licensingservice/src/main/java/com/fxb/licensingservice/service/OrganizationByRibbonService.java
@@ -0,0 +1,50 @@
+package com.fxb.licensingservice.service;
+
+import com.fxb.licensingservice.Entity.Organization;
+import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
+import com.netflix.hystrix.contrib.javanica.annotation.HystrixProperty;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Component;
+import org.springframework.web.client.RestTemplate;
+
+/**
+ * 类功能简述:
+ * 类功能详述:
+ *
+ * @author fanxb
+ * @date 2018/11/23 15:36
+ */
+@Component
+public class OrganizationByRibbonService {
+
+ private RestTemplate restTemplate;
+
+
+ @Autowired
+ public OrganizationByRibbonService(RestTemplate restTemplate) {
+ this.restTemplate = restTemplate;
+ }
+
+ @HystrixCommand(commandProperties = {
+ @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "1000")
+ }, fallbackMethod = "getOrganizationWithRibbonBackup",
+ threadPoolKey = "licenseByOrgThreadPool",
+ threadPoolProperties = {
+ @HystrixProperty(name = "coreSize", value = "30"),
+ @HystrixProperty(name = "maxQueueSize", value = "10")
+ })
+ public Organization getOrganizationWithRibbon(String id) throws Exception {
+ ResponseEntity responseEntity = restTemplate.exchange("http://organizationservice/organization/{id}",
+ HttpMethod.GET, null, Organization.class, id);
+ return responseEntity.getBody();
+ }
+
+ public Organization getOrganizationWithRibbonBackup(String id) throws Exception {
+ Organization organization = new Organization();
+ organization.setId("0");
+ organization.setName("组织服务调用失败");
+ return organization;
+ }
+}
diff --git a/springcloud/spring-cloud服务路由/licensingservice/src/main/java/com/fxb/licensingservice/service/OrganizationService.java b/springcloud/spring-cloud服务路由/licensingservice/src/main/java/com/fxb/licensingservice/service/OrganizationService.java
new file mode 100644
index 0000000..39d2327
--- /dev/null
+++ b/springcloud/spring-cloud服务路由/licensingservice/src/main/java/com/fxb/licensingservice/service/OrganizationService.java
@@ -0,0 +1,50 @@
+package com.fxb.licensingservice.service;
+
+import com.fxb.licensingservice.Entity.Organization;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cloud.client.ServiceInstance;
+import org.springframework.cloud.client.discovery.DiscoveryClient;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Service;
+import org.springframework.web.client.RestTemplate;
+
+import java.util.List;
+
+/**
+ * 类功能简述:
+ * 类功能详述:
+ *
+ * @author fanxb
+ * @date 2018/11/22 19:29
+ */
+@Service
+public class OrganizationService {
+
+ private static final String SERVICE_NAME = "organizationservice";
+ private DiscoveryClient discoveryClient;
+
+ @Autowired
+ public OrganizationService(DiscoveryClient discoveryClient) {
+ this.discoveryClient = discoveryClient;
+ }
+
+ /**
+ * 使用Spring DiscoveryClient查询
+ *
+ * @param id
+ * @return
+ */
+ public Organization getOrganization(String id) {
+ RestTemplate restTemplate = new RestTemplate();
+ List instances = discoveryClient.getInstances(SERVICE_NAME);
+ if (instances.size() == 0) {
+ throw new RuntimeException("无可用的服务");
+ }
+ String serviceUri = String.format("%s/organization/%s", instances.get(0).getUri().toString(), id);
+ ResponseEntity responseEntity = restTemplate.exchange(serviceUri, HttpMethod.GET
+ , null, Organization.class, id);
+ return responseEntity.getBody();
+ }
+
+}
diff --git a/springcloud/spring-cloud服务路由/licensingservice/src/main/resources/application.yml b/springcloud/spring-cloud服务路由/licensingservice/src/main/resources/application.yml
new file mode 100644
index 0000000..e69de29
diff --git a/springcloud/spring-cloud服务路由/licensingservice/src/main/resources/bootstrap.yml b/springcloud/spring-cloud服务路由/licensingservice/src/main/resources/bootstrap.yml
new file mode 100644
index 0000000..38f0059
--- /dev/null
+++ b/springcloud/spring-cloud服务路由/licensingservice/src/main/resources/bootstrap.yml
@@ -0,0 +1,19 @@
+spring:
+ application:
+ #指定名称,以便spring cloud config客户端知道查找哪个配置
+ name: licensingservice
+ profiles:
+ #指定环境
+ active: dev
+ cloud:
+ config:
+ enabled: true
+eureka:
+ instance:
+ prefer-ip-address: true
+ client:
+ register-with-eureka: true
+ fetch-registry: true
+ service-url:
+ defaultZone: http://localhost:8761/eureka/
+
diff --git a/springcloud/spring-cloud服务路由/licensingservice/src/test/java/com/fxb/licensingservice/LicensingserviceApplicationTests.java b/springcloud/spring-cloud服务路由/licensingservice/src/test/java/com/fxb/licensingservice/LicensingserviceApplicationTests.java
new file mode 100644
index 0000000..d29b4bf
--- /dev/null
+++ b/springcloud/spring-cloud服务路由/licensingservice/src/test/java/com/fxb/licensingservice/LicensingserviceApplicationTests.java
@@ -0,0 +1,16 @@
+package com.fxb.licensingservice;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest
+public class LicensingserviceApplicationTests {
+
+ @Test
+ public void contextLoads() {
+ }
+
+}
diff --git a/springcloud/spring-cloud服务路由/organizationservice/pom.xml b/springcloud/spring-cloud服务路由/organizationservice/pom.xml
new file mode 100644
index 0000000..421deea
--- /dev/null
+++ b/springcloud/spring-cloud服务路由/organizationservice/pom.xml
@@ -0,0 +1,65 @@
+
+
+ 4.0.0
+
+ com.fxb
+ organizationservice
+ 0.0.1-SNAPSHOT
+ jar
+
+ organizationservice
+ Demo project for Spring Boot
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 1.4.4.RELEASE
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-dependencies
+ Camden.SR5
+ pom
+ import
+
+
+
+
+
+ UTF-8
+ UTF-8
+ 1.8
+ Camden.SR5
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-eureka
+
+
+ org.springframework.cloud
+ spring-cloud-config-client
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
+
+
diff --git a/springcloud/spring-cloud服务路由/organizationservice/src/main/java/com/fxb/organizationservice/OrganizationserviceApplication.java b/springcloud/spring-cloud服务路由/organizationservice/src/main/java/com/fxb/organizationservice/OrganizationserviceApplication.java
new file mode 100644
index 0000000..8da4995
--- /dev/null
+++ b/springcloud/spring-cloud服务路由/organizationservice/src/main/java/com/fxb/organizationservice/OrganizationserviceApplication.java
@@ -0,0 +1,14 @@
+package com.fxb.organizationservice;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+
+@SpringBootApplication
+@EnableDiscoveryClient
+public class OrganizationserviceApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(OrganizationserviceApplication.class, args);
+ }
+}
diff --git a/springcloud/spring-cloud服务路由/organizationservice/src/main/java/com/fxb/organizationservice/controller/OrganizationController.java b/springcloud/spring-cloud服务路由/organizationservice/src/main/java/com/fxb/organizationservice/controller/OrganizationController.java
new file mode 100644
index 0000000..c8c9b74
--- /dev/null
+++ b/springcloud/spring-cloud服务路由/organizationservice/src/main/java/com/fxb/organizationservice/controller/OrganizationController.java
@@ -0,0 +1,33 @@
+package com.fxb.organizationservice.controller;
+
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 类功能简述:
+ * 类功能详述:
+ *
+ * @author fanxb
+ * @date 2018/11/22 18:23
+ */
+@RestController
+public class OrganizationController {
+
+ private static int count=1;
+
+ @GetMapping(value = "/organization/{orgId}")
+ public Object getOrganizationInfo(@PathVariable("orgId") String orgId) throws Exception{
+// if(count%2==0){
+// TimeUnit.SECONDS.sleep(2);
+// }
+// count++;
+ Map data = new HashMap<>(2);
+ data.put("id", orgId);
+ data.put("name", orgId + "公司");
+ return data;
+ }
+}
diff --git a/springcloud/spring-cloud服务路由/organizationservice/src/main/resources/application.properties b/springcloud/spring-cloud服务路由/organizationservice/src/main/resources/application.properties
new file mode 100644
index 0000000..e69de29
diff --git a/springcloud/spring-cloud服务路由/organizationservice/src/main/resources/bootstrap.yml b/springcloud/spring-cloud服务路由/organizationservice/src/main/resources/bootstrap.yml
new file mode 100644
index 0000000..d8e721f
--- /dev/null
+++ b/springcloud/spring-cloud服务路由/organizationservice/src/main/resources/bootstrap.yml
@@ -0,0 +1,18 @@
+spring:
+ application:
+ #指定名称,以便spring cloud config客户端知道查找哪个配置
+ name: organizationservice
+ profiles:
+ #指定环境
+ active: dev
+ cloud:
+ config:
+ enabled: true
+eureka:
+ instance:
+ prefer-ip-address: true
+ client:
+ register-with-eureka: true
+ fetch-registry: true
+ service-url:
+ defaultZone: http://localhost:8761/eureka/
\ No newline at end of file
diff --git a/springcloud/spring-cloud服务路由/organizationservice/src/test/java/com/fxb/organizationservice/OrganizationserviceApplicationTests.java b/springcloud/spring-cloud服务路由/organizationservice/src/test/java/com/fxb/organizationservice/OrganizationserviceApplicationTests.java
new file mode 100644
index 0000000..8909128
--- /dev/null
+++ b/springcloud/spring-cloud服务路由/organizationservice/src/test/java/com/fxb/organizationservice/OrganizationserviceApplicationTests.java
@@ -0,0 +1,16 @@
+package com.fxb.organizationservice;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest
+public class OrganizationserviceApplicationTests {
+
+ @Test
+ public void contextLoads() {
+ }
+
+}
diff --git a/springcloud/spring-cloud服务路由/zuul_svr/pom.xml b/springcloud/spring-cloud服务路由/zuul_svr/pom.xml
new file mode 100644
index 0000000..33f5807
--- /dev/null
+++ b/springcloud/spring-cloud服务路由/zuul_svr/pom.xml
@@ -0,0 +1,58 @@
+
+
+ 4.0.0
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 1.4.4.RELEASE
+
+
+ com.fxb
+ zuul_svr
+ 0.0.1-SNAPSHOT
+ zuul_svr
+ Demo project for Spring Boot
+
+
+ 1.8
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-dependencies
+ Camden.SR5
+ pom
+ import
+
+
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-zuul
+
+
+ org.springframework.cloud
+ spring-cloud-starter-eureka
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
+
diff --git a/springcloud/spring-cloud服务路由/zuul_svr/src/main/java/com/fxb/zuul_svr/ZuulSvrApplication.java b/springcloud/spring-cloud服务路由/zuul_svr/src/main/java/com/fxb/zuul_svr/ZuulSvrApplication.java
new file mode 100644
index 0000000..677e89f
--- /dev/null
+++ b/springcloud/spring-cloud服务路由/zuul_svr/src/main/java/com/fxb/zuul_svr/ZuulSvrApplication.java
@@ -0,0 +1,18 @@
+package com.fxb.zuul_svr;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
+
+@SpringBootApplication
+@EnableZuulProxy
+@EnableDiscoveryClient
+public class ZuulSvrApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(ZuulSvrApplication.class, args);
+ }
+
+}
+
diff --git a/springcloud/spring-cloud服务路由/zuul_svr/src/main/java/com/fxb/zuul_svr/filter/IdFilter.java b/springcloud/spring-cloud服务路由/zuul_svr/src/main/java/com/fxb/zuul_svr/filter/IdFilter.java
new file mode 100644
index 0000000..2b649ae
--- /dev/null
+++ b/springcloud/spring-cloud服务路由/zuul_svr/src/main/java/com/fxb/zuul_svr/filter/IdFilter.java
@@ -0,0 +1,66 @@
+package com.fxb.zuul_svr.filter;
+
+import com.netflix.zuul.ZuulFilter;
+import com.netflix.zuul.context.RequestContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
+
+import java.util.UUID;
+
+/**
+ * 类功能简述:
+ * 类功能详述:
+ *
+ * @author fanxb
+ * @date 2019/1/8 18:48
+ */
+@Component
+public class IdFilter extends ZuulFilter {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(IdFilter.class);
+
+ /**
+ * 返回过滤器类型 ;pre:前置过滤器。post:后置过滤器。routing:路由过滤器。error:错误过滤器
+ */
+ @Override
+ public String filterType() {
+ return "pre";
+ }
+
+ /**
+ * 过滤器执行顺序
+ */
+ @Override
+ public int filterOrder() {
+ return 1;
+ }
+
+ /**
+ * 是否启动此过滤器
+ */
+ @Override
+ public boolean shouldFilter() {
+ return true;
+ }
+
+ @Override
+ public Object run() {
+ RequestContext ctx = RequestContext.getCurrentContext();
+ String id = ctx.getRequest().getHeader("id");
+ //如果request找不到,再到zuul的方法中找id.request不允许直接修改response中的header,
+ // 所以为了让后续的过滤器能够获取到id才有下面的语法
+ if(id==null){
+ id = ctx.getZuulRequestHeaders().get("id");
+ }
+
+ if (id == null) {
+ id = UUID.randomUUID().toString();
+ LOGGER.info("{} 无id,生成id:{}",ctx.getRequest().getRequestURI(), id);
+ ctx.addZuulRequestHeader("id", id);
+ } else {
+ LOGGER.info("{}存在id:{}", ctx.getRequest().getRequestURI(), id);
+ }
+ return null;
+ }
+}
diff --git a/springcloud/spring-cloud服务路由/zuul_svr/src/main/java/com/fxb/zuul_svr/filter/ResponseFilter.java b/springcloud/spring-cloud服务路由/zuul_svr/src/main/java/com/fxb/zuul_svr/filter/ResponseFilter.java
new file mode 100644
index 0000000..61946e8
--- /dev/null
+++ b/springcloud/spring-cloud服务路由/zuul_svr/src/main/java/com/fxb/zuul_svr/filter/ResponseFilter.java
@@ -0,0 +1,64 @@
+package com.fxb.zuul_svr.filter;
+
+import com.netflix.zuul.ZuulFilter;
+import com.netflix.zuul.context.RequestContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+
+/**
+ * 类功能简述:
+ * 类功能详述:
+ *
+ * @author fanxb
+ * @date 2019/1/8 18:48
+ */
+@Component
+public class ResponseFilter extends ZuulFilter {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(ResponseFilter.class);
+
+ /**
+ * 返回过滤器类型 ;pre:前置过滤器。post:后置过滤器。routing:路由过滤器。error:错误过滤器
+ */
+ @Override
+ public String filterType() {
+ return "post";
+ }
+
+ /**
+ * 过滤器执行顺序
+ */
+ @Override
+ public int filterOrder() {
+ return 1;
+ }
+
+ /**
+ * 是否启动此过滤器
+ */
+ @Override
+ public boolean shouldFilter() {
+ return true;
+ }
+
+ @Override
+ public Object run(){
+ RequestContext ctx = RequestContext.getCurrentContext();
+ String id = ctx.getZuulRequestHeaders().get("id");
+ ctx.getResponse().addHeader("id", id);
+ try {
+ BufferedReader reader = new BufferedReader(new InputStreamReader(ctx.getResponseDataStream()));
+ String response = reader.readLine();
+ LOGGER.info("响应为:{}", response);
+ //写到输出流中,本来可以由zuul框架来操作,但是我们已经读取了输入流,zuul读不到数据了,所以要手动写响应到response
+ ctx.getResponse().setHeader("Content-Type","application/json;charset=utf-8");
+ ctx.getResponse().getWriter().write(response);
+ } catch (Exception e) {
+ }
+ return null;
+ }
+}
diff --git a/springcloud/spring-cloud服务路由/zuul_svr/src/main/java/com/fxb/zuul_svr/filter/RouteFilter.java b/springcloud/spring-cloud服务路由/zuul_svr/src/main/java/com/fxb/zuul_svr/filter/RouteFilter.java
new file mode 100644
index 0000000..2d8fea6
--- /dev/null
+++ b/springcloud/spring-cloud服务路由/zuul_svr/src/main/java/com/fxb/zuul_svr/filter/RouteFilter.java
@@ -0,0 +1,56 @@
+package com.fxb.zuul_svr.filter;
+
+import com.netflix.zuul.ZuulFilter;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
+
+/**
+ * 类功能简述:
+ * 类功能详述:
+ *
+ * @author fanxb
+ * @date 2019/1/8 18:48
+ */
+@Component
+public class RouteFilter extends ZuulFilter {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(RouteFilter.class);
+
+ /**
+ * 返回过滤器类型 ;pre:前置过滤器。post:后置过滤器。routing:路由过滤器。error:错误过滤器
+ */
+ @Override
+ public String filterType() {
+ return "routing";
+ }
+
+ /**
+ * 过滤器执行顺序
+ */
+ @Override
+ public int filterOrder() {
+ return 1;
+ }
+
+ /**
+ * 是否启动此过滤器
+ */
+ @Override
+ public boolean shouldFilter() {
+ return true;
+ }
+
+ @Override
+ public Object run(){
+ /**
+ * 下面只写出实现思路,真的完全实现下面的功能,代码量较大,可以参考spring 微服务实战中的实现点击跳转
+ *
+ * 1.获取当前路径
+ * 2.判断是否需要进行特殊路由
+ * 3.如需要进行特殊路由,在此发起http请求
+ * 3.将响应写到response返回给调用者
+ */
+ return null;
+ }
+}
diff --git a/springcloud/spring-cloud服务路由/zuul_svr/src/main/resources/application.yml b/springcloud/spring-cloud服务路由/zuul_svr/src/main/resources/application.yml
new file mode 100644
index 0000000..d0955f1
--- /dev/null
+++ b/springcloud/spring-cloud服务路由/zuul_svr/src/main/resources/application.yml
@@ -0,0 +1,38 @@
+spring:
+ application:
+ name: zuulservice
+#服务发现配置
+eureka:
+ instance:
+ prefer-ip-address: true
+ client:
+ register-with-eureka: true
+ fetch-registry: true
+ service-url:
+ defaultZone: http://localhost:8761/eureka/
+server:
+ port: 5555
+
+#zuul配置
+zuul:
+ routes:
+ #用于内部识别关键字
+ licensestatic:
+ path: /licensestatic/**
+ serviceId: licensestatic
+ organizationservice: /org/**
+ # 使用","分隔,“*”表示全部忽略
+ ignored-services: 'organizationservice'
+ prefix: /apis
+
+
+ribbon:
+ readTimeOut: 7000
+ eureka:
+ #禁用Eureka支持
+ enabled: false
+
+licensestatic:
+ ribbon:
+ #licensestatic服务将会路由到下列地址
+ listOfServers: http://localhost:10011,http://localhost:10012
diff --git a/springcloud/spring-cloud服务路由/zuul_svr/src/test/java/com/fxb/zuul_svr/ZuulSvrApplicationTests.java b/springcloud/spring-cloud服务路由/zuul_svr/src/test/java/com/fxb/zuul_svr/ZuulSvrApplicationTests.java
new file mode 100644
index 0000000..97920ac
--- /dev/null
+++ b/springcloud/spring-cloud服务路由/zuul_svr/src/test/java/com/fxb/zuul_svr/ZuulSvrApplicationTests.java
@@ -0,0 +1,17 @@
+package com.fxb.zuul_svr;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest
+public class ZuulSvrApplicationTests {
+
+ @Test
+ public void contextLoads() {
+ }
+
+}
+