网站统计查询,wordpress 福利,桂林相亲网,天元建设集团有限公司是国企吗文章目录 参考资料一. 微服务概述1. CAP理论2. BASE理论3. SpringBoot 与 SpringCloud对比 二. 服务注册#xff1a;Zookeeper,Eureka,Nacos,Consul1. Nacos两种健康检查方式#xff1f;2. nacos中负责负载均衡底层是如何实现的3. Nacos原理4. 临时实例和持久化(非临时)实例 … 文章目录 参考资料一. 微服务概述1. CAP理论2. BASE理论3. SpringBoot 与 SpringCloud对比 二. 服务注册Zookeeper,Eureka,Nacos,Consul1. Nacos两种健康检查方式2. nacos中负责负载均衡底层是如何实现的3. Nacos原理4. 临时实例和持久化(非临时)实例 三. 服务调用Feign1. Feign的底层原理2. Feign与OpenFeign的区别 四. 负载均衡:Ribbon1. Ribbon支持哪几种负载均衡策略 五. 网关:Gateway,Zuul1. Gateway工作流程2. Spring Cloud Gateway 的路由和断言是什么关系3. Spring Cloud Gateway 如何实现动态路由4. Spring Cloud Gateway 支持限流吗 六. 限流/熔断/服务降级:Hystrix,Sentinel1. 什么是熔断和降级2. 限流2.1 常见算法2.2 单机限流2.3 分布式限流 3. Hystrix和Sentinel简单介绍 参考资料
概述,总结的很好
一. 微服务概述
添加链接描述
1. CAP理论
一致性(Consistency) 所有节点访问同一份最新的数据副本可用性(Availability) 非故障的节点在合理的时间内返回合理的响应不是错误或者超时的响应。分区容错性(Partition Tolerance) 分布式系统出现网络分区的时候仍然能够对外提供服务。网络分区 分布式系统中多个节点之间的网络本来是连通的但是因为某些故障比如部分节点网络出了问题某些节点之间不连通了整个网络就分成了几块区域这就叫 网络分区。 3选2 分布式系统理论上不可能选择 CA 架构只能选择 CP 或者 AP 架构。 比如 ZooKeeper、HBase 就是 CP 架构Cassandra、Eureka 就是 AP 架构Nacos 不仅支持 CP 架构也支持 AP 架构。为什么不支持CA 若系统出现“分区”系统中的某个节点在进行写操作。为了保证 C 必须要禁止其他节点的读写操作这就和 A 发生冲突了。如果为了保证 A其他节点的读写操作正常的话那就和 C 发生冲突了。 选择 CP 还是 AP 的关键在于当前的业务场景没有定论比如对于需要确保强一致性的场景如银行一般会选择保证 CP 。 另外需要补充说明的一点是如果网络分区正常的话系统在绝大部分时候所处的状态也就说不需要保证 P 的时候C 和 A 能够同时保证。
2. BASE理论
概述 即使无法做到强一致性但每个应用都可以根据自身业务特点采用适当的方式来使系统达到最终一致性。BASE 理论本质上是对 CAP 的延伸和补充更具体地说是对 CAP 中 AP 方案的一个补充。 如果系统没有发生“分区”的话节点间的网络连接通信正常的话也就不存在 P 了。这个时候我们就可以同时保证 C 和 A 了。因此如果系统发生“分区”我们要考虑选择 CP 还是 AP。如果系统没有发生“分区”的话我们要思考如何保证 CA。 因此AP 方案只是在系统发生分区的时候放弃一致性而不是永远放弃一致性。在分区故障恢复后系统应该达到最终一致性。这一点其实就是 BASE 理论延伸的地方。基本可用BA 基本可用是指分布式系统在出现不可预知故障的时候允许损失部分可用性响应时间上的损失/系统功能上的损失)。但是这绝不等价于系统不可用。软状态S 软状态指允许系统中的数据存在中间状态CAP 理论中的数据不一致并认为该中间状态的存在不会影响系统的整体可用性即允许系统在不同节点的数据副本之间进行数据同步的过程存在延时。最终一致性E 最终一致性强调的是系统中所有的数据副本在经过一段时间的同步后最终能够达到一个一致的状态。因此最终一致性的本质是需要系统保证最终数据能够达到一致而不需要实时保证系统数据的强一致性。
3. SpringBoot 与 SpringCloud对比
SpringBoot专注于快速方便得开发单个个体微服务。SpringCloud是关注全局的微服务协调整理治理框架它将SpringBoot开发的一个个单体微服务整合并管理起来为各个微服务之间提供配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等集成服务SpringBoot可以离开SpringCloud独立使用开发项目 但是SpringCloud离不开SpringBoot属于依赖的关系.SpringBoot专注于快速、方便得开发单个微服务个体SpringCloud关注全局的服务治理框架。
二. 服务注册Zookeeper,Eureka,Nacos,Consul
1. Nacos两种健康检查方式
(在nacos中服务提供者是如何向nacos注册中心续约的) (对于nacos服务来讲它是如何判断服务实例的状态的)
agent上报模式 心跳模式临时实例 客户端注册在nacos上的其它微服务实例健康检查。 客户端通过心跳上报方式告知服务端(nacos注册中心)健康状态默认心跳间隔5秒 nacos会在超过15秒未收到心跳后将实例设置为不健康状态超过30秒将实例删除服务端主动检测非临时实例 服务端健康检查。 nacos主动探知客户端健康状态默认间隔为20秒健康检查失败后实例会被标记为不健康不会被立即删除。
2. nacos中负责负载均衡底层是如何实现的
通过Ribbon实现Ribbon中定义了负载均衡算法然后基于这些算法从服务实例中获取一个实例为想要服务方提供服务
3. Nacos原理 Nacos的实现原理 1.客户端provider向nacos server的open api发起调用,把自己的服务地址链接,服务名称注册上去 2.nacos server与服务提供者provider建立心跳机制,用来检测服务状态 3.服务消费者consumer查询出提供服务实例列表 4.并且默认10s去nacos server拉取服务实例列表 5.当服务消费者检测到服务异常,基于UDP协议推送更新 6.服务消费者即可调用了
4. 临时实例和持久化(非临时)实例
临时和持久化的区别主要在健康检查失败后的表现持久化实例健康检查失败后会被标记成不健康而临时实例会直接从列表中被删除。
三. 服务调用Feign
1. Feign的底层原理
首先如果你对某个接口定义了**FeignClient注解**Feign就会针对这个接口创建一个动态代理 接着你要是调用那个接口本质就是会调用 Feign创建的动态代理这是核心中的核心 Feign的动态代理会根据你在接口上的RequestMapping等注解来动态构造出你要请求的服务的地址 最后针对这个地址发起请求、解析响应
2. Feign与OpenFeign的区别
他们底层都是内置了Ribbon去调用注册中心的服务。Feign是Netflix公司写的是SpringCloud组件中的一个轻量级RESTful的HTTP服务客户端是SpringCloud中的第一代负载均衡客户端。OpenFeign是SpringCloud自己研发的在Feign的基础上支持了Spring MVC的注解如RequesMapping等等。是SpringCloud中的第二代负载均衡客户端。Feign本身不支持Spring MVC的注解使用Feign的注解定义接口调用这个接口就可以调用服务注册中心的服务OpenFeign的FeignClient可以解析SpringMVC的RequestMapping注解下的接口并通过动态代理的方式产生实现类实现类中做负载均衡并调用其他服务。
四. 负载均衡:Ribbon
1. Ribbon支持哪几种负载均衡策略 五. 网关:Gateway,Zuul
1. Gateway工作流程 路由判断客户端的请求到达网关后先经过 Gateway Handler Mapping 处理这里面会做断言Predicate判断看下符合哪个路由规则这个路由映射后端的某个服务。 请求过滤然后请求到达 Gateway Web Handler这里面有很多过滤器组成过滤器链Filter Chain这些过滤器可以对请求进行拦截和修改比如添加请求头、参数校验等等有点像净化污水。然后将请求转发到实际的后端服务。这些过滤器逻辑上可以称作 Pre-FiltersPre 可以理解为“在…之前”。 服务处理后端服务会对请求进行处理。 响应过滤后端处理完结果后返回给 Gateway 的过滤器再次做处理逻辑上可以称作 Post-FiltersPost 可以理解为“在…之后”。 响应返回响应经过过滤处理后返回给客户端。
2. Spring Cloud Gateway 的路由和断言是什么关系 一对多一个路由规则可以包含多个断言。如上图中路由 Route1 配置了三个断言 Predicate。 同时满足如果一个路由规则中有多个断言则需要同时满足才能匹配。如上图中路由 Route2 配置了两个断言客户端发送的请求必须同时满足这两个断言才能匹配路由 Route2。 第一个匹配成功如果一个请求可以匹配多个路由则映射第一个匹配成功的路由。如上图所示客户端发送的请求满足 Route3 和 Route4 的断言但是 Route3 的配置在配置文件中靠前所以只会匹配 Route3。
3. Spring Cloud Gateway 如何实现动态路由
Spring Cloud Gateway 作为微服务的入口需要尽量避免重启而现在配置更改需要重启服务不能满足实际生产过程中的动态刷新、实时变更的业务需求所以我们需要在 Spring Cloud Gateway 运行时动态配置网关。 实现动态路由的方式有很多种其中一种推荐的方式是基于 Nacos 配置中心来做。简单来说我们将将路由配置放在 Nacos 中存储然后写个监听器监听 Nacos 上配置的变化将变化后的配置更新到 GateWay 应用的进程内。 其实这些复杂的步骤并不需要我们手动实现通过 Nacos Server 和 Spring Cloud Alibaba Nacos Config 即可实现配置的动态变更。
4. Spring Cloud Gateway 支持限流吗
Spring Cloud Gateway 自带了限流过滤器对应的接口是 RateLimiterRateLimiter 接口只有一个实现类 RedisRateLimiter 基于 Redis Lua 实现的限流提供的限流功能比较简易且不易使用。 从 Sentinel 1.6.0 版本开始Sentinel 引入了 Spring Cloud Gateway 的适配模块可以提供两种资源维度的限流route 维度和自定义 API 维度。也就是说Spring Cloud Gateway 可以结合 Sentinel 实现更强大的网关流量控制。
六. 限流/熔断/服务降级:Hystrix,Sentinel
1. 什么是熔断和降级
熔断机制 服务熔断的作用类似于我们家用的保险丝当某服务出现不可用或响应超时的情况时为了防止整个系统出现雪崩暂时停止对该服务的调用。服务降级 服务降级是从整个系统的负荷情况出发和考虑的对某些负荷会比较高的情况为了预防某些功能业务场景出现负荷过载或者响应慢的情况在其内部暂时舍弃对一些非核心的接口和数据的请求而直接返回一个提前准备好的fallback退路错误处理信息。这样虽然提供的是一个有损的服务但却保证了整个系统的稳定性和可用性。相同点 目标一致 都是从可用性和可靠性出发为了防止系统崩溃 用户体验类似 最终都让用户体验到的是某些功能暂时不可用不同点 触发原因不同服务熔断一般是某个服务下游服务故障引起而服务降级一般是从整体负荷考虑
2. 限流
2.1 常见算法
固定窗口计数器算法 滑动窗口计数器算法 漏桶算法 令牌桶算法
2.2 单机限流
单机限流可以直接使用 Google Guava 自带的限流工具类 RateLimiter 。 RateLimiter 基于令牌桶算法可以应对突发流量。
2.3 分布式限流
(1) 借助中间件架限流可以借助 Sentinel 或者使用 Redis 来自己实现对应的限流逻辑。 (2)网关层限流比较常用的一种方案直接在网关层把限流给安排上了。不过通常网关层限流通常也需要借助到中间件/框架。就比如 Spring Cloud Gateway 的分布式限流实现RedisRateLimiter就是基于 RedisLua 来实现的再比如 Spring Cloud Gateway 还可以整合 Sentinel 来做限流。
3. Hystrix和Sentinel简单介绍 Hystrix发起请求是通过Hystrix的线程池来走的不同的服务走不同的线程池实现了不同服务调用的隔离避免了服务雪崩的问题Sentinel是阿里中间件团队开源的面向分布式服务架构的轻量级高可用流量控制组件主要以流量为切入点从流量控制、熔断降级、系统负载保护等多个维度来帮助用户保护服务的稳定性。 文章转载自: http://www.morning.incmt.com.gov.cn.incmt.com http://www.morning.mgtmm.cn.gov.cn.mgtmm.cn http://www.morning.jqrhz.cn.gov.cn.jqrhz.cn http://www.morning.krrjb.cn.gov.cn.krrjb.cn http://www.morning.wbnsf.cn.gov.cn.wbnsf.cn http://www.morning.yqgny.cn.gov.cn.yqgny.cn http://www.morning.tlfyb.cn.gov.cn.tlfyb.cn http://www.morning.glswq.cn.gov.cn.glswq.cn http://www.morning.jlthz.cn.gov.cn.jlthz.cn http://www.morning.plhyc.cn.gov.cn.plhyc.cn http://www.morning.nsyzm.cn.gov.cn.nsyzm.cn http://www.morning.yxmcx.cn.gov.cn.yxmcx.cn http://www.morning.wfwqr.cn.gov.cn.wfwqr.cn http://www.morning.gxtfk.cn.gov.cn.gxtfk.cn http://www.morning.jxlnr.cn.gov.cn.jxlnr.cn http://www.morning.kfysh.com.gov.cn.kfysh.com http://www.morning.qrmry.cn.gov.cn.qrmry.cn http://www.morning.gwjqq.cn.gov.cn.gwjqq.cn http://www.morning.dighk.com.gov.cn.dighk.com http://www.morning.rblqk.cn.gov.cn.rblqk.cn http://www.morning.qnzpg.cn.gov.cn.qnzpg.cn http://www.morning.mqmmc.cn.gov.cn.mqmmc.cn http://www.morning.nrgdc.cn.gov.cn.nrgdc.cn http://www.morning.rchsr.cn.gov.cn.rchsr.cn http://www.morning.rnqnp.cn.gov.cn.rnqnp.cn http://www.morning.wdlyt.cn.gov.cn.wdlyt.cn http://www.morning.snbrs.cn.gov.cn.snbrs.cn http://www.morning.mdwb.cn.gov.cn.mdwb.cn http://www.morning.nkllb.cn.gov.cn.nkllb.cn http://www.morning.kwz6232.cn.gov.cn.kwz6232.cn http://www.morning.xnnpy.cn.gov.cn.xnnpy.cn http://www.morning.kjgdm.cn.gov.cn.kjgdm.cn http://www.morning.btjyp.cn.gov.cn.btjyp.cn http://www.morning.mllmm.cn.gov.cn.mllmm.cn http://www.morning.xtdtt.cn.gov.cn.xtdtt.cn http://www.morning.ydhck.cn.gov.cn.ydhck.cn http://www.morning.qfkdt.cn.gov.cn.qfkdt.cn http://www.morning.nlkm.cn.gov.cn.nlkm.cn http://www.morning.yqgbw.cn.gov.cn.yqgbw.cn http://www.morning.phechi.com.gov.cn.phechi.com http://www.morning.kxqfz.cn.gov.cn.kxqfz.cn http://www.morning.kcypc.cn.gov.cn.kcypc.cn http://www.morning.xyjlh.cn.gov.cn.xyjlh.cn http://www.morning.htbsk.cn.gov.cn.htbsk.cn http://www.morning.mumgou.com.gov.cn.mumgou.com http://www.morning.bkylg.cn.gov.cn.bkylg.cn http://www.morning.easiuse.com.gov.cn.easiuse.com http://www.morning.rqgjr.cn.gov.cn.rqgjr.cn http://www.morning.lclpj.cn.gov.cn.lclpj.cn http://www.morning.itvsee.com.gov.cn.itvsee.com http://www.morning.gmztd.cn.gov.cn.gmztd.cn http://www.morning.smtrp.cn.gov.cn.smtrp.cn http://www.morning.cjrmf.cn.gov.cn.cjrmf.cn http://www.morning.iznek.com.gov.cn.iznek.com http://www.morning.pyxtn.cn.gov.cn.pyxtn.cn http://www.morning.tjpmf.cn.gov.cn.tjpmf.cn http://www.morning.wgbmj.cn.gov.cn.wgbmj.cn http://www.morning.hsxkq.cn.gov.cn.hsxkq.cn http://www.morning.shuanga.com.cn.gov.cn.shuanga.com.cn http://www.morning.kxrld.cn.gov.cn.kxrld.cn http://www.morning.tgtsg.cn.gov.cn.tgtsg.cn http://www.morning.jljiangyan.com.gov.cn.jljiangyan.com http://www.morning.rycd.cn.gov.cn.rycd.cn http://www.morning.bfrsr.cn.gov.cn.bfrsr.cn http://www.morning.kjxgc.cn.gov.cn.kjxgc.cn http://www.morning.txgjx.cn.gov.cn.txgjx.cn http://www.morning.qmqgx.cn.gov.cn.qmqgx.cn http://www.morning.gbcnz.cn.gov.cn.gbcnz.cn http://www.morning.bfgpn.cn.gov.cn.bfgpn.cn http://www.morning.sgnxl.cn.gov.cn.sgnxl.cn http://www.morning.qcdhg.cn.gov.cn.qcdhg.cn http://www.morning.jgcrr.cn.gov.cn.jgcrr.cn http://www.morning.gtkyr.cn.gov.cn.gtkyr.cn http://www.morning.lxlzm.cn.gov.cn.lxlzm.cn http://www.morning.xtdms.com.gov.cn.xtdms.com http://www.morning.jmbgl.cn.gov.cn.jmbgl.cn http://www.morning.qwqzk.cn.gov.cn.qwqzk.cn http://www.morning.ghpld.cn.gov.cn.ghpld.cn http://www.morning.qstjr.cn.gov.cn.qstjr.cn http://www.morning.yrpd.cn.gov.cn.yrpd.cn