更多服务
关于Spring Cloud
日期:2022-03-30 浏览

  上海美团司机收入情况 小编:艳芬 797阅读 2020.11.30 上海美团司机月收入:
¥13.4K / 月平均工资,数据统计来自近一年 1275 份样本,截至 2020-11-27。
上海美团司机工资待遇水平范围:
薪酬区间: 2K以下-30K ,最多人拿:10K-15K 。
工资标准范围 占比率
2K以下 4.4%
2K-3K 1.1%
3K-4.5K 0.3%
8K-10K 12.5%
10K-15K 54.4%
15K-20K 20.5%
20K-30K 6.5%
说明:上海美团司机平均工资 ¥13.4K,其中拿 10K-15K 工资的占比最多,达 54.4%,数据统计依赖于各平台发布的公开薪酬,仅供参考。

  Spring Cloud

  Spring Cloud 是什么

  集成了多个框架工具,来解决微服务终于到的各种问题:

   远程调用(RPC)

   负载均衡

   重试(容错)

   降级

   熔断

   监控

   配置中心

   Spring Cloud 是一个框架集,微服务全家桶

   Spring Cloud 不是什么

   不是一个独立框架

  Spring Cloud 和 Dubbo 区别

   Dubbo 只解决远程调用,不能解决其他问题 如果遇到其他问题,需要自己研发,或自己集成其他工具。

   Spring Cloud 是微服务全家桶,结合Spring Boot来实现“开箱即用”

   eureka

   Spring Cloud 支持多款注册中心工具:eureka,zookeeper,consul.......

   eureka运行机制:

   注册 应用启动时,会连接注册中心进行注册。 如果无法连接注册中心,它会一次一次的反复进行注册,直到成功为止。

   拉取 每个服务都会从注册中心拉取注册表,每30秒会重新拉取一次注册表进行更新。

   心跳 客户端会每30秒向 eureka 注册中心发送一次心跳数据,eureka 连续3次收不到心跳,认为服务已经死掉,会从注册表删除服务。

   自我保护模式 是一种特殊情况 由于网络不稳定,造成 85%以上的服务器出现心跳异常,这时会进入自我保护模式,在保护模式下,所有服务都不删除,直到网络恢复,会自动退出自我保护模式。

   eureka 和 zookeeper 区别

   eureka

   强调 AP - 可用性、分区容错性

   集群 - 对等结构

   zookeeper

   强调 CP - 一致性、分区容错性

   集群 - 主从结构

   RestTemplate

   Spring Cloud 使用的一个远程调用工具

   (服务之间相互调用)

   RestTemplate 是Springboot提供的一个远程调用工具

   getForObject(url, 转换类型, 提交的参数)

   postForObject(url, 协议体数据, 转换类型)

   Ribbon

   Ribbon 的作用,解决的问题:

   负载均衡(微服务系统必须功能) 访问压力可以分散到多态服务器

   重试(不是必须功能) 当第一次请求失败或等待超时,可以自动发起重试请求

   Ribbon 负载均衡

   ribbon依赖(在 eureka client 中已经包含)

   添加 @LoadBalanced注解,用Ribbon封装 RestTemplate 对象,对 RestTemplate功能进行增强

   Ribbon 重试

   容错

   当调用后台服务失败,可以自动重试,如果重试成功,可以向客户端正常返回结果。

   添加Ribbon重试:

   添加 pring-retry 依赖

   设置重试参数:

   MaxAutoRetries - 单台服务器的重试次数

   MaxAutoRetriesNextServer - 更换服务器的次数

   OkToRetryOnAllOperations - 是否对所有类型请求都重试,默认只对 get 重试,如果要对所有请求重试设置成 true

   下面两个超时设置不能在 yml 中配置,需要在 java 代码中设置

   connectTimeout - 建立连接超时时间

   readTimeout - 已建立连接并发送了请求,等待响应的超时时间

   Hyxtrix

   容错工具

   Hystrix提供的容错功能:

   降级

   熔断

   降级

   当调用后台服务失败,或超时,可以向客户端返回降级结果 。

   快速失败:

   客户端不必长时间阻塞等待后台服务结果,超时后可以快速获得反馈。

   防止雪崩、防止错误传播

   熔断

   熔断就像家里的电箱,有一个总闸,如果访问量过大(过热),触发熔断,家里的电路会被断开。

   当系统访问量过大,出现大量的失败情况时,会触发熔断,断路器打开后,所有的请求直接执行降级代码返回降级结果。

   触发熔断的条件:

   10秒内20次请求(必须首先满足)

   50%失败,执行了降级代码

   添加 Hystrix 降级

   hystrix 依赖

   添加主程序注解@EnalbleCircuitBreaker,启用 hystrix 断路器,触发断路器自动配置

   添加降级代码 复制代码1234@HystrixCommnad(fallbackMethod=降级方法)public?void?a()?{????restTemplate.getForObject(

   hystrix 的超时

   默认超时时长是1秒

   hystrix dashboard

   hystrix仪表盘,对hystrix出现错误的情况进行监控

   actuator

   Springboot 提供的一个项目监控工具,可以监控项目的各种运行数据,hystrx利用actuator,可以添加hystrix的监控数据。

   添加 actuator:

   actuator依赖

   暴露监控数据:

   在.yml配置文件中输入即可知晓

   复制代码1234567m.e.w.e.i=*??#?暴露所有的监控数据?m.e.w.e.i=health??#?暴露健康状态数据?m.e.w.e.i=health,beans,env,hystrix.stream?#?暴露多种监控数据?m.e.w.e.i=hystrix.stream

   搭建仪表盘项目

   hystrix仪表盘是一个完全独立的项目,启动后,需要在它的界面上指定监控数据的路径。

   新建 hystrix-dashboard 项目

   添加 hystrix dashboard 依赖

   yml 配置选择端口 4001

   主程序添加注解,启用 hystrix dashboard:@EnableHystrixDashboard

   Feign

   声明式客户端

   只需要定义一个抽象的接口,就可以通过接口调用远程服务,不需要写具体调用代码。

   例如调用后台商品服务,接口可以这样定义:

   复制代码12345@FeignClient(name=item-service)public?interface?ItemFeignClient?{????@GetMapping(/{orderId})????JsonResult?getItems(@PathVarible?String?orderId);}

   通过注解,配置以下三点:

   服务id - 确定调用哪个远程服务

   路径 - 调用一个服务的哪个路径

   参数 - 向这个路径提交什么参数数据

   集成 Ribbon

   Feign集成了Ribbon,提供了Ribbon的默认配置。

   默认已经启用了负载均衡和重试,0配置就可以使用Ribbon。

   重试的默认配置:

   MaxAutoRetries: 0

   MaxAutoRetriesNextServer: 1

   ReadTimeout: 1000

   集成 Hystrix

   Feign可以集成Hystrix,默认不启用Hystrix,Feign不推荐启用Hystrix(后面再进行分析)。

   启用Hystrix,添加基础配置:

   添加 Hystrix 完整依赖

   yml 配置在Feign中启用hystrix:feign.hystrix.enabled=true

   主程序添加 @EntalbeCircuitBreaker

   添加降级代码

   添加一个单独的降级类,需要实现声明式客户端接口

   复制代码123@Component public?class?ItemFeignClientFB?implements?ItemFeignClient?{????实现降级方法,返回降级响应}

   在接口上,还需要指定降级类:

   复制代码1234@FeignClient(name=item-service,fallback=降级类)interface?ItemFeignClient?{?????}

   添加Hystrix监控

   actuator依赖

   配置暴露 hystrix.stream 监控端点

   复制代码1m.e.w.e.i=hystrix.stream

   访问

   访问仪表盘,访问上面的监控数据