互联网大厂的负载均衡和高可用是怎么做的,看完这篇你就懂了
为了避免避免单点故障和支持服务的横向扩容,一个服务通常会部署多个实例,即 Dubbo 集群部署。会将多个服务实例成为一个服务提供方,然后根据配置的随机负载均衡策略,在20个 Provider 中随机选择了一个来调用,假设随机到了第7个 Provider。LoadBalance 组件从提供者地址列表中,使用均衡策略,选择选一个提供者进行调用,如果调用失败,再选另一台调用。 Dubbo内置了4种负载均衡策略: RandomLoadBalance:随机负载均衡。随机的选择一个。是Dubbo的默认负载均衡策略。 RoundRobinLoadBalance:轮询负载均衡。轮询选择一个。 LeastActiveLoadBalance:最少活跃调用数,相同活跃数的随机。活跃数指调用前后计数差。使慢的 Provider 收到更少请求,因为越慢的 Provider 的调用前后计数差会越大。 ConsistentHashLoadBalance:一致性哈希负载均衡。相同参数的请求总是落在同一台机器上。 同样,因为业务的需要,也可以实现自己的负载均衡策略 第 4 层:业务服务层 -> 数据存储层 的负载均衡 数据存储层的负载均衡,一般通过 DBProxy 实现。比如 MySQL 分库分表。 当单库或者单表访问太大,数据量太大的情况下,需要进行垂直拆分和水平拆分两个维度。比如水平切分规则: Range 、 时间 hash 取模,订单根据店铺ID 等 但伴随着这块的负载会出现下面的问题,需要解决: 分布式事务 跨库 join 等 现状分库分表的产品方案很多:当当 sharding-jdbc、阿里的 Cobar 等 五、小结 (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |