springcloud
2019-10-24 10:14:44 27 举报
AI智能生成
springcloud
作者其他创作
大纲/内容
eureka
是什么
架构图
基本原理
1、服务启动后向Eureka注册,Eureka Server会将注册信息向其他Eureka Server进行同步,当服务消费者要调用服务提供者,则向服务注册中心获取服务提供者地址,然后会将服务提供者地址缓存在本地,下次再调用时,则直接从本地缓存中取,完成一次调用
2、当服务注册中心Eureka Server检测到服务提供者因为宕机、网络原因不可用时,则在服务注册中心将服务置为DOWN状态,并把当前服务提供者状态向订阅者发布,订阅过的服务消费者更新本地缓存。
3、服务提供者在启动后,周期性(默认30秒)向Eureka Server发送心跳,以证明当前服务是可用状态。Eureka Server在一定的时间(默认90秒)未收到客户端的心跳,则认为服务宕机,注销该实例。
两个组件
Eureka Server(注册中心)
Eureka Client(服务提供者和消费者)
Eureka Server(注册中心)
是什么
服务注册中心搭建
引入pom
添加配置
编写启动类
Eureka集群配置
再新建两个EurekaServer项目,实现3个EurekaServer集群
修改配置
服务提供者修改配置
Eureka与Zookeeper的区别
Zookeeper保证cp
Eureka保证ap
Eureka Client(服务提供者)
是什么
将服务注册进Eureka
引入pom
添加配置
编写启动类
actuator与注册微服务信息完善
引入pom
父工程pom文件修改,增加build信息
添加配置
自我保护机制
是什么
自我保护模式被激活的条件是:在 1 分钟后,Renews (last min) < Renews threshold
Renews threshold:Eureka Server 期望每分钟收到客户端实例续约的总数。
Renews (last min): Eureka Server 最后 1 分钟收到客户端实例续约的总数。
计算方法
eureka-server不自注册
Renews threshold = 2 × (n+1) × 0.85
Renews (last min) = 2 × n
eureka-server自注册
Renews threshold = 2 × n × 0.85
Renews (last min) = 2 × n
Hystrix
微服务容错
概念
微服务容错三板斧
超时机制
舱壁模式
断路器
断路器状态转换示意图
介绍
功能
服务降级
服务熔断
服务限流
Hystrix主要通过以下几点实现延迟和容错
包裹请求
跳闸机制
资源隔离
监控
回退机制
自我修复
Ribbon实现(熔断机制的注解:@HystrixCommand)
引入pom
添加配置
在主启动类上添加@EnableCircuitBreaker
controller类添加@HystrixCommand注解,并且实现fallback方法
feignClient实现
feignClient模块添加配置开启hystrix
common模块ProducerService接口添加FallBackFactory接口
实现FallBackFactory接口
zuul
是什么
什么是API网关
什么是zuul
Zuul底层利用各种filter实现如下功能
1、认证和安全 识别每个需要认证的资源,拒绝不符合要求的请求。
2、性能监测 在服务边界追踪并统计数据,提供精确的生产视图。
3、动态路由 根据需要将请求动态路由到后端集群。
4、压力测试 逐渐增加对集群的流量以了解其性能。
5、负载卸载 预先为每种类型的请求分配容量,当请求超过容量时自动丢弃。
6、静态资源处理 直接在边界返回某些响应。
架构图
搭建zuul工程
引入pom
添加配置
主启动类添加@EnableZuulProxy注解
测试路由
启动三个Eureka集群
启动8001端口微服务
启动zuul微服务
不启动路由访问:http://localhost:8001/get/aa
启动路由访问:http://myzuul.com:9527/producer-server/get/aa
路由访问映射规则
代理名称:添加配置
配置前访问地址:http://myzuul.com:9527/producer-server/get/aa
配置后访问地址:http://myzuul.com:9527/mydept/get/aa
原真实服务名忽略:修改配置
修改前:http://myzuul.com:9527/producer-server/get/aa 地址可访问
修改后:http://myzuul.com:9527/producer-server/get/aa 地址不可访问
设置统一公共前缀:修改配置
修改前:http://myzuul.com:9527/mydept/get/aa 可访问
修改后:http://myzuul.com:9527/springcloud/mydept/get/aa 可访问
zuul高级
过滤器详情
zuul高可用
ribbon
是什么
一句话:基于Netflix ribbon实现的一套 客户端、负载均衡的工具
架构图
简介
客户端搭建(基于RestTemplate和Ribbon)
引入pom
添加配置
编写启动类
编写configBean
编写controller
Ribbon负载均衡
新建8002、8003服务提供者
复制8001的配置和类
yml配置中的实例名称application name不能改
yml配置中的实例名称application name不能改
Ribbon其实就是一个软辅在均衡的客户端组件,他和其他所有需要请求的客户端结合使用,和Eureka结合只是其中的一个实例。默认采用轮询算法。
Ribbon核心组件IRule
IRule:根据特定算法中从服务列表中选取一个要访问的服务
负载均衡算法分类
com.netflix.loadbalancer.RoundRobinRule:轮询:默认
com.netflix.loadbalancer.RandomRule:随机
com.netflix.loadbalancer.AvailabilityFilteringRule:会先过滤掉由于多次访问故障而处于断路器跳闸状态的服务、还有并发的连接数量超过阈值的服务,然后对剩余的服务列表按照轮询策略进行访问
com.netflix.loadbalancer.WeightedResponseTimeRule:根据平均响应时间计算所有服务的权重,响应时间越快的服务权重越大,选中的概率越高。刚启动时如果统计信息不足,则上有RoundRobinRule策略,等统计信息足够,会切换到WeightedResponseTimeRule
com.netflix.loadbalancer.RetryRule:先按RoundRobinRule轮询算法获取服务,如果失败则在指定时间内进行重试
com.netflix.loadbalancer.BestAvailableRule:会先过滤掉由于多次访问故障而处于断路器跳闸状态的服务,然后选择一个并发量最小的服务
com.netflix.loadbalancer.ZoneAvoidanceRule:默认规则,复合判断Server所在区域的性能和Server的可用性选择服务
配置负载均衡算法:在ConfigBean中显示声明算法,增加bean
Ribbon自定义负载均衡算法
添加自定义算法类:MyRule
主启动类上添加注解@RibbonClient
配置注意细节
feign
是什么
简介
作用
基于feign客户端搭建
进入pom
添加配置
主启动类
编写controller类
公共模块实现ProducerService接口
进入pom
新建ProducerService接口类
选择使用负载均衡算法
feign默认使用轮训的负载均衡算法
修改feign客户端添加配置
feign设计原理及源码分析
feign与ribbon
HystrixDashboard
是什么
概念
作用
项目整合HystrixDashboard
单独创建一个新的Hystrix Dashboard工程
进入pom
启动类添加@EnableHystrixDashboard注解开启断路器,开启HystrixDashboard
添加配置
访问页面:localhost:7001/hystrix
改造要监控的服务(consumer工程)
进入pom
服务消费者工程的启动类上添加@EnableCircuitBreaker注解,表示开启断路器功能
访问 /hystrix.stream 接口:localhost:80/hystrix.stream
Hystrix Dashboard图形展示
上面的是一段json文件,单纯的查看json数据,我们很难分析出结果,所以,我们要在Hystrix仪表盘中来查看这一段json,在hystrix仪表盘中输入监控地址
参数详解
结果图
一个实心圆和一条曲线
实心圆:
实心圆通过颜色表示健康状态,健康度从绿色、黄色、橙色、红色递减。
实心圆大小,表示流量。
实心圆通过颜色表示健康状态,健康度从绿色、黄色、橙色、红色递减。
实心圆大小,表示流量。
曲线:记录2分钟内流量的相对变化,表现出流量的升降趋势。
turbine集群监控
SpringCloud Config
是什么
简介
架构图
有什么用
集中管理配置
不同环境,不同配置
运行期间可动态调整
配置修改后可自动更新
Spring colud Config分为服务端和客户端两部分
服务端
客户端
config server搭建
进入pom
子主题
子主题
子主题
config clien搭建
0 条评论
下一页