第5阶段的复习

目录

目录

springcloud的优点?

springcloud与Doubbo的区别?

 eurka的配置

RIBBON

Hystrix 断路器

 hystrix dashboard 断路器仪表盘

actuator是什么?

hystrix + turbine 集群聚合监控?

 hystrix 熔断

 feign 声明式客户端接口

@EnableDiscoveryClient

feign 启用 hystrix

  zuul API网关

配置zuul

 zuul + hystrix 降级

 zuul 请求过滤



springcloud的优点?

  1. springcloud是一系列框架的集合,它利用了Springboot开发简便性简化分布式基础设置的开发,
  2. 如服务发现注册,配置中心,消息总线,负载均衡,断路器,数据监控都可用springboot做到一键启动和配置,
  3. 把各家成熟的服务框架组合起来,通过springboot封装屏蔽掉复杂的配置和实现原理,简单易懂,已部署和好维护的分布式系统开发包
  4. 标准化的、一站式的技术方案

springcloud与Doubbo的区别?

  1. 初始定位不同: SpringCloud定位为微服务架构下的一站式解决方案;Dubbo 是 SOA 时代的产物,它的关注点主要在于服务的调用和治理
  2. 生态环境不同: SpringCloud依托于Spring平台,具备更加完善的生态体系;而Dubbo一开始只是做RPC远程调用,生态相对匮乏,现在逐渐丰富起来。
  3. 调用方式: SpringCloud是采用Http协议做远程调用,接口一般是Rest风格,比较灵活;Dubbo是采用Dubbo协议,接口一般是Java的Service接口,格式固定。但调用时采用Netty的NIO方式,性能较好。
  4. 组件差异比较多,例如SpringCloud注册中心一般用Eureka,而Dubbo用的是Zookeeper
  5. SpringCloud生态丰富,功能完善,更像是品牌机,Dubbo则相对灵活,可定制性强,更像是组装机。
  6. SpringCloud:Spring公司开源的微服务框架,SpirngCloud 定位为微服务架构下的一站式解决方案。
  7. Dubbo:阿里巴巴开源的RPC框架,Dubbo 是 SOA 时代的产物,它的关注点主要在于服务的调用,流量分发、流量监控和熔断

 eurka的配置

eureka:
  server:
    enable-self-preservation: false

eureka的自我保护:15分钟心跳失败超过85%,Eureka Server保护信息,发出警告,进入保护模式,不删不销毁微服务
  instance:
    hostname: eureka1

集群通过  hostname来区分
  client:
    register-with-eureka: false

不向自身注册
    fetch-registry: false

不从自身拉取注册信息

  lease-renewal-interval-in-seconds

心跳间隔时间30s

    lease-expiration-duration-in-seconds

最后一次心跳,认为微服务不可用 ,默认90

   defaultZone,

默认位置,eureka服务器的部署位置

registry-fetch-interval-seconds

拉去注册表间隔30s

eureka 都要配置那些东西? 

  1. 自我保护机制,15min85% 就开启保护机制,不删不改
  2. 集群区分是否从自身注册和拉去
  3. 不可用的微服务,90s
  4. 心跳每次30s,拉去消息也是30s
  5. 部署位置

 @EnableEurekaServer---启动类,启动eurka客户端

@EnableDiscoveryClient--让注册中心发现配置,可以扫描到改服务

@LoadBalanced ---负载均衡 注解,对RestTemplate实例进行封装,创建动态代理对象,加入aop负载均衡代码,把请求分发到集群中服务器中

RIBBON

RestTemplate 是用来调用其他微服务的工具类,封装了远程调用代码,提供了一组用于远程调用的模板方法

 

 ConnectionTimeout

建立连接等待超时时间
ReadTimeout

等待接受响应的超时时间
OkToRetryOnAllOperations=true

默认只对GET请求重试, 当设置为true时, 对POST等所有类型请求都重试
MaxAutoRetriesNextServer
更换服务器的次数
MaxAutoRetries
单台服务器重试次数

 通过SimpleClientHttpRequestFactory()设置超时,不开始就不会有重试。

Hystrix 断路器

 @EnableCircuitBreaker     启用 hystrix 断路器

  • 降级,超时、出错、不可到达时,对服务降级,返回错误信息或者是缓存数据

  • 熔断,当服务压力过大,错误比例过多时,熔断所有请求,所有请求直接降级

@SpringCloudApplication可以代替@EnableCircuitBreaker 和@EnableDiscoveryClient @SpringBootApplication

@HystrixCommand(fallbackMethod = "getItemsFB") 指定降级方法的方法名

服务请求出错,降级后要返回的方法(降级方法的参数和返回值,需要和原始方法一致,方法名任意)

hystrix 超时设置: 等待超时,执行降级,超时时间小于ribbon

                                                                   配置监控工具

 hystrix dashboard 断路器仪表盘

 对hystrix 对请求的降级和熔断进行监控

actuator是什么?

Actuator

 dashboard

 配置仪表表盘

 @EnableHystrixDashboard 启动仪表盘,进行监控

hystrix + turbine 集群聚合监控?

优点:hystrix dashboard 一次只能监控一个服务实例,使用 turbine 可以汇集监控信息,将聚合后的信息提供给 hystrix dashboard 来集中展示和监控

turbine:

app-config: order-service

cluster-name-expression: new String("default")

@EnableTurbine 开启trubine集群

 hystrix 熔断

  1. 10S内产生超过20次请求,
  2. 请求错误大于阙值,打开断路器,50%
  3. 5s后,处于半开状态,发请求,失败,保持打开,成功,关闭

 feign 声明式客户端接口

  • 用 feign 代替 hystrix+ribbon
  • 如果 score 参数名与变量名不同,需要添加参数名设置:@RequestParam(“score”)

@EnableDiscoveryClient

feign 启用 hystrix

  • feign.hystrix.enabled=true

  zuul API网关

  1. zuul API 网关,为微服务应用提供统一的对外访问接口。
  2. zuul 还提供过滤器,对所有微服务提供统一的请求校验。

配置zuul

zuul: routes:  路由配置可以省略,缺的用服务id作为访问路径,用**简写

item-service: /item-service/**

user-service: /user-service/**

order-service: /order-service/**

 @EnableZuulProxy   启动zuul网关                                                                                                                                                                                                                           

 zuul + hystrix 降级

  • getRoute() 方法中指定应用此降级类的服务id,星号或null值可以通配所有服务

实现FallbackProvider,ClientHttpResponse中封装降级响应 

 zuul 请求过滤

定义过滤器,继承ZuulFilter,重写里头的方法,都过滤直接返回true

问题:eureka客户端向eureka注册时, 会自动选择网卡, 并可能注册主机名而不是ip地址.?

1.选择正确的网卡

bootstrap.yml

spring:
  cloud:
    inetutils:
      ignored-interfaces: # 忽略的网卡
        - VM.* #.是任意字符  
      preferred-networks: # 要是用的网卡的网段
        - 192\.168\.0\..+

2.注册ip地址,而不是主机名

问题:注册时,有可能自动选择主机名进行注册,而不使用ip地址. 主机名在局域网内有可能不会被正确的解析,最好使用ip地址进行注册,而不注册主机名

DNS--把主机名解析成ip地址

在应用配置application.yml中配置:

eureka:
  instance:
    prefer-ip-address: true # 使用ip进行注册
    instance-id: ${spring.cloud.client.ip-address}:${spring.application.name}:${server.port} # 界面列表中显示的格式也显示ip

config 配置中心

yml配置文件保存到git服务器,从服务器获取配置文件

spring:
  cloud:
    config:#设置禁止配置中心的配置将客户端配置覆盖掉
      override-none: true

配置刷新

spring cloud 允许运行时动态刷新配置,可以重新从配置中心获取新的配置信息

  • yml 配置文件中暴露 refresh 端点

  • 只允许对添加了 @RefreshScope 或 @ConfigurationProperties 注解的 Bean 刷新配置,可以将更新的配置数据注入到 Bean 中

sleuth 链路跟踪

 可以跟踪调用链路,分析链路中每个节点的执行情况

[服务id,请求id,span id,是否发送到zipkin]

  • 请求id:请求到达第一个微服务时生成一个请求id,该id在调用链路中会一直向后面的微服务传递
  • span id:链路中每一步微服务调用,都生成一个新的id

sleuth + zipkin 链路分析

zipkin 可以收集链路跟踪数据,提供可视化的链路分析,10%可以被发送到zipkin

spring:
  sleuth:
    sampler:
      probability: 0.1

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值