长沙长沙网站建设公司免费申请域名的网站

当前位置: 首页 > news >正文

长沙长沙网站建设公司,免费申请域名的网站,动漫网站模板设计图,网站开发需呀那些技术#x1f4eb;作者简介#xff1a;小明java问道之路#xff0c;2022年度博客之星全国TOP3#xff0c;专注于后端、中间件、计算机底层、架构设计演进与稳定性建设优化#xff0c;文章内容兼具广度、深度、大厂技术方案#xff0c;对待技术喜欢推理加验证#xff0c;就职于… 作者简介小明java问道之路2022年度博客之星全国TOP3专注于后端、中间件、计算机底层、架构设计演进与稳定性建设优化文章内容兼具广度、深度、大厂技术方案对待技术喜欢推理加验证就职于知名金融公司后端高级工程师。          热衷分享喜欢原创~ 关注我会给你带来一些不一样的认知和成长。          2022博客之星TOP3 | CSDN博客专家 | 后端领域优质创作者 | CSDN内容合伙人 InfoQ(极客邦)签约作者、阿里云专家 | 签约博主、51CTO专家 | TOP红人、华为云享专家          如果此文还不错的话还请关注、点赞、收藏三连支持一下博主~  文末获取联系    精彩专栏推荐订阅收藏 专栏系列点击解锁 学习路线点击解锁 知识定位 Redis从入门到精通与实战 Redis从入门到精通与实战 围绕原理源码讲解Redis面试知识点与实战 MySQL从入门到精通 MySQL从入门到精通 全面讲解MySQL知识与企业级MySQL实战 计算机底层原理 深入理解计算机系统CSAPP 以深入理解计算机系统为基石构件计算机体系和计算机思维 Linux内核源码解析 围绕Linux内核讲解计算机底层原理与并发 数据结构与企业题库精讲 数据结构与企业题库精讲 结合工作经验深入浅出适合各层次笔试面试算法题精讲 互联网架构分析与实战 企业系统架构分析实践与落地 行业最前沿视角专注于技术架构升级路线、架构实践 互联网企业防资损实践 互联网金融公司的防资损方法论、代码与实践 Java全栈白宝书 精通Java8与函数式编程 本专栏以实战为基础逐步深入Java8以及未来的编程模式 深入理解JVM 详细介绍内存区域、字节码、方法底层类加载和GC等知识 深入理解高并发编程 深入Liunx内核、汇编、C全方位理解并发编程 Spring源码分析 Spring核心七IOC/AOP等源码分析 MyBatis源码分析 MyBatis核心源码分析 Java核心技术 只讲Java核心技术 本文目录 本文导读 一、Dubbo负载均衡的作用 二、Dubbo提供了 5 种负载均衡实现 三、如何配置Dubbo负载均衡策略 四、Dubbo负载均衡的实现 1、随机均衡算法 Random LoadBalance 2、权重轮循算法 RoundRobin LoadBalance 3、最小活跃数算法 LeastActive LoadBalance 4、一致性hash算法 ConsistentHash LoadBalance 5、最短响应时间算法 ShortestResponse LoadBalance 总结 本文导读 Dubbo作为分布式远程调用框架要保证的点很多比如负载均衡、服务注册与发现、故障转移、高性能通信等等 Dubbo是一个分布式服务框架能避免单点故障和支持服务的横向扩容。一个服务通常会部署多个实例如何从多个服务 Provider 组成的集群中挑选出一个进行调用就涉及到负载均衡的策略。 一、Dubbo负载均衡的作用 负载均衡的目的是为了能够将请求合理地平分到各服务实例上以便发挥所有机器的叠加作用。 Dubbo 需要对 Consumer 的调用请求进行分配避免少数 Provider 节点负载过大而剩余的其他 Provider 节点处于空闲的状态。 因为当 Provider 负载过大时就会导致一部分请求超时、丢失等一系列问题发生造成线上故障。 二、Dubbo提供了 5 种负载均衡实现 基于 Hash 一致性的 ConsistentHashLoadBalanceconsistenthash一致性哈希负载均衡相同参数的请求总是落在同一台机器上。 基于权重随机算法的 RandomLoadBalancerandom随机负载均衡随机的选择一个是Dubbo的默认负载均衡策略。 基于最少活跃调用数算法的 LeastActiveLoadBalanceleastactive最少活跃调用数相同活跃数的随机。活跃数指调用前后计数差。使慢的 Provider 收到更少请求因为越慢的 Provider 的调用前后计数差会越大。 基于加权轮询算法的 RoundRobinLoadBalanceroundrobin轮询负载均衡轮询选择一个。 基于最短响应时间的 ShortestResponseLoadBalance shortestresponse同最小活跃数负载,算法框架完全相同 ​ 三、如何配置Dubbo负载均衡策略 Dubbo负载均衡有多种级别的配置服务端服务/方法级别、客户端服务/方法级别; 具体配置如下: !– 服务端服务级别 – dubbo:service interface… loadbalanceroundrobin /!– 客户端服务级别 – dubbo:reference interface… loadbalancerandom /!– 服务端方法级别 – dubbo:service interface…dubbo:method namehello loadbalanceconsistenthash/ /dubbo:service!– 客户端方法级别 – dubbo:reference interface…dubbo:method namehello loadbalanceleastactive/ /dubbo:reference随机loadbalancerandom 轮循loadbalanceroundrobin 最少活跃数loadbalanceleastactive 一致性Hashloadbalanceconsistenthash 四、Dubbo负载均衡的实现 1、随机均衡算法 Random LoadBalance 随机按照权重设置随机概率调用量越大分布越均匀 是Dubbo的默认负载均衡策略 加权随机算法原理假设我们有三个 Provider 节点 A、B、C它们对应的权重分别为 5、2、3权重总和为 10。现在把这些权重值放到一维坐标轴上[0, 5) 区间属于节点 A[5, 7) 区间属于节点 B[7, 10) 区间属于节点 C然后通过随机数生成器在 [0, 10) 这个范围内生成一个随机数然后计算这个随机数会落到哪个区间中。 2、权重轮循算法 RoundRobin LoadBalance 轮循按照权重设置轮循比率 存在问题 请求累积的问题请求会累积在性能较差的机器上导致响应时间慢。 解决办法把性能差的机器权重调低。 缺点无法对机器性能在时间上的变化而做出动态改变只能人工发现机器性能下降手动调节权重。 加权轮询负载均衡算法原理轮询指的是将请求轮流分配给每个 Provider。例如有 A、B、C 三个 Provider 节点加权之后分配给每个 Provider 节点的流量比会接近或等于它们的权重比。例如Provider 节点 A、B、C 权重比为 5:1:1那么在 7 次请求中节点 A 将收到 5 次请求节点 B 会收到 1 次请求节点 C 则会收到 1 次请求。 每个 Provider 节点有两个权重一个权重是配置的 weight该值在负载均衡的过程中不会变化另一个权重是currentWeight该值会在负载均衡的过程中动态调整初始值为 0。 当有新的请求进来时RoundRobinLoadBalance 会遍历 Invoker 列表并用对应的 currentWeight 加上其配置的权重。遍历完成后再找到最大的 currentWeight将其减去权重总和然后返回相应的 Invoker 对象。 3、最小活跃数算法 LeastActive LoadBalance 处理请求慢的机器将获得更小的调用量相同活跃数的随机活跃调用前后计算差值以达到系统处理最大化。 优点灵活能够简单的根据调用数量动态调整机器处理的数量。 最小活跃数负载均衡算法原理LeastActiveLoadBalance 使用的是最小活跃数负载均衡算法。 它认为当前活跃请求数越小的 Provider 节点剩余的处理能力越多处理请求的效率也就越高那么该 Provider 在单位时间内就可以处理更多的请求所以我们应该优先将请求分配给该 Provider 节点。 4、一致性hash算法 ConsistentHash LoadBalance 一致性 Hash 负载均衡可以让参数相同的请求每次都路由到相同的服务节点上这种负载均衡策略可以在某些 Provider 节点下线的时候让这些节点上的流量平摊到其他 Provider 上不会引起流量的剧烈波动。 优点更加灵活。 缺点灵活导致难度大由于粒度 细到单个请求上一开始在开发时就得规划好后期变动维护人员难度大。 一致性Hash原理假设现在有N个 Provider 节点对外提供服务有 100 个请求同时到达如果想让请求尽可能均匀地分布到这N个 Provider 节点上我们可能想到的最简单的方法就是 Hash 取模即 hash(请求参数) % N。如果参与 Hash 计算的是请求的全部参数那么参数相同的请求将会落到同一个 Provider 节点上。 如果突然有一个 Provider 节点出现宕机的情况那我们就需要对 2 取模即请求会重新分配到相应的 Provider 之上。在极端情况下甚至会出现所有请求的处理节点都发生了变化这就会造成比较大的波动。 一致性 Hash 算法的原理也是取模算法与 Hash 取模的不同之处在于Hash 取模是对 Provider 节点数量取模而一致性 Hash 算法是对 2^32 取模。 5、最短响应时间算法 ShortestResponse LoadBalance ShortestResponseLoadBalance 是Dubbo 2.7 版本之后新增加的一个 LoadBalance 实现类。 最短响应时间的负载均衡算法原理 实现了最短响应时间的负载均衡算法也就是从多个 Provider 节点中选出调用成功的且响应时间最短的 Provider 节点不过满足该条件的 Provider 节点可能有多个所以还要再使用随机算法进行一次选择得到最终要调用的 Provider 节点。 总结 Dubbo提供了三大核心能力面向接口的远程方法调用智能容错和负载均衡以及服务自动注册和发现。 本文讲解了Dubbo负载均衡的作用如何配置Dubbo负载均衡策略以及Dubbo提供5种负载均衡实现和原理。