eureka

注册中心,服务的注册与发现

服务端

  • 1.引入服务端启动器:eureka-server

  • 2.添加了配置

    • spring.applicaiton.name

      • 服务名
    • eureka.client.service-url.defaultZone

      • http://localhost:10086/eureka
    • eureka.server.eviction-interval-timer-in-ms

      • 剔除无效连接的间隔时间
    • eureka.server.enable-self-preservation

      • 关闭自我保护
  • 3.@EnableEurekaServer

    • 开启eureka服务端功能

客户端

  • 1.引入启动器:eureka-client

  • 2.添加配置

    • spring.application.name

    • eureka.client.service-url.defaultZone

    • eureka.instance.lease-renewal-interval-in-seconds

      • 心跳时间
    • eureka.instance.lease-expiration-duration-in-seconds

      • 过期时间
    • eureka.client.register-with-eureka

      • 是否注册给eureka容器
      • 默认true
    • eureka.client.fetch-registry

      • 是否拉取服务列表
      • 默认true
    • eureka.client.registry-fetch-interval-seconds

      • 拉取服务的间隔时间
  • 3.@EnableDiscoveryClient

    • 启用eureka客户端

ribbon

负载均衡组件

eureka、feign以及zuul已集成

配置负载均衡策略

  • <服务名>.ribbon.NFLoadBalancerRuleClassName

    • 负载均衡策略的全路径

@LoadBalanced

  • 在RestTemplate的@Bean方法上

hystrix

容错组件

降级

  • 1.引入hystrix的启动器

  • 2.添加配置,超时时间的配置

  • 3.@EnableCircuitBreaker

    • 启用熔断组件

    • @SpringCloudApplication

      • @SpringBootApplication
      • @EnableDiscveryClient
  • 代码

    • 局部

      • 返回值和参数列表和被熔断的方法一致
      • 在被熔断的方法上@HystrixCommand(fallbackMethod=“熔断方法名”)
    • 全局

      • 返回值和被熔断的方法返回值一致,不能有参数列表
      • 在类上@DefaultProperties(defaultFallbck=“全局熔断方法名”)
      • 在具体的被熔断方法上@HystrixCommand

熔断

  • close

    • 关闭状态
    • 所有请求都正常访问
  • open

    • 打开状态
    • 所有请求都无法访问
    • 触发:连续失败的比例大于50%或者失败次数不少于20
    • 维持5s的休眠时间
  • half open

    • 半开状态

    • 释放部分请求通过

      • 正常

        • close
      • 不正常

        • open
    • 触发:休眠时间之后

feign

远程调用组件

  • 集成ribbon和hystrix
  • 使代码更加优雅

1.引入feign的启动器

2.feign.hystrix.enable=true

  • 开启熔断

3.@EnableFeignClients

  • 开启feign的功能

代码

  • 定义一个接口

    • @FeignClient(value=“服务名”, fallback=实现类.class)
    • 方法上的注解使用的都是springMVC的注解

zuul

网关组件

  • 路由
  • 过滤器

1.引入启动器

2.添加配置

  • 路由的配置

  • zuul.prefix

    • 路由前缀
  • 四种路由配置方式

    • zuul.routes.<路由名>.path=/service-provider/**
      zuul.routes.<路由名>.url=http://localhost:8081

    • zuul.routes.<路由名>.path=/service-provider/**
      zuul.routes.<路由名>.serviceId=service-provider

    • zuul.routes.<路由名:服务名>=/service-provider/**

    • 不配置

      • 默认服务的入口就是以服务名为前缀

3.@EnableZuulProxy

  • 开启zuul网关组件

自定义过滤器

  • IZuulFilter

    • 默认的抽象实现类:ZuulFilter
  • filterType

    • pre
    • post
    • route
    • error
  • filterOrder

    • 执行顺序,返回值越小优先级越高
  • shouldFilter

    • 是否执行run方法

    • true

      • 执行
  • run

    • 过滤器的具体逻辑
  • 四种执行顺序

    • pre–>route–>post

    • 异常

      • pre或者route出现异常

        • 直接执行error–>post
      • post出现异常

        • error–>响应
      • error出现异常

        • error–>post

Spring Cloud总结相关推荐

  1. Spring cloud 微服务docker容器化最佳实践

    Spring cloud 是当下最炙手可热的微服务套件,我们将介绍如何整合Docker容器达到高效快捷的构建发布 采用了dockerfile-maven-plugin插件发布镜像到远程docker主机 ...

  2. Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现

    自Spring Cloud Alibaba发布第一个Release以来,就备受国内开发者的高度关注.虽然Spring Cloud Alibaba还没能纳入Spring Cloud的主版本管理中,但是凭 ...

  3. Spring Cloud下微服务权限方案

    背景 从传统的单体应用转型Spring Cloud的朋友都在问我,Spring Cloud下的微服务权限怎么管?怎么设计比较合理?从大层面讲叫服务权限,往小处拆分,分别为三块:用户认证.用户权限.服务 ...

  4. 玩转Spring Cloud之配置中心(config server config client)

    玩转Spring Cloud之配置中心(config server &config client)  本文内容导航: 一.搭建配置服务中心(config server) 1.1.git方式 1 ...

  5. spring cloud微服务治理eureka、hystrix、zuul代码例子

    spring cloud微服务中台服务代码例子,包括eureka.hystrix.zuul https://github.com/birdstudiocn/spring-cloud-sample/tr ...

  6. 原 史上最简单的SpringCloud教程 | 第八篇: 消息总线(Spring Cloud Bus)(Finchley版本)

    转载请标明出处: 原文首发于:https://www.fangzhipeng.com/springcloud/2018/08/30/sc-f8-bus/ 本文出自方志朋的博客 转载请标明出处: Spr ...

  7. 快速构建Spring Cloud工程

    spring cloud简介 spring cloud为开发人员提供了快速构建分布式系统的一些工具,包括配置管理.服务发现.断路器.路由.微代理.事件总线.全局锁.决策竞选.分布式会话等等.它运行环境 ...

  8. spring cloud微服务分布式云架构--hystrix的使用

    hystrix主要作用在服务消费者,进行应用的保护,当请求的服务请求超时时,做出相应的处理,避免客户端一直进行请求等待,避免在高并发的情况出现服务器死机(请求过多,内存不足) 接下来的通过一个案例对h ...

  9. Spring Cloud构建分布式电子商务平台:服务消费(基础)

    使用LoadBalancerClient 在Spring Cloud Commons中提供了大量的与服务治理相关的抽象接口,包括DiscoveryClient.这里我们即将介绍的LoadBalance ...

  10. (二)spring cloud微服务分布式云架构 - 整合企业架构的技术点

    spring cloud本身提供的组件就很多,但我们需要按照企业的业务模式来定制企业所需要的通用架构,那我们现在需要考虑使用哪些技术呢? 下面我针对于spring cloud微服务分布式云架构做了以下 ...

最新文章

  1. oracle, group by, having, where
  2. 电视机检测大巴徘徊在英格兰的大街上
  3. 异常导致循环退出_Java异常有哪些?异常怎么处理?
  4. Ethernet/IP 学习笔记三
  5. 浅读《视觉SLAM十四讲:从理论到实践》--操作1--初识SLAM
  6. 为什么async/await方法不能有lock或Monitor
  7. java并发初探ConcurrentSkipListMap
  8. 网管必学之交换机VLAN的配置
  9. 2017哈尔滨ACM CCPC-final 总结
  10. 阅读《黑客与画家》有感——Hackers and Painters
  11. ROS下面调用自定义的头文件和.cpp/.so文件(亲测有效)
  12. pc端微信二维码支付流程及问题排查
  13. linux服务器端口的状态,Linux查看端口状态及关闭端口方法
  14. 什么是模型管理和模型运维?
  15. 2019 春季算法工程师实习生招聘历程
  16. NCRE公共基础知识(一) 计算机系统
  17. 提升HTML5的性能体验系列之一 避免切页白屏
  18. Vitamio的踩坑+填坑
  19. html科学计算器,vue.js实现的经典计算器/科学计算器功能示例
  20. 排列组合思维导图_思维导图:进阶高效能人士的思维工具

热门文章

  1. python人脸识别库教程_OpenCV-最优秀的Python人脸识别库安装及入门教程
  2. graphviz 画决策树_决策树算法-实战篇
  3. 1.12_count_sort_计数排序
  4. 学好JAVA保终身_JAVA IO 学习
  5. ML - 常用数学符号
  6. 商品翻牌效果(纯css)
  7. Shell脚本学习-数组
  8. Expm 1_2 实现快速排序的算法,并尝试采用不同的方法实现线性的划分过程.
  9. 用JS获取地址栏参数的方法(超级简单)
  10. C#实现对文件目录的实时监控