SpringBoot项目中Ribbon&OpenFeign&Hystrix&Zuul的基础实现(主要是依赖和配置文件等)

一、父项目中的基础依赖

<!--1.管理 SpringBoot的jar包-->
<parent>
  <groupId> org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>2.2.5.RELEASE</version>
</parent>

<!--2.管理 SpringCloud的jar包-->
<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-dependencies</artifactId>
      <version>Hoxton.SR3</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

二、子项目中的基础依赖

<!--spring-cloud-starter-netflix-eureka-server -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

三、启动类通配注解:

1)子项目(Eureka)启动类上所需的注解:

@SpringBootApplication  和  @EnableEurekaService

2)其他子类子项目启动类上所需的注解:

@SpringBootApplication  和  @EnableEurekaClient

四、子项目中 application.yml通用配置 - 按需修改 name、port和instance-id等

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:10010/eureka/
  instance:
    prefer-ip-address: true
    instance-id: order-server:10020
spring:
  application:
    name: order-server
server:
  port: 10020

五、Ribbon

1)功能:主要功能是提供客户端的软件负载均衡算法和服务调用。

2)负载均衡算法主要分类:随机、轮询、权重。默认为轮询。

3)相关依赖:

<!--集成Ribbon-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>

4)启动类上添加注解:见三。

四、OpenFeign

1)功能:主要功能是提供客户端的软件负载均衡算法和服务调用,和Ribbon差不多,封装了Ribbon。

2)负载均衡算法主要分类:随机、轮询、权重。默认为轮询。

3)相关依赖:

<!--导入Feign的包-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

4)启动类上添加注解:比三多一个 @EnableFeignClients(value="?") // ?对应该子项目中interface接口所在的包 - 开启Feign支持。

五、Hystrix

1)功能:主要功能包括熔断、降级、限流,以防止服务器雪崩。

2)名词解释:

①雪崩:一个服务故障产生的连锁反应,导致这个微服务崩溃。

②熔断:服务多次访问失败,就会被标记为‘熔断状态’,如果某个请求去访问一个熔断状态的服务,会快速失败,触发服务降级:目的-防止请求阻塞。

③降级:当一个业务(请求)失败/超时,就会走预先设置好的第二种方案(也就是降级逻辑)。

④限流:

a. hystix提供了一个线程池,让请求在新的线程中去执行(异步),限流上限就是线程池中的线程数量+队列长度,如果超出该限制-拒接请求,触发降级。 -- 异步 -- 存在线程切换的消耗 -- 带缓存队列,能应对突然流量。

b. 设置一个信号量(数字) ,请求来了会给一个计数器+1,请求走了会-1,某一个时刻,计数器达到信号量上限-拒接请求,触发降级。 -- 同步 -- 没有缓冲队列。

3)相关依赖:

<!--Hystirx依赖-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>

或者在application.yml中配置 - 二选一

feign:
  hystrix:
    enabled: true

六、Zuul

1)功能:微服务访问入口,可以做请求路由,监控,安全检查等 - 网关。

2)相关依赖:

<!--zuul依赖-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>

3)application.yml中配置  - 案例 - 按需修改

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:10010/eureka/
  instance:
    prefer-ip-address: true
    instance-id: zuul-server:10050
spring:
  application:
    name: zuul-server
server:
  port: 10050
zuul:
  prefix: "/s"  #统一访问前缀
  ignoredServices: "*"  #禁用掉使用浏览器通过服务名的方式访问服务
  routes:
    pay-server: "/pay/**"   #指定pay-server这个服务使用 /pay路径来访问  - 别名
    order-server: "/order/**"   #指定order-server这个服务使用 /order路径来访问
    user-server: "/user/**"   #指定order-server这个服务使用 /order路径来访问

4)启动类上添加注解:比三多一个 @EnbaleZuulProxy //开启网关

注意:Eureka 和 Zuul 需要单独新建子项目,Ribbon、OpenFeign和Hystrix都是整合在别的子项目中。

帮甚幸!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值