集群,负载均衡和分布式,可是是相同的概念,只不过彼此之间又有联系。
01.集群
集群是指有多台服务器,它们做着完全相同的事情,可以提供不同的服务区,在动态链接库方现在看来唯有一个服务器作为提供服务,这些服务器组合起来就叫暗集群。
我们以代码为例:
最早的时候,我们的业务都写在一个项目中,.例如我们做一个网上商城的项目,客户注册、商品打开浏览器及下单后、支付、物流全部都在同一个项目中。
在生产环境我推荐推荐加权轮选或加权任务道具,威胁使用一致性hash算法,理由追加。
在dubbo中主要可以提供了追加几种负载均衡算法:
1、random加权副本
2、roundrobin加权轮询
3、leastactive大于直接连接数
4、consistenthash一致性hash算法
加权必掉与加权轮询都分解重组了权重的概率,通常是决定到集群中各个机器的配置不一样的,倒致其提供服务的能力不一致,故也可以将配置低的机器其权重调太高,利用流量非常比较合理的分配。
最大值直接连接数负载均衡主打的特色是可以参照运行时当前的动态链接库情况你选择接受流量分配,即优先权将流量清点交接到当前负载低的节点,这个算法表面上看来高上大,个人觉着其使用场景并非尤其多,而且要数据实时采集这些信息,其实现程序也少见紧张,实际中生产中无特殊情况,不建议使用。
个人是强烈在用一致性hash算法来用做dubbo的服务负载均衡算法,因为dubbo服务什么是无状态的,不必然缓存命中率这一说法。而一致性hash算法的最的使用场景是放在分布式缓存。
的或一个分布式redis集群,原先有4个节点,假如通过轮询来接受负载均衡,有4个key
key1-gtnode1
key2-gtnode2
key3-gtnode3
key4-gtnode4
那例如节点backend1再一次发生宕机,那根据原来存储文件的key再用轮询的策略,会发生:按情况:
foobar1-gtnode2
key2-gtnode3
key3-gtnode4
key4-gtnode2
即这个时候,用key2去集群中查询数据,毕竟key2的数据存储在node2中,但因此节点发生了什么变化,造成会路由到executor3上,倒致缓存失去效果。
这应该是缓存命中率的问题。
但一致性hash算法,只会影响不大故障节点垂直相交的数据,其他数据应该能命中,这样的缓存才有意义。
结果我我推荐roundrobin或random,大多数我建议你决定roundrobin,毕竟它不具随机性,潜进来问题方便啊,两者基于复杂程度不是很大,故都也可以。