From 72bee7412571e1bf89d5da18eed31a5382802440 Mon Sep 17 00:00:00 2001 From: TinyYu Date: Sat, 30 Jul 2022 23:49:25 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B4=9F=E8=BD=BD=E5=9D=87=E8=A1=A1=E5=92=8C?= =?UTF-8?q?=E7=86=94=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- note/springCloudNetflix-7-28.md | 75 ++++++++++++++++++ pom.xml | 1 + spring-cloud-order-server/pom.xml | 5 ++ .../cn/mobius/OrderServerApplication.java | 12 +++ .../java/cn/mobius/controller/OrderCtrl.java | 15 ++++ .../src/main/resources/application.yml | 13 ++- .../target/classes/application.yml | 13 ++- .../cn/mobius/OrderServerApplication.class | Bin 1121 -> 1375 bytes .../cn/mobius/controller/OrderCtrl.class | Bin 1516 -> 2174 bytes spring-cloud-pay-server/pom.xml | 38 +++++++++ .../java/cn/mobius/PayServerApplication.java | 15 ++++ .../cn/mobius/config/FeignConfiguration.java | 16 ++++ .../cn/mobius/controller/PayController.java | 21 +++++ .../fallback/UserFeignClientFactory.java | 21 +++++ .../fallback/UserFeignClientFallback.java | 24 ++++++ .../java/cn/mobius/fegin/UserFeignClient.java | 33 ++++++++ .../src/main/resources/application.yml | 34 ++++++++ .../target/classes/application.yml | 34 ++++++++ .../cn/mobius/PayServerApplication.class | Bin 0 -> 865 bytes .../cn/mobius/config/FeignConfiguration.class | Bin 0 -> 695 bytes .../cn/mobius/controller/PayController.class | Bin 0 -> 1021 bytes .../fallback/UserFeignClientFactory$1.class | Bin 0 -> 1452 bytes .../fallback/UserFeignClientFactory.class | Bin 0 -> 1055 bytes .../fallback/UserFeignClientFallback.class | Bin 0 -> 1330 bytes .../cn/mobius/fegin/UserFeignClient.class | Bin 0 -> 662 bytes 25 files changed, 368 insertions(+), 2 deletions(-) create mode 100644 note/springCloudNetflix-7-28.md create mode 100644 spring-cloud-pay-server/pom.xml create mode 100644 spring-cloud-pay-server/src/main/java/cn/mobius/PayServerApplication.java create mode 100644 spring-cloud-pay-server/src/main/java/cn/mobius/config/FeignConfiguration.java create mode 100644 spring-cloud-pay-server/src/main/java/cn/mobius/controller/PayController.java create mode 100644 spring-cloud-pay-server/src/main/java/cn/mobius/fallback/UserFeignClientFactory.java create mode 100644 spring-cloud-pay-server/src/main/java/cn/mobius/fallback/UserFeignClientFallback.java create mode 100644 spring-cloud-pay-server/src/main/java/cn/mobius/fegin/UserFeignClient.java create mode 100644 spring-cloud-pay-server/src/main/resources/application.yml create mode 100644 spring-cloud-pay-server/target/classes/application.yml create mode 100644 spring-cloud-pay-server/target/classes/cn/mobius/PayServerApplication.class create mode 100644 spring-cloud-pay-server/target/classes/cn/mobius/config/FeignConfiguration.class create mode 100644 spring-cloud-pay-server/target/classes/cn/mobius/controller/PayController.class create mode 100644 spring-cloud-pay-server/target/classes/cn/mobius/fallback/UserFeignClientFactory$1.class create mode 100644 spring-cloud-pay-server/target/classes/cn/mobius/fallback/UserFeignClientFactory.class create mode 100644 spring-cloud-pay-server/target/classes/cn/mobius/fallback/UserFeignClientFallback.class create mode 100644 spring-cloud-pay-server/target/classes/cn/mobius/fegin/UserFeignClient.class diff --git a/note/springCloudNetflix-7-28.md b/note/springCloudNetflix-7-28.md new file mode 100644 index 0000000..e802934 --- /dev/null +++ b/note/springCloudNetflix-7-28.md @@ -0,0 +1,75 @@ +[toc] + +# SpringCloudNetflix-day02 + +## 1.RestTemplate服务通信 + +- RestTemplate是spring基于restful封装的简单的Http客户端工具,可以通过它来实现服务之间的通信。RestTemplate本身不具备服务发现和负载均衡的功能 + +## 2.Ribbon客户端负载均衡 + +- Ribbon是Netflix发布的云中间层服务开源项目,主要提供负载均衡算法的功能。Ribbon客户端组件提供一系列完善的配置项。Ribbon可以按照负载均衡算法向多个服务发起调用 + +### 1.Ribbon工作机制 + +- Ribbon会根据指定的服务名,根据服务名在通信地址清单中找到对应服务的通信地址,然后Ribbon按照负载均衡算法选择某一个通信地址,通过RestTemplate发起http请求,实现服务的调用。 + +### 2.负载均衡算法 + +- RoundRobinRule(默认) + - 简单的轮询列表来选择服务器 +- AvailabilityFilteringRule + - 对以下两种服务器进行忽略 + 1. 默认情况下,如果服务器三次连接失败,这台服务器会设置为“短路”状态。可以通过配置loadbalancer.connectionFilureCountThreshold来指定连接失败多少次之后设置为短路状态 + 2. 并发数过高的服务器,并发连接数的上限,可有客户端的ActiveConnectionsLimit设置 +- WeightedResponseTimeRule + - 为每个服务器赋予一个权重值。服务器响应时间越长,这个服务器权重越小。这个规则随机选择服务器,权重值会影响服务器的选择 +- ZoneAvoidanceRule + - 以区域可用的服务器为基础进行服务器的选择,使用Zone对服务器进行分类,这个Zone可以理解为一个机房、一个机架等。 +- BestAvailableRule + - 忽略哪些短路服务器,并选择并发数较低的服务器 +- RandomRule + - 随机选择一个可用的服务器 +- Retry + - 重试机制选择逻辑 + +## 3.OpenFeign客户端负载均衡 + +- 基于Ribbon进行了封装。Feign是一个声明式的http客户端,使用feign可以实现声明式rest调用,它的目的就是让web service调用更加简单。Feign整合了Ribbon和springmvc注解,这让feign的客户端接口看起来像一个controller,feign提供了http请求的模板,通过编写简单的接口和插入注解,就可以定义好http请求的参数、格式、地址等信息。feign会安全代理http请求,可以像调用方法一样调用feign完成服务请求。同时feign整合了hystrix,可以很容易的实现服务熔断和降级 + +## 4.Hystrix熔断器 + +- Hystrix是处理依赖隔离的框架,将出现故障的服务通过熔断、降级等手段隔离服务,这样不会影响整个系统的主业务,同时也可以做服务的治理和监控 + +### 1.hystrix设计原则 + +1. 防止单个服务异常导致整个微服务故障 +2. 快速失败,如果服务出现故障,服务请求快速失败,线程不会等待 +3. 服务降级,请求故障可以返回设定好的兜底数据 +4. 熔断机制,防止故障的扩散,导致整个服务瘫痪 +5. 服务监控,提供了hystrix bashboard仪表盘,实时监控熔断器状态 + +### 2.hystrix的功能 + +#### 1.资源隔离 + +- 资源隔离包括线程池隔离和信号量隔离,作用是限制分布式服务的资源使用,某一个调用的服务出现问题不会影响其他服务调用。资源隔离就是限制请求的数量 + - 线程池隔离:使用一个线程池来存储当前请求,线程池对请求做处理,设置任务返回处理超时时间,堆积的请求先入线程池队列。这种方式要为每个依赖服务申请线程池,有一定的资源消耗,好处是可以应对突发流量(流量洪峰来临时,处理不完可以将数据存储到线程池队列里慢慢处理) + - 信号量隔离:使用一个原子计数器记录当前有多少个线程在运行,请求来先判断计数器的数值,若超过设置的最大线程个数则丢弃该类型的请求,若不超过则会执行请求并计数器+1,如果请求返回计数器-1.这种方式是严格的控制线程且立即返回模式,无法应对突发流量 + +#### 2.服务熔断 + +- 熔断机制是对服务链路的保护机制,如果链路上的某个服务不可访问,调用超时,发生异常等,服务会触发降级返回托底数据,然后熔断服务的调用(失败率达到某个阈值服务标记为短路状态),当检查到该节点能正常使用是服务会快速恢复 + +#### 3.降级机制 + +- 超时降级、资源不足时(线程或信号量)降级,降级后可以配合降级接口返回托底数据 + +#### 4.缓存 + +- 提供了请求缓存、请求合并实现,在高并发下,hystrix请求缓存可以方便地开启和使用请求缓存来优化系统,达到减轻高并发时请求线程的消耗、降低请求响应时间的效果 + +### 3.hystrix工作机制 + +- 正常情况下,熔断器处于关闭状态(closed),如果调用持续出错或者超时到达设定的阈值,电路被打开进入熔断状态(open),这是请求这个服务会触发快速失败(立马返回兜底数据,不让线程死等),后续一段时间内所有的调用都会被拒绝(Fail Fast),一段时间之后(withCircuitBreakerSleepWindowInMilliseconds=5s),保护器会尝试进入半熔断状态(half-open),允许少量请求进行尝试,如果调用依然失败,则回到熔断状态,如果调用成功,则回到电路闭合状态,取消熔断状态。 + diff --git a/pom.xml b/pom.xml index 2b32217..861af05 100644 --- a/pom.xml +++ b/pom.xml @@ -12,6 +12,7 @@ spring-cloud-user-server spring-cloud-order-server spring-cloud-common + spring-cloud-pay-server pom diff --git a/spring-cloud-order-server/pom.xml b/spring-cloud-order-server/pom.xml index 91e6e41..69b2caf 100644 --- a/spring-cloud-order-server/pom.xml +++ b/spring-cloud-order-server/pom.xml @@ -34,5 +34,10 @@ 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/spring-cloud-order-server/src/main/java/cn/mobius/OrderServerApplication.java b/spring-cloud-order-server/src/main/java/cn/mobius/OrderServerApplication.java index 48fffbf..bb4ff77 100644 --- a/spring-cloud-order-server/src/main/java/cn/mobius/OrderServerApplication.java +++ b/spring-cloud-order-server/src/main/java/cn/mobius/OrderServerApplication.java @@ -1,7 +1,9 @@ package cn.mobius; +import com.netflix.loadbalancer.RandomRule; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker; import org.springframework.cloud.client.loadbalancer.LoadBalanced; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; import org.springframework.context.annotation.Bean; @@ -9,6 +11,7 @@ import org.springframework.web.client.RestTemplate; @SpringBootApplication @EnableEurekaClient +@EnableCircuitBreaker // 开启hystrix public class OrderServerApplication { public static void main(String[] args) { SpringApplication.run(OrderServerApplication.class,args); @@ -19,4 +22,13 @@ public class OrderServerApplication { public RestTemplate getRestTemplate() { return new RestTemplate(); } + + /** + * 全局配置:指定ribbon负载均衡分配算法 + * 随机算法 + */ + @Bean + public RandomRule randomRule() { + return new RandomRule(); + } } diff --git a/spring-cloud-order-server/src/main/java/cn/mobius/controller/OrderCtrl.java b/spring-cloud-order-server/src/main/java/cn/mobius/controller/OrderCtrl.java index 48ff547..7701dc5 100644 --- a/spring-cloud-order-server/src/main/java/cn/mobius/controller/OrderCtrl.java +++ b/spring-cloud-order-server/src/main/java/cn/mobius/controller/OrderCtrl.java @@ -1,5 +1,6 @@ package cn.mobius.controller; +import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand; import domain.User; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; @@ -10,16 +11,30 @@ import org.springframework.web.client.RestTemplate; @RestController @RequestMapping("/order") +//@DefaultProperties(defaultFallback = "getByUserIdFallbackMethod") // 同一降级配置 public class OrderCtrl { @Autowired(required = false) private RestTemplate restTemplate; + @GetMapping("/getByUserId/{id}") + @HystrixCommand(fallbackMethod = "getByUserIdFallbackMethod") // 指定降级方法 public User getByUserId(@PathVariable Long id){ // 直接使用服务名请求 String url = "http://user-server/user/getByUserId/" + id; return restTemplate.getForObject(url, User.class); } + /** + * 降级方法 + * 1.返回值相同 + * 2.参数相同 + * 3.降级方法名相同 + * @param id + * @return + */ + public User getByUserIdFallbackMethod(@PathVariable("id") Long id) { + return User.builder().username("-1").info("获取用户信息失败!").age(-1).build(); + } } diff --git a/spring-cloud-order-server/src/main/resources/application.yml b/spring-cloud-order-server/src/main/resources/application.yml index bbf5601..3dbf27c 100644 --- a/spring-cloud-order-server/src/main/resources/application.yml +++ b/spring-cloud-order-server/src/main/resources/application.yml @@ -10,4 +10,15 @@ spring: application: name: order-server server: - port: 1030 \ No newline at end of file + port: 1030 + +# ribbon调优配置 +#ribbon: +# ReadTimeout: 3000 #读取超时时间 +# ConnectTimeout: 3000 #链接超时时间 +# MaxAutoRetries: 1 #重试机制:同一台实例最大重试次数 +# MaxAutoRetriesNextServer: 1 #重试负载均衡其他的实例最大重试次数 +# OkToRetryOnAllOperations: false #是否所有操作都重试,因为针对post请求如果没做幂等处理可能会造成数据多次添加/修改 +# eager-load: +# enabled: true #开启饥饿加载 +# clients: user-server #针对于哪些服务需要饥饿加载 \ No newline at end of file diff --git a/spring-cloud-order-server/target/classes/application.yml b/spring-cloud-order-server/target/classes/application.yml index bbf5601..3dbf27c 100644 --- a/spring-cloud-order-server/target/classes/application.yml +++ b/spring-cloud-order-server/target/classes/application.yml @@ -10,4 +10,15 @@ spring: application: name: order-server server: - port: 1030 \ No newline at end of file + port: 1030 + +# ribbon调优配置 +#ribbon: +# ReadTimeout: 3000 #读取超时时间 +# ConnectTimeout: 3000 #链接超时时间 +# MaxAutoRetries: 1 #重试机制:同一台实例最大重试次数 +# MaxAutoRetriesNextServer: 1 #重试负载均衡其他的实例最大重试次数 +# OkToRetryOnAllOperations: false #是否所有操作都重试,因为针对post请求如果没做幂等处理可能会造成数据多次添加/修改 +# eager-load: +# enabled: true #开启饥饿加载 +# clients: user-server #针对于哪些服务需要饥饿加载 \ No newline at end of file diff --git a/spring-cloud-order-server/target/classes/cn/mobius/OrderServerApplication.class b/spring-cloud-order-server/target/classes/cn/mobius/OrderServerApplication.class index d24316cf506886d181edbf203c579e0552690c43..c2b72c4c596c6993287c9e8ca318cf83cb62d763 100644 GIT binary patch delta 528 zcmah^Jx{_=6g{s%TWSTx55!Ld5vW6r8W%T>PEIVwI2EV~v6Q5N#Es3xvA@E>MB;$a z#2?_FF#Zwac{BkR7ZG^UxG5dkTrStT)pS+b<~kSN7^MzLNHyO`(={(w9UnX$(@ zi7e;%G0&F}EI|DN7NuV(;<^50c6O|jvS@aeeCfPI%#F0mSdm)hd&JQ$Z%{9X(4N@) deM|liKY6M2Q?Lpq3f3UUq!0ra#s*&=_yJH5Oc($F delta 286 zcmY*SxedZV5S;Vx!w^ z7y#%HnStFUn-c}mOwJG~2MviWhRuYQtn)- zRk7S#rB&{f(h8Id-TMW8fFKLLfwJ%LFk0#&-F>@H_c^!cW}{@YeD3S!r_TU-5tAUH zPei{25BhvK#raJh9rb=(T7Xi4@{_#ztj9JWxxFh2(?#Z~1ITBX1m5>k6uXYA?5GbHeNVb7W3VBA}+p!F`M1cnf$nJ5IWjF|G zl(!H#MC1ABCN!f64Y?j~f0l#!s|IR`x{fyxP9WR5jptDd4pUzx{1hJ{bQ{&ZjM8xR z)ljOP03EYnHjd&L#ho^~NF5+@fyXJJMG>*!%8pP6C(Q;{Ap7^`QR*+tqujHCiah*z z?0Zke!mG5p%BtO_z^<~uwz2{}oKoJRBtbR-1a!N@dR(o38gYWoy{_IWF8Cy-DIrlJ KM1SQe6#oQutJfs} delta 388 zcmXYsJ5mBc5Qe|mU0hifMO=J~Aov0m-}pcY49v{c#L(OWkeluuEK|yWDy{MWp1?zR z1F9(h*)^E{yL-O=r)O07&2_#xF^2x2V}Y<8~^|S diff --git a/spring-cloud-pay-server/pom.xml b/spring-cloud-pay-server/pom.xml new file mode 100644 index 0000000..eaf7d15 --- /dev/null +++ b/spring-cloud-pay-server/pom.xml @@ -0,0 +1,38 @@ + + + + springcloud-parent + cn.mobius + 1.0-SNAPSHOT + + 4.0.0 + + spring-cloud-pay-server + spring-cloud-pay-server + + + + + org.springframework.cloud + spring-cloud-starter-netflix-eureka-client + + + + org.springframework.cloud + spring-cloud-starter-openfeign + + + + org.springframework.boot + spring-boot-starter-web + + + + cn.mobius + spring-cloud-common + 1.0-SNAPSHOT + + + \ No newline at end of file diff --git a/spring-cloud-pay-server/src/main/java/cn/mobius/PayServerApplication.java b/spring-cloud-pay-server/src/main/java/cn/mobius/PayServerApplication.java new file mode 100644 index 0000000..8e640ad --- /dev/null +++ b/spring-cloud-pay-server/src/main/java/cn/mobius/PayServerApplication.java @@ -0,0 +1,15 @@ +package cn.mobius; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.netflix.eureka.EnableEurekaClient; +import org.springframework.cloud.openfeign.EnableFeignClients; + +@SpringBootApplication +@EnableEurekaClient +@EnableFeignClients // 开启feign +public class PayServerApplication { + public static void main(String[] args) { + SpringApplication.run(PayServerApplication.class,args); + } +} diff --git a/spring-cloud-pay-server/src/main/java/cn/mobius/config/FeignConfiguration.java b/spring-cloud-pay-server/src/main/java/cn/mobius/config/FeignConfiguration.java new file mode 100644 index 0000000..4c023b6 --- /dev/null +++ b/spring-cloud-pay-server/src/main/java/cn/mobius/config/FeignConfiguration.java @@ -0,0 +1,16 @@ +package cn.mobius.config; + +import feign.Logger; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * feign日志配置 + */ +@Configuration +public class FeignConfiguration { + @Bean + Logger.Level feignLoggerLevel() { + return Logger.Level.FULL; //打印Feign的所有日志 + } +} diff --git a/spring-cloud-pay-server/src/main/java/cn/mobius/controller/PayController.java b/spring-cloud-pay-server/src/main/java/cn/mobius/controller/PayController.java new file mode 100644 index 0000000..7ead6eb --- /dev/null +++ b/spring-cloud-pay-server/src/main/java/cn/mobius/controller/PayController.java @@ -0,0 +1,21 @@ +package cn.mobius.controller; + +import cn.mobius.fegin.UserFeignClient; +import domain.User; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/pay") +public class PayController { + + @Autowired + private UserFeignClient userFeignClient; + + @RequestMapping("/getUserById/{id}") + public User getUserById(@PathVariable Long id) { + return userFeignClient.getByUserId(id); + } +} diff --git a/spring-cloud-pay-server/src/main/java/cn/mobius/fallback/UserFeignClientFactory.java b/spring-cloud-pay-server/src/main/java/cn/mobius/fallback/UserFeignClientFactory.java new file mode 100644 index 0000000..c9bb4f8 --- /dev/null +++ b/spring-cloud-pay-server/src/main/java/cn/mobius/fallback/UserFeignClientFactory.java @@ -0,0 +1,21 @@ +package cn.mobius.fallback; + +import cn.mobius.fegin.UserFeignClient; +import domain.User; +import feign.hystrix.FallbackFactory; +import org.springframework.stereotype.Component; + +@Component +public class UserFeignClientFactory implements FallbackFactory { + @Override + public UserFeignClient create(Throwable throwable) { + return new UserFeignClient() { + @Override + public User getByUserId(Long id) { + // 日志 + throwable.printStackTrace(); + return User.builder().age(-1).username("-1").info("未找到用户信息!").build(); + } + }; + } +} diff --git a/spring-cloud-pay-server/src/main/java/cn/mobius/fallback/UserFeignClientFallback.java b/spring-cloud-pay-server/src/main/java/cn/mobius/fallback/UserFeignClientFallback.java new file mode 100644 index 0000000..447eab4 --- /dev/null +++ b/spring-cloud-pay-server/src/main/java/cn/mobius/fallback/UserFeignClientFallback.java @@ -0,0 +1,24 @@ +package cn.mobius.fallback; + +import cn.mobius.fegin.UserFeignClient; +import domain.User; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + + +/** + * 处理托底数据 + */ +@Component // 交给spring管理 +public class UserFeignClientFallback implements UserFeignClient { + + // 日志打印器 + private Logger logger = LoggerFactory.getLogger(UserFeignClientFallback.class); + + @Override + public User getByUserId(Long id) { + logger.info("用户服务不可用"); + return User.builder().age(-1).username("-1").info("未找到用户信息!").build(); + } +} diff --git a/spring-cloud-pay-server/src/main/java/cn/mobius/fegin/UserFeignClient.java b/spring-cloud-pay-server/src/main/java/cn/mobius/fegin/UserFeignClient.java new file mode 100644 index 0000000..f7a6ea3 --- /dev/null +++ b/spring-cloud-pay-server/src/main/java/cn/mobius/fegin/UserFeignClient.java @@ -0,0 +1,33 @@ +package cn.mobius.fegin; + +import cn.mobius.fallback.UserFeignClientFactory; +import cn.mobius.fallback.UserFeignClientFallback; +import domain.User; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.stereotype.Component; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; + +/** + * feign的客户端接口 + * 用来调取微服务 + */ +@Component +//@FeignClient(value = "user-server",fallback = UserFeignClientFallback.class) // 调取那个服务 +@FeignClient(value = "user-server",fallbackFactory = UserFeignClientFactory.class) +public interface UserFeignClient { + + /** + * 调取服务中的那个方法/业务 + * 1.请求相同 + * 2.请求路径相同 + * 3.请求参数相同 + * 4.返回类型相同 + * 5.服务名相同 + * @param id + * @return + */ + @GetMapping("/user/getByUserId/{id}") + User getByUserId(@PathVariable Long id); + +} diff --git a/spring-cloud-pay-server/src/main/resources/application.yml b/spring-cloud-pay-server/src/main/resources/application.yml new file mode 100644 index 0000000..21cc992 --- /dev/null +++ b/spring-cloud-pay-server/src/main/resources/application.yml @@ -0,0 +1,34 @@ +#注册到EurekaServer +eureka: + client: + serviceUrl: + defaultZone: http://localhost:1010/eureka/ + instance: + prefer-ip-address: true #使用ip地址进行注册 + instance-id: pay-server:1040 #实例ID +spring: + application: + name: pay-server +server: + port: 1040 + +# feign的日志 +logging: + level: + cn.mobius.fegin.UserFeignClient: debug + +# 开启hystrix支持 +feign: + hystrix: + enabled: true #开启熔断支持 + +# ribbon调优配置 +#ribbon: +# ReadTimeout: 3000 #读取超时时间 +# ConnectTimeout: 3000 #链接超时时间 +# MaxAutoRetries: 1 #重试机制:同一台实例最大重试次数 +# MaxAutoRetriesNextServer: 1 #重试负载均衡其他的实例最大重试次数 +# OkToRetryOnAllOperations: false #是否所有操作都重试,因为针对post请求如果没做幂等处理可能会造成数据多次添加/修改 +# eager-load: +# enabled: true #开启饥饿加载 +# clients: user-server #针对于哪些服务需要饥饿加载 \ No newline at end of file diff --git a/spring-cloud-pay-server/target/classes/application.yml b/spring-cloud-pay-server/target/classes/application.yml new file mode 100644 index 0000000..21cc992 --- /dev/null +++ b/spring-cloud-pay-server/target/classes/application.yml @@ -0,0 +1,34 @@ +#注册到EurekaServer +eureka: + client: + serviceUrl: + defaultZone: http://localhost:1010/eureka/ + instance: + prefer-ip-address: true #使用ip地址进行注册 + instance-id: pay-server:1040 #实例ID +spring: + application: + name: pay-server +server: + port: 1040 + +# feign的日志 +logging: + level: + cn.mobius.fegin.UserFeignClient: debug + +# 开启hystrix支持 +feign: + hystrix: + enabled: true #开启熔断支持 + +# ribbon调优配置 +#ribbon: +# ReadTimeout: 3000 #读取超时时间 +# ConnectTimeout: 3000 #链接超时时间 +# MaxAutoRetries: 1 #重试机制:同一台实例最大重试次数 +# MaxAutoRetriesNextServer: 1 #重试负载均衡其他的实例最大重试次数 +# OkToRetryOnAllOperations: false #是否所有操作都重试,因为针对post请求如果没做幂等处理可能会造成数据多次添加/修改 +# eager-load: +# enabled: true #开启饥饿加载 +# clients: user-server #针对于哪些服务需要饥饿加载 \ No newline at end of file diff --git a/spring-cloud-pay-server/target/classes/cn/mobius/PayServerApplication.class b/spring-cloud-pay-server/target/classes/cn/mobius/PayServerApplication.class new file mode 100644 index 0000000000000000000000000000000000000000..cc0465ed335551eba95c783528d669837d58404a GIT binary patch literal 865 zcmaJ!#Bk*6P-L}U|TmA9A9mOE7i!;>h{JU6i_3w|QLj-|bj_HaJW zR3e-*Iwag&D9x}v_#B;y3&As?Q$BW9=`^hR3Y!wrR!x{;^R0BJW_lv5$fc8(61!tl z+C&~JKif`S(`UX9#XgkUsa#G}p=j_!t&OXOB9Mc~*pwG@KgG;re=+u)$Hq7=N@o(I zXDThNUAwZl9_VKwRE#gU2;hP=Yk(;&)ZRDj4~y)BUWBsQ*Y){&!kHA zvh>*hFDi?$hc?z2cCY6>z@r`>W0x4bBK>`QCKJan{O|6IZC5s>$6-sly?C&4d814e zMObrR`}Ip1?c}B7qa~@Hjg=PU_Tdmu(V#c#zXq7!l4L*@C(TH=hu^`zRpAav9|msX z2Fczc0bQ~|o*r%yh%bIofdQRg(qK literal 0 HcmV?d00001 diff --git a/spring-cloud-pay-server/target/classes/cn/mobius/config/FeignConfiguration.class b/spring-cloud-pay-server/target/classes/cn/mobius/config/FeignConfiguration.class new file mode 100644 index 0000000000000000000000000000000000000000..cf39b6d0b9c79ed304928b8f5450ec0d11db7727 GIT binary patch literal 695 zcma)3O-~y!5PeQISqKYBX&M^nhbmeLkiZwzORK67DH4(e642b8#aWzgY~;S?d%wir(A)bfmGSok6qw`M;)wT5j zL(sD)ilHgAQTxSYsNAs}rj%I}HkRo?I_=|WGRRML#_&$WhEMEJ7a5PO8R>-gl}=2r zJQq&p+L{jxt&z_PnJeVxCBy0?BqD|UdpwmU;RnO9it`Y!Nc;Ob(4_ibgkWet zEK+orf;Xtr;QgwA1V^20ND(K`$k#S5z=X%2c5GJmu+Lh1O`jME6Uy!Dumw zr9F@;)ccW=+A&)5+M0KbuacOb$WUqiZW^+~XtkMWr@FGGV&zA2S8L;hQ%1*(o_ofI zJnmVg!xJmIvTy7M?n|M;C)&=~0T-hOd^d5XudEC}TYRCkaxWRpZEm#~<@Ze>QKF}` ze4TWCY2ON{F{*i{EuxmND$R$NdDl^p-Bk4LOXo$2^C+&p>^rg>zrGv@doAP5K zV|OHaJ(vZR!kLH?G}&S>GR_oC04!u@ z2B1Y+LWXHk4Fc)oS0KwFR<^%U?(q+r%h4C4IT}+eXA~>vuptE=&@x>G)it0C3<+f= kF5qef-}U#zV!A=AxG$yk-ON~TW#{b-S_9)9QL)@ma8to81!EFg*O(D;R&47P%NblkcXpMnv4p|Q zLSk|M@wkL$XGJeXMkEYmH8WAPa(cOxSZ0QiW7>mqDI zH+5%HLMr+namR9qElKdEtUQry&*~!S00$2W0U%!5jvHZ{X4>1JV%j)L1N?qFO+2%Rc|=upvx z2?cjmObUBX#eGaENU3;;X$5H&kMNkd3?)@$Fe9O-`uHFVhsFnV3r%bq@;bbwRr`QVFa;)P~(X*bh62hp$YW zO%gGE1Mb)bhpIjzS~nnZ@#^NXC84QSKlSNwz2mq*cTgMX1>|5*h!G%5%A|WrrhgZ@ z$@b7LMb<;MJwC7nDL%LbIlc|gmzrZQt<97MP;rXZo?37_PNR=b6jVzo;VkX_GD5Ej zi*O{I!})st=VS$9IQ|uK1>PMr$vbGSKneLO@P`5wv{ayOl8X$17pS=hp%Cc?X7~Uz oj4+kAhuK7erVtPMYvC7hiL4h9T*evNg(y`kS@BEIHT(enzfu=?>i_@% literal 0 HcmV?d00001 diff --git a/spring-cloud-pay-server/target/classes/cn/mobius/fallback/UserFeignClientFactory.class b/spring-cloud-pay-server/target/classes/cn/mobius/fallback/UserFeignClientFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..950603aa2e473463f14ebecac698a412b9f62e73 GIT binary patch literal 1055 zcma)*U279T6o%i)XS=R8t+rZg)oL&D0j`1b)%je%ZHwv%Mq%}kh`So5#+ z#)5)Bz#k=^Nw>I!YP+y=c9wUZbKWyEzkYxJ3E(AmJ(TdEjBO7&JoHe+qcR?su~Wtq z2LH8E!n9+aBqCub?MWqViy>dF^%x3meIyuGLaD^t>9{XUm-l1(vli-z$31SOo2Neu zb|i_>2qP7Ybze@CV8G+J&!dyzVPaf+!FFtH9Y2@co1_n z47wwuPaV2h%hJS9sznqrmhFX{Vf|7HL*?Sp0yV?dkG9>x(j)VWSGVq zGz%y)ipBaF*jM_jd=}sac>?s Sao?dR+ZM$odYyHLr{@nG9|+3; literal 0 HcmV?d00001 diff --git a/spring-cloud-pay-server/target/classes/cn/mobius/fallback/UserFeignClientFallback.class b/spring-cloud-pay-server/target/classes/cn/mobius/fallback/UserFeignClientFallback.class new file mode 100644 index 0000000000000000000000000000000000000000..6a79a100f29144a993d407f66371ca391da80d95 GIT binary patch literal 1330 zcma)6O>+}R5Pc)dUU{{_Ag~RA@J%8M?B&A*5*Y{<2t-6k@!<=nl{8w$tY%%S6_k&; z5vnLIIdb8a$^}vd#&95aeg_u+g5r%Vmlsz-<*+-`J>9RnU-!(rk8j=rn8sBbBRF8; zpp8TLei$kIkU>6+2^4G`#t|Enn6lyGXa>j3dOU*@W}P;_lNNroa7th(2z_5h0=a4! z`EEOCPS3m5p03E#8KqTxR$w4MF(;5Ng$*e%QdL_1)@jvbbknN^)X=%^1#@1cjNDhI z<2$M?aHLw-ZY!**PTOsIK~VGRcimfU8I`5-btzC%$K}4BA+x@WXBW+Rr6I5Uh6RSVijuQ6jrHPh?Mr52L65+-F4dxBExubLAs@|wGe97 zRdlcw+vxHCDX?(b!B6cV66M(pYES;R~|fHg?j(r)9xS7_8I>x4t_2RC}Mjhi>>IBiNd zLo$#=xDgxDi)I+Ji8&CkY8@3c%phk?V`tYSr=qotdVwWdw=@6Q{2WZ!GKnqgJXCZn zd-uY+=LH>ktw|#Dm5Ich^)2W&p2#GL$ZO;I9JQ%r1#50!%Olfa37Uf?Fq!mSt3G)J zk^z~^V2=mh(a#GlVjo|K5s+wpDKlGqMN-^zKKUP|G}DuTO@&twgBK|QC{s4cJ zI4M3>@Ze!KJG&?-6J z31XcIsknz6GideEjdXk^jL6WTu?%J;F*mOZ`JIpN5vG8Sop3^sT{-n=v@f0FStgRS45-!uI(Kl-=% zm2jhhFjCO`WM9A0g^92yQ<|aex8FmVsIyd}atHpH80`KjZs}Z5yGf4xOlP@PL?FS# zKfzI|iGV>Aq!Ly@MTh#q<(a@tH7>;;kHnGR)P`Pa{BR3({D zFsXG)U`#$kEg>o1pZG7sdyHI_0VPa#27t{mn1wm23Uw6*Ra$CP%LJLHTDSvdp$-lI d-SZadWd@d}&*dq!O?{L47Oe{wR$w)PwGZg9#;E`R literal 0 HcmV?d00001 -- Gitee