springcloud
2019-10-24 10:14:44 27 举报
AI智能生成
springcloud
作者其他创作
大纲/内容
springcloud
eureka
是什么
架构图
基本原理
1、服务启动后向Eureka注册,Eureka Server会将注册信息向其他Eureka Server进行同步,当服务消费者要调用服务提供者,则向服务注册中心获取服务提供者地址,然后会将服务提供者地址缓存在本地,下次再调用时,则直接从本地缓存中取,完成一次调用
2、当服务注册中心Eureka Server检测到服务提供者因为宕机、网络原因不可用时,则在服务注册中心将服务置为DOWN状态,并把当前服务提供者状态向订阅者发布,订阅过的服务消费者更新本地缓存。
3、服务提供者在启动后,周期性(默认30秒)向Eureka Server发送心跳,以证明当前服务是可用状态。Eureka Server在一定的时间(默认90秒)未收到客户端的心跳,则认为服务宕机,注销该实例。
两个组件
Eureka Server(注册中心)
Eureka Client(服务提供者和消费者)
服务注册中心搭建
引入pom
添加配置
编写启动类
Eureka集群配置
再新建两个EurekaServer项目,实现3个EurekaServer集群
修改配置
服务提供者修改配置
Eureka与Zookeeper的区别
Zookeeper保证cp
Eureka保证ap
Eureka Client(服务提供者)
将服务注册进Eureka
actuator与注册微服务信息完善
父工程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
Hystrix
微服务容错
概念
微服务容错三板斧
超时机制
舱壁模式
断路器
断路器状态转换示意图
介绍
功能
服务降级
服务熔断
服务限流
Hystrix主要通过以下几点实现延迟和容错
包裹请求
跳闸机制
资源隔离
监控
回退机制
自我修复
Ribbon实现(熔断机制的注解:@HystrixCommand)
在主启动类上添加@EnableCircuitBreaker
controller类添加@HystrixCommand注解,并且实现fallback方法
feignClient实现
feignClient模块添加配置开启hystrix
common模块ProducerService接口添加FallBackFactory接口
实现FallBackFactory接口
zuul
什么是API网关
什么是zuul
Zuul底层利用各种filter实现如下功能
1、认证和安全 识别每个需要认证的资源,拒绝不符合要求的请求。
2、性能监测 在服务边界追踪并统计数据,提供精确的生产视图。
3、动态路由 根据需要将请求动态路由到后端集群。
4、压力测试 逐渐增加对集群的流量以了解其性能。
5、负载卸载 预先为每种类型的请求分配容量,当请求超过容量时自动丢弃。
6、静态资源处理 直接在边界返回某些响应。
搭建zuul工程
主启动类添加@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)
编写configBean
编写controller
Ribbon负载均衡
复杂均衡策略及原理
新建8002、8003服务提供者
复制8001的配置和类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的可用性选择服务
Ribbon自定义负载均衡算法
添加自定义算法类:MyRule
主启动类上添加注解@RibbonClient
配置注意细节
feign
作用
基于feign客户端搭建
进入pom
主启动类
编写controller类
公共模块实现ProducerService接口
新建ProducerService接口类
选择使用负载均衡算法
feign默认使用轮训的负载均衡算法
修改feign客户端添加配置
feign设计原理及源码分析
feign与ribbon
HystrixDashboard
项目整合HystrixDashboard
单独创建一个新的Hystrix Dashboard工程
启动类添加@EnableHystrixDashboard注解开启断路器,开启HystrixDashboard
访问页面:localhost:7001/hystrix
改造要监控的服务(consumer工程)
服务消费者工程的启动类上添加@EnableCircuitBreaker注解,表示开启断路器功能
访问 /hystrix.stream 接口:localhost:80/hystrix.stream
Hystrix Dashboard图形展示
上面的是一段json文件,单纯的查看json数据,我们很难分析出结果,所以,我们要在Hystrix仪表盘中来查看这一段json,在hystrix仪表盘中输入监控地址
参数详解
结果图
一个实心圆和一条曲线
实心圆:实心圆通过颜色表示健康状态,健康度从绿色、黄色、橙色、红色递减。实心圆大小,表示流量。
曲线:记录2分钟内流量的相对变化,表现出流量的升降趋势。
turbine集群监控
SpringCloud Config
有什么用
集中管理配置
不同环境,不同配置
运行期间可动态调整
配置修改后可自动更新
Spring colud Config分为服务端和客户端两部分
服务端
客户端
config server搭建
子主题
config clien搭建
0 条评论
回复 删除
下一页