diff --git a/eureka-feign/.gitignore b/eureka-feign/.gitignore
new file mode 100644
index 0000000..338ed4c
--- /dev/null
+++ b/eureka-feign/.gitignore
@@ -0,0 +1,8 @@
+/.classpath
+/.project
+/.settings
+/bin/
+/logs
+/target
+*.log
+/src/main/resources/static
\ No newline at end of file
diff --git a/eureka-feign/pom.xml b/eureka-feign/pom.xml
new file mode 100644
index 0000000..588e25d
--- /dev/null
+++ b/eureka-feign/pom.xml
@@ -0,0 +1,33 @@
+
+ 4.0.0
+
+ vip.xumy.learn
+ spring-cloud-demo
+ 1.0.0.RELEASE
+
+ eureka-client-feign
+ 1.0.0
+ eureka-client-feign
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-netflix-eureka-client
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-openfeign
+
+
+
+
+
\ No newline at end of file
diff --git a/eureka-feign/src/main/java/vip/xumy/learn/eureka/client/HelloControler.java b/eureka-feign/src/main/java/vip/xumy/learn/eureka/client/HelloControler.java
new file mode 100644
index 0000000..85eb05a
--- /dev/null
+++ b/eureka-feign/src/main/java/vip/xumy/learn/eureka/client/HelloControler.java
@@ -0,0 +1,20 @@
+package vip.xumy.learn.eureka.client;
+
+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;
+
+@RestController
+public class HelloControler {
+
+ @Autowired
+ SchedualServiceHi helloService;
+
+ @GetMapping(value = "/hi/{name}")
+ public String hi(@PathVariable("name") String name) {
+ return helloService.sayHiFromClientOne( name );
+ }
+}
+
+
diff --git a/eureka-feign/src/main/java/vip/xumy/learn/eureka/client/SchedualServiceHi.java b/eureka-feign/src/main/java/vip/xumy/learn/eureka/client/SchedualServiceHi.java
new file mode 100644
index 0000000..39b9d0a
--- /dev/null
+++ b/eureka-feign/src/main/java/vip/xumy/learn/eureka/client/SchedualServiceHi.java
@@ -0,0 +1,16 @@
+package vip.xumy.learn.eureka.client;
+
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+
+@FeignClient(value = "service-hi", fallback = SchedualServiceHiHystric.class)
+public interface SchedualServiceHi {
+ @RequestMapping(value = "/hi",method = RequestMethod.GET)
+ String sayHiFromClientOne(@RequestParam(value = "name") String name);
+}
+
+
+
+
diff --git a/eureka-feign/src/main/java/vip/xumy/learn/eureka/client/SchedualServiceHiHystric.java b/eureka-feign/src/main/java/vip/xumy/learn/eureka/client/SchedualServiceHiHystric.java
new file mode 100644
index 0000000..c2e43a5
--- /dev/null
+++ b/eureka-feign/src/main/java/vip/xumy/learn/eureka/client/SchedualServiceHiHystric.java
@@ -0,0 +1,12 @@
+package vip.xumy.learn.eureka.client;
+
+import org.springframework.stereotype.Component;
+
+@Component
+public class SchedualServiceHiHystric implements SchedualServiceHi {
+ @Override
+ public String sayHiFromClientOne(String name) {
+ return "sorry "+name;
+ }
+}
+
diff --git a/eureka-feign/src/main/java/vip/xumy/learn/eureka/client/ServiceFeignApplication.java b/eureka-feign/src/main/java/vip/xumy/learn/eureka/client/ServiceFeignApplication.java
new file mode 100644
index 0000000..a378d52
--- /dev/null
+++ b/eureka-feign/src/main/java/vip/xumy/learn/eureka/client/ServiceFeignApplication.java
@@ -0,0 +1,25 @@
+package vip.xumy.learn.eureka.client;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
+import org.springframework.cloud.openfeign.EnableFeignClients;
+
+@SpringBootApplication
+@EnableEurekaClient
+@EnableDiscoveryClient
+@EnableFeignClients
+public class ServiceFeignApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run( ServiceFeignApplication.class, args );
+ }
+
+}
+
+
+
+
+
+
diff --git a/eureka-feign/src/main/resources/application.properties b/eureka-feign/src/main/resources/application.properties
new file mode 100644
index 0000000..12a63f6
--- /dev/null
+++ b/eureka-feign/src/main/resources/application.properties
@@ -0,0 +1,8 @@
+server.port=8765
+
+eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/
+
+spring.application.name=eureka-feign
+
+feign.hystrix.enabled=true
+
diff --git a/eureka-hi/.gitignore b/eureka-hi/.gitignore
new file mode 100644
index 0000000..338ed4c
--- /dev/null
+++ b/eureka-hi/.gitignore
@@ -0,0 +1,8 @@
+/.classpath
+/.project
+/.settings
+/bin/
+/logs
+/target
+*.log
+/src/main/resources/static
\ No newline at end of file
diff --git a/eureka-hi/pom.xml b/eureka-hi/pom.xml
new file mode 100644
index 0000000..d94cb3a
--- /dev/null
+++ b/eureka-hi/pom.xml
@@ -0,0 +1,37 @@
+
+ 4.0.0
+
+ vip.xumy.learn
+ spring-cloud-demo
+ 1.0.0.RELEASE
+
+ eureka-client-hi
+ 1.0.0
+ eureka-client-hi
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-netflix-eureka-client
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
+
\ No newline at end of file
diff --git a/eureka-hi/src/main/java/vip/xumy/learn/eureka/client/ServiceHiApplication.java b/eureka-hi/src/main/java/vip/xumy/learn/eureka/client/ServiceHiApplication.java
new file mode 100644
index 0000000..ad2fcaa
--- /dev/null
+++ b/eureka-hi/src/main/java/vip/xumy/learn/eureka/client/ServiceHiApplication.java
@@ -0,0 +1,31 @@
+package vip.xumy.learn.eureka.client;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+@SpringBootApplication
+@EnableEurekaClient
+@RestController
+public class ServiceHiApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run( ServiceHiApplication.class, args );
+ }
+
+ @Value("${server.port}")
+ String port;
+
+ @RequestMapping("/hi")
+ public String home(@RequestParam(value = "name", defaultValue = "forezp") String name) {
+ return "hi " + name + " ,i am from port:" + port;
+ }
+
+}
+
+
+
diff --git a/eureka-hi/src/main/resources/application.properties b/eureka-hi/src/main/resources/application.properties
new file mode 100644
index 0000000..e9d302d
--- /dev/null
+++ b/eureka-hi/src/main/resources/application.properties
@@ -0,0 +1,6 @@
+server.port=8762
+
+eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/
+
+spring.application.name=eureka-hi
+
diff --git a/eureka-ribbon/.gitignore b/eureka-ribbon/.gitignore
new file mode 100644
index 0000000..338ed4c
--- /dev/null
+++ b/eureka-ribbon/.gitignore
@@ -0,0 +1,8 @@
+/.classpath
+/.project
+/.settings
+/bin/
+/logs
+/target
+*.log
+/src/main/resources/static
\ No newline at end of file
diff --git a/eureka-ribbon/pom.xml b/eureka-ribbon/pom.xml
new file mode 100644
index 0000000..49f546c
--- /dev/null
+++ b/eureka-ribbon/pom.xml
@@ -0,0 +1,39 @@
+
+ 4.0.0
+
+ vip.xumy.learn
+ spring-cloud-demo
+ 1.0.0.RELEASE
+
+ eureka-client-ribbon
+ 1.0.0
+ eureka-client-ribbon
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-netflix-eureka-client
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-netflix-ribbon
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-netflix-hystrix
+
+
+
+
+
+
\ No newline at end of file
diff --git a/eureka-ribbon/src/main/java/vip/xumy/learn/eureka/client/HelloControler.java b/eureka-ribbon/src/main/java/vip/xumy/learn/eureka/client/HelloControler.java
new file mode 100644
index 0000000..d9e30ad
--- /dev/null
+++ b/eureka-ribbon/src/main/java/vip/xumy/learn/eureka/client/HelloControler.java
@@ -0,0 +1,20 @@
+package vip.xumy.learn.eureka.client;
+
+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;
+
+@RestController
+public class HelloControler {
+
+ @Autowired
+ HelloService helloService;
+
+ @GetMapping(value = "/hi/{name}")
+ public String hi(@PathVariable("name") String name) {
+ return helloService.hiService( name );
+ }
+}
+
+
diff --git a/eureka-ribbon/src/main/java/vip/xumy/learn/eureka/client/HelloService.java b/eureka-ribbon/src/main/java/vip/xumy/learn/eureka/client/HelloService.java
new file mode 100644
index 0000000..5f2d4df
--- /dev/null
+++ b/eureka-ribbon/src/main/java/vip/xumy/learn/eureka/client/HelloService.java
@@ -0,0 +1,26 @@
+package vip.xumy.learn.eureka.client;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.web.client.RestTemplate;
+
+import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
+
+@Service
+public class HelloService {
+
+ @Autowired
+ RestTemplate restTemplate;
+
+ @HystrixCommand(fallbackMethod = "hiError")
+ public String hiService(String name) {
+ return restTemplate.getForObject("http://SERVICE-HI/hi?name="+name,String.class);
+ }
+
+ public String hiError(String name) {
+ return "hi,"+name+",sorry,error!";
+ }
+
+
+}
+
diff --git a/eureka-ribbon/src/main/java/vip/xumy/learn/eureka/client/ServiceRibbonApplication.java b/eureka-ribbon/src/main/java/vip/xumy/learn/eureka/client/ServiceRibbonApplication.java
new file mode 100644
index 0000000..529321e
--- /dev/null
+++ b/eureka-ribbon/src/main/java/vip/xumy/learn/eureka/client/ServiceRibbonApplication.java
@@ -0,0 +1,34 @@
+package vip.xumy.learn.eureka.client;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+import org.springframework.cloud.client.loadbalancer.LoadBalanced;
+import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
+import org.springframework.cloud.netflix.hystrix.EnableHystrix;
+import org.springframework.context.annotation.Bean;
+import org.springframework.web.client.RestTemplate;
+
+@SpringBootApplication
+@EnableEurekaClient
+@EnableDiscoveryClient
+@EnableHystrix
+public class ServiceRibbonApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run( ServiceRibbonApplication.class, args );
+ }
+
+ @Bean
+ @LoadBalanced
+ RestTemplate restTemplate() {
+ return new RestTemplate();
+ }
+
+}
+
+
+
+
+
+
diff --git a/eureka-ribbon/src/main/resources/application.properties b/eureka-ribbon/src/main/resources/application.properties
new file mode 100644
index 0000000..6e69b92
--- /dev/null
+++ b/eureka-ribbon/src/main/resources/application.properties
@@ -0,0 +1,6 @@
+server.port=8764
+
+eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/
+
+spring.application.name=eureka-ribbon
+
diff --git a/eureka-server/.gitignore b/eureka-server/.gitignore
new file mode 100644
index 0000000..338ed4c
--- /dev/null
+++ b/eureka-server/.gitignore
@@ -0,0 +1,8 @@
+/.classpath
+/.project
+/.settings
+/bin/
+/logs
+/target
+*.log
+/src/main/resources/static
\ No newline at end of file
diff --git a/eureka-server/pom.xml b/eureka-server/pom.xml
new file mode 100644
index 0000000..bfeb0ee
--- /dev/null
+++ b/eureka-server/pom.xml
@@ -0,0 +1,24 @@
+
+ 4.0.0
+
+ vip.xumy.learn
+ spring-cloud-demo
+ 1.0.0.RELEASE
+
+ eureka-server-demo
+ 1.0.0
+ eureka-server-demo
+ jar
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-netflix-eureka-server
+
+
+
+
+
\ No newline at end of file
diff --git a/eureka-server/src/main/java/vip/xumy/learn/eureka/server/EurekaServerApplication.java b/eureka-server/src/main/java/vip/xumy/learn/eureka/server/EurekaServerApplication.java
new file mode 100644
index 0000000..d324f79
--- /dev/null
+++ b/eureka-server/src/main/java/vip/xumy/learn/eureka/server/EurekaServerApplication.java
@@ -0,0 +1,20 @@
+package vip.xumy.learn.eureka.server;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
+
+/** Do not use for any commercial purposes without permission
+ * @author: mengyxu
+ * @date: 2022年2月24日
+ */
+
+@SpringBootApplication
+@EnableEurekaServer
+public class EurekaServerApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(EurekaServerApplication.class, args);
+ }
+
+}
diff --git a/eureka-server/src/main/resources/application.properties b/eureka-server/src/main/resources/application.properties
new file mode 100644
index 0000000..c8bc83c
--- /dev/null
+++ b/eureka-server/src/main/resources/application.properties
@@ -0,0 +1,9 @@
+server.port=8761
+
+eureka.instance.hostname=localhost
+eureka.client.registerWithEureka=false
+eureka.client.fetchRegistry=false
+eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/
+
+spring.application.name=eureka-server
+
diff --git a/parent/.gitignore b/parent/.gitignore
new file mode 100644
index 0000000..338ed4c
--- /dev/null
+++ b/parent/.gitignore
@@ -0,0 +1,8 @@
+/.classpath
+/.project
+/.settings
+/bin/
+/logs
+/target
+*.log
+/src/main/resources/static
\ No newline at end of file
diff --git a/parent/pom.xml b/parent/pom.xml
new file mode 100644
index 0000000..5b91992
--- /dev/null
+++ b/parent/pom.xml
@@ -0,0 +1,60 @@
+
+ 4.0.0
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 2.0.3.RELEASE
+
+ vip.xumy.learn
+ spring-cloud-demo
+ 1.0.0.RELEASE
+ spring-cloud-demo
+ pom
+
+
+ UTF-8
+ UTF-8
+ 1.8
+ Finchley.RELEASE
+
+
+
+ ../eureka-server
+ ../service-hi
+ ../service-ribbon
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-dependencies
+ ${spring-cloud.version}
+ pom
+ import
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
+
\ No newline at end of file